Beispiel #1
0
  public SelectPathButton(int type) {
    super(); // SHAPE_LIST);
    this.type = type;

    Path2D p = new GeneralPath();
    Shapes.Search(p);
    // Shapes.ListView(p);
    // Shapes.Picker(p);
    final Shape icnShp = p.createTransformedShape(AffineTransform.getScaleInstance(0.5, 0.5));

    setIcon(
        new Icon() {
          @Override
          public void paintIcon(Component c, Graphics g, int x, int y) {
            Graphics2D g2 = (Graphics2D) g;
            g2.setColor(isEnabled() ? Color.black : Color.gray);
            g2.translate(x, y);
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g2.setRenderingHint(
                RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
            g2.fill(icnShp);
            g2.translate(-x, -y);
          }

          @Override
          public int getIconWidth() {
            return 16;
          }

          @Override
          public int getIconHeight() {
            return 16;
          }
        });

    setToolTipText("Choose File...");
    setTransferHandler(new PathTransferHandler());

    final MouseInputAdapter mia =
        new MouseInputAdapter() {
          private MouseEvent dndInit = null;
          private boolean dndStarted = false;

          public void mousePressed(MouseEvent e) {
            dndInit = e;
            dndStarted = false;
          }

          public void mouseReleased(MouseEvent e) {
            if (!dndStarted && contains(e.getPoint())) showFileChooser();
            dndInit = null;
            dndStarted = false;
          }

          public void mouseDragged(MouseEvent e) {
            if (!dndStarted
                && (dndInit != null)
                && ((Math.abs(e.getX() - dndInit.getX()) > 5)
                    || (Math.abs(e.getY() - dndInit.getY()) > 5))) {

              JComponent c = (JComponent) e.getSource();
              c.getTransferHandler().exportAsDrag(c, e, TransferHandler.COPY);
              dndStarted = true;
            }
          }
        };

    addMouseListener(mia);
    addMouseMotionListener(mia);
  }