예제 #1
0
  public static void setDragDrop(final Text text) {
    Transfer[] types = new Transfer[] {TextTransfer.getInstance()};
    int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK;

    final DragSource source = new DragSource(text, operations);
    source.setTransfer(types);
    source.addDragListener(
        new DragSourceListener() {
          Point selection;

          @Override
          public void dragStart(DragSourceEvent e) {
            selection = text.getSelection();
            e.doit = selection.x != selection.y;
          }

          @Override
          public void dragSetData(DragSourceEvent e) {
            e.data = text.getText(selection.x, selection.y - 1);
          }

          @Override
          public void dragFinished(DragSourceEvent e) {
            if (e.detail == DND.DROP_MOVE) {
              text.setSelection(selection);
              text.insert("");
            }
            selection = null;
          }
        });

    DropTarget target = new DropTarget(text, operations);
    target.setTransfer(types);
    target.addDropListener(
        new DropTargetAdapter() {
          @Override
          public void drop(DropTargetEvent event) {
            if (event.data == null) {
              event.detail = DND.DROP_NONE;
              return;
            }
            text.append((String) event.data);
          }
        });
  }
예제 #2
0
  public DragLabel(String s) {
    this.setText(s);
    this.setOpaque(true);
    this.dragSource = DragSource.getDefaultDragSource();
    this.dgListener = new DGListener();
    this.dsListener = new DSListener();

    // component, action, listener
    this.dragSource.createDefaultDragGestureRecognizer(this, this.dragAction, this.dgListener);
  }
예제 #3
0
  public AndItem(boolean preview, Window w) {
    super(preview);
    this.w = w;
    FlowLayout fl = new FlowLayout(FlowLayout.CENTER, 1, 1);
    this.setLayout(fl);
    lefthand = new ParameterSlot(Parameter.Condition, "lefthand", preview, w);
    this.add(lefthand);
    JLabel la = new JLabel(" AND ");
    this.add(la);
    righthand = new ParameterSlot(Parameter.Condition, "righthand", preview, w);
    this.add(righthand);
    ToolTipItem tti = new ToolTipItem();
    tti.setToolTipText(
        "<html>This is an if item, if the specified condition <br> is fulfilled, the following block will be executed</html>");
    this.add(tti);
    this.setBackground(new Color(108, 45, 199));
    this.setBorder(BorderFactory.createLineBorder(Color.black));
    if (preview) {
      DragSource ds = new DragSource();
      ParameterDragGestureListener pdgl = new ParameterDragGestureListener();
      ds.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY, pdgl);
      ds.addDragSourceMotionListener(pdgl);
      ds.addDragSourceListener(
          new DragSourceListener() {
            @Override
            public void dropActionChanged(DragSourceDragEvent dsde) {}

            @Override
            public void dragOver(DragSourceDragEvent dsde) {}

            @Override
            public void dragExit(DragSourceEvent dse) {}

            @Override
            public void dragEnter(DragSourceDragEvent dsde) {}

            @Override
            public void dragDropEnd(DragSourceDropEvent dsde) {
              ImageMover.stop();
            }
          });
    }
  }
예제 #4
0
 public void init() {
   DragSource dragSource = DragSource.getDefaultDragSource();
   // 将srcLabel转换成拖放源,它能接受复制、移动两种操作
   dragSource.createDefaultDragGestureRecognizer(
       srcLabel,
       DnDConstants.ACTION_COPY_OR_MOVE,
       new DragGestureListener() {
         public void dragGestureRecognized(DragGestureEvent event) {
           // 将JLabel里的文本信息包装成Transferable对象
           String txt = srcLabel.getText();
           Transferable transferable = new StringSelection(txt);
           // 继续拖放操作,拖放过程中使用手状光标
           event.startDrag(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR), transferable);
         }
       });
   jf.add(new JScrollPane(srcLabel));
   jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   jf.pack();
   jf.setVisible(true);
 }
예제 #5
0
  public VariablePanel(String variableName, boolean preview, Window w) {
    super(preview);
    this.w = w;
    if (preview) {
      w.spellItems.put(variableName, this);
    }
    this.s = variableName;
    JLabel jl = new JLabel(variableName);
    this.setLayout(new BorderLayout());
    this.add(jl, BorderLayout.CENTER);
    this.setBorder(BorderFactory.createLineBorder(Color.black));
    this.setBackground(Color.lightGray);
    DragSource ds = new DragSource();
    VariableDragGestureListener pdgl = new VariableDragGestureListener();
    ds.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY, pdgl);
    ds.addDragSourceMotionListener(pdgl);
    ds.addDragSourceListener(
        new DragSourceListener() {
          @Override
          public void dropActionChanged(DragSourceDragEvent dsde) {}

          @Override
          public void dragOver(DragSourceDragEvent dsde) {}

          @Override
          public void dragExit(DragSourceEvent dse) {}

          @Override
          public void dragEnter(DragSourceDragEvent dsde) {}

          @Override
          public void dragDropEnd(DragSourceDropEvent dsde) {
            ImageMover.stop();
          }
        });
  }
예제 #6
0
  public DragLabel(String s, int a) {
    if (a != DnDConstants.ACTION_NONE
        && a != DnDConstants.ACTION_COPY
        && a != DnDConstants.ACTION_MOVE
        && a != DnDConstants.ACTION_COPY_OR_MOVE
        && a != DnDConstants.ACTION_LINK) throw new IllegalArgumentException("action" + a);

    this.dragAction = a;
    this.setText(s);
    this.setOpaque(true);
    this.dragSource = DragSource.getDefaultDragSource();
    this.dgListener = new DGListener();
    this.dsListener = new DSListener();

    // component, action, listener
    this.dragSource.createDefaultDragGestureRecognizer(this, this.dragAction, this.dgListener);
  }
예제 #7
0
  public TestXEmbedServer(boolean manual) {

    // Enable testing extensions in XEmbed server
    System.setProperty("sun.awt.xembed.testing", "true");

    f = new Frame("Main frame");
    f.addWindowListener(
        new WindowAdapter() {
          public void windowClosing(WindowEvent e) {
            synchronized (TestXEmbedServer.this) {
              TestXEmbedServer.this.notifyAll();
            }
            dummy.dispose();
            f.dispose();
          }
        });

    f.setLayout(new BorderLayout());

    Container bcont = new Container();

    toFocus = new Button("Click to focus server");
    final TextField tf = new TextField(20);
    tf.setName("0");
    DragSource ds = new DragSource();
    final DragSourceListener dsl =
        new DragSourceAdapter() {
          public void dragDropEnd(DragSourceDropEvent dsde) {}
        };
    final DragGestureListener dgl =
        new DragGestureListener() {
          public void dragGestureRecognized(DragGestureEvent dge) {
            dge.startDrag(null, new StringSelection(tf.getText()), dsl);
          }
        };
    ds.createDefaultDragGestureRecognizer(tf, DnDConstants.ACTION_COPY, dgl);

    final DropTargetListener dtl =
        new DropTargetAdapter() {
          public void drop(DropTargetDropEvent dtde) {
            dtde.acceptDrop(DnDConstants.ACTION_COPY);
            try {
              tf.setText(
                  tf.getText()
                      + (String) dtde.getTransferable().getTransferData(DataFlavor.stringFlavor));
            } catch (Exception e) {
            }
          }
        };
    final DropTarget dt = new DropTarget(tf, dtl);

    Button b_add = new Button("Add client");
    b_add.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            addClient();
          }
        });
    Button b_remove = new Button("Remove client");
    b_remove.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            if (clientCont.getComponentCount() != 0) {
              clientCont.remove(clientCont.getComponentCount() - 1);
            }
          }
        });
    b_close = new JButton("Close modal dialog");
    b_close.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            modal_d.dispose();
          }
        });
    b_modal = new Button("Show modal dialog");
    b_modal.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            modal_d = new JDialog(f, "Modal dialog", true);
            modal_d.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
            modal_d.setBounds(0, 100, 200, 50);
            modal_d.getContentPane().add(b_close);
            modal_d.validate();
            modal_d.show();
          }
        });

    bcont.add(tf);
    bcont.add(toFocus);
    bcont.add(b_add);
    bcont.add(b_remove);
    bcont.add(b_modal);
    if (manual) {
      Button pass = new Button("Pass");
      pass.addActionListener(
          new ActionListener() {
            public void actionPerformed(ActionEvent e) {
              passed = true;
              synchronized (TestXEmbedServer.this) {
                TestXEmbedServer.this.notifyAll();
              }
            }
          });
      bcont.add(pass);
      Button fail = new Button("Fail");
      fail.addActionListener(
          new ActionListener() {
            public void actionPerformed(ActionEvent e) {
              passed = false;
              synchronized (TestXEmbedServer.this) {
                TestXEmbedServer.this.notifyAll();
              }
            }
          });
      bcont.add(fail);
    }
    b_modal.setName("2");
    bcont.setLayout(new FlowLayout());
    f.add(bcont, BorderLayout.NORTH);

    clientCont = Box.createVerticalBox();
    f.add(clientCont, BorderLayout.CENTER);

    dummy = new JFrame("Dummy");
    dummy.getContentPane().add(new JButton("Button"));
    dummy.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    dummy.setBounds(0, VERTICAL_POSITION, 100, 100);
    dummy.setVisible(true);

    f.setBounds(300, VERTICAL_POSITION, 800, 300);
    f.setVisible(true);
  }