Swing Components Java

package net.eleritec.docking.demos;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Insets;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;
import net.eleritec.docking.CursorProvider;
import net.eleritec.docking.Dockable;
import net.eleritec.docking.DockableAdapter;
import net.eleritec.docking.DockingManager;
import net.eleritec.docking.DockingPort;
import net.eleritec.docking.defaults.DefaultDockingPort;
import net.eleritec.util.ResourceManager;
public class CursorDemo extends JPanel {
  private JLabel titlebar;
  private CursorProvider cursorProvider;
  private Dockable dockableImpl;
  public CursorDemo(String title) {
    super();
    titlebar = createTitlebar(" " + title);
    add(titlebar);
    setBorder(new LineBorder(Color.black));
    dockableImpl = new DockableImpl();
  }
  private JLabel createTitlebar(String title) {
    JLabel lbl = new JLabel(title);
    lbl.setForeground(Color.white);
    lbl.setBackground(Color.blue);
    lbl.setOpaque(true);
    return lbl;
  }
  public void doLayout() {
    Insets in = getInsets();
    titlebar.setBounds(in.left, in.top, getWidth() - in.left - in.right, 25);
  }
  private CursorDemo getThis() {
    return this;
  }
  
  private void setCursorProvider(CursorProvider prov) {
    cursorProvider = prov;
  }
  
  private Dockable getDockable() {
    return dockableImpl;
  }
  
  
  private class DockableImpl extends DockableAdapter {
    public CursorProvider getCursorProvider() {
      return cursorProvider;
    }
    public Component getDockable() {
      return getThis();
    }
    public String getDockableDesc() {
      return titlebar.getText().trim();
    }
    public Component getInitiator() {
      // the titlebar will the the 'hot' component that initiates dragging
      return titlebar;
    }
  }
  
  
  
  
  
  
  private static JPanel createContentPane() {
    JPanel p = new JPanel(new BorderLayout(5, 5));
    p.add(buildDockingPort("North"), BorderLayout.NORTH);
    p.add(buildDockingPort("South"), BorderLayout.SOUTH);
    p.add(buildDockingPort("East"), BorderLayout.EAST);
    p.add(buildDockingPort("West"), BorderLayout.WEST);
    p.add(createDockingPort(), BorderLayout.CENTER);
    return p;
  }
  private static DefaultDockingPort buildDockingPort(String desc) {
    // create the DockingPort
    DefaultDockingPort port = createDockingPort();
    // create the Dockable panel
    CursorDemo cd = new CursorDemo(desc);
    DockingManager.registerDockable(cd.getDockable());
    // use a custom cursor provider for the north panel
    if("North".equals(desc))
      cd.setCursorProvider(new CursorDelegate());
    // dock the panel and return the DockingPort
    port.dock(cd.getDockable(), DockingPort.CENTER_REGION);
    return port;
  }
  private static DefaultDockingPort createDockingPort() {
    DefaultDockingPort port = new DefaultDockingPort();
    port.setBackground(Color.gray);
    port.setPreferredSize(new Dimension(100, 100));
    return port;
  }
  public static void main(String[] args) {
    JFrame f = new JFrame("Custom Cursor Docking Demo");
    f.setContentPane(createContentPane());
    f.setSize(600, 400);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
  }
  private static class CursorDelegate implements CursorProvider {
    private static final Image NORTH_IMG = createImg("tileHorizontal16.gif");
    private static final Image EAST_IMG = createImg("tileVertical16.gif");
    private static final Image CENTER_IMG = createImg("cascadeWindows16.gif");
    private static final Image BLOCKED_IMG = createImg("closeAllWindows16.gif");
    
    private static Image createImg(String imgName) {
      return ResourceManager.createImage("resources/images/demo/" + imgName);
    }
    
    public Image getCenterImage() {
      return CENTER_IMG;
    }
    public Image getDisallowedImage() {
      return BLOCKED_IMG;
    }
    public Image getEastImage() {
      return EAST_IMG;
    }
    public Image getNorthImage() {
      return NORTH_IMG;
    }
    public Image getSouthImage() {
      // same image as north
      return NORTH_IMG;
    }
    public Image getWestImage() {
      // same image as east
      return EAST_IMG;
    }
  }
}
           
       
dockingSrc-0.3.zip( 57 k)