/**
  * Lazily creates the popup menu. This method will create the popup using the <code>
  * JScrollPopupMenu</code> class.
  */
 protected void ensurePopupMenuCreated() {
   if (popupMenu == null) {
     this.popupMenu = new JScrollPopupMenu();
     popupMenu.setInvoker(this);
     popupListener = createWinListener(popupMenu);
   }
 }
Beispiel #2
0
  /**
   * Displays the popup menu at the position x,y in the coordinate space of the component invoker.
   *
   * @param invoker the component in whose space the popup menu is to appear
   * @param x the x coordinate in invoker's coordinate space at which the popup menu is to be
   *     displayed
   * @param y the y coordinate in invoker's coordinate space at which the popup menu is to be
   *     displayed
   */
  public void show(Component invoker, int x, int y) {
    if (DEBUG) {
      System.out.println("in JPopupMenu.show ");
    }
    setInvoker(invoker);
    Frame newFrame = getFrame(invoker);
    if (newFrame != frame) {
      // Use the invoker's frame so that events
      // are propagated properly
      if (newFrame != null) {
        this.frame = newFrame;
        if (popup != null) {
          setVisible(false);
        }
      }
    }
    Point invokerOrigin;
    if (invoker != null) {
      invokerOrigin = invoker.getLocationOnScreen();

      // To avoid integer overflow
      long lx, ly;
      lx = ((long) invokerOrigin.x) + ((long) x);
      ly = ((long) invokerOrigin.y) + ((long) y);
      if (lx > Integer.MAX_VALUE) lx = Integer.MAX_VALUE;
      if (lx < Integer.MIN_VALUE) lx = Integer.MIN_VALUE;
      if (ly > Integer.MAX_VALUE) ly = Integer.MAX_VALUE;
      if (ly < Integer.MIN_VALUE) ly = Integer.MIN_VALUE;

      setLocation((int) lx, (int) ly);
    } else {
      setLocation(x, y);
    }
    setVisible(true);
  }
  /**
   * A chat room was selected. Opens the chat room in the chat window.
   *
   * @param e the <tt>MouseEvent</tt> instance containing details of the event that has just
   *     occurred.
   */
  public void mousePressed(MouseEvent e) {
    // Select the object under the right button click.
    if ((e.getModifiers() & InputEvent.BUTTON2_MASK) != 0
        || (e.getModifiers() & InputEvent.BUTTON3_MASK) != 0
        || (e.isControlDown() && !e.isMetaDown())) {
      int ix = this.chatRoomList.rowAtPoint(e.getPoint());

      if (ix != -1) {
        this.chatRoomList.setRowSelectionInterval(ix, ix);
      }
    }

    Object o = this.chatRoomsTableModel.getValueAt(this.chatRoomList.getSelectedRow());

    Point selectedCellPoint = e.getPoint();

    SwingUtilities.convertPointToScreen(selectedCellPoint, chatRoomList);

    if ((e.getModifiers() & InputEvent.BUTTON3_MASK) != 0) {
      JPopupMenu rightButtonMenu;

      if (o instanceof ChatRoomWrapper)
        rightButtonMenu = new ChatRoomRightButtonMenu((ChatRoomWrapper) o);
      else return;

      rightButtonMenu.setInvoker(this);
      rightButtonMenu.setLocation(selectedCellPoint);
      rightButtonMenu.setVisible(true);
    }
  }
Beispiel #4
0
  @Override
  public void mouseClicked(MouseEvent e) {

    indexOfLabelPressed = -1;

    for (int i = 0; i < orderLabel.length; i++) {
      if (e.getSource() == orderLabel[i]) {
        indexOfLabelPressed = i;
        PointerInfo a = MouseInfo.getPointerInfo();
        Point b = a.getLocation();
        int x = (int) b.getX();
        int y = (int) b.getY();
        popup.setLocation(x, y);
        popup.setInvoker(popup);
        popup.setVisible(true);
        revalidate();
        repaint();
      }
    }

    if (e.getSource() == topPanelLabel) {
      indexOfLabelPressed = -2;
    }

    if (indexOfLabelPressed == -1) {
      okDiscountButton.setText("Deduct");
      discountPopup.setLocation(700, 220);
      discountPopup.setInvoker(discountPopup);
      discountPopup.setVisible(true);
      itemDiscountPopupLabel.setText(
          "$"
              + finalModifier
              + " off with "
              + menuPanel.df.format((1 - finalPercentModifier) * 100)
              + "%"
              + " discount");
    } else if (indexOfLabelPressed == -2) {
      // TODO
      resetAll();
    }
  }
  /**
   * Initializes a new <tt>MuteButton</tt> instance which is to mute the audio stream to a specific
   * <tt>Call</tt>.
   *
   * @param call the <tt>Call</tt> to be associated with the new instance and whose audio stream is
   *     to be muted upon performing its action
   * @param iconImageID the icon image
   * @param pressedIconImageID the <tt>ImageID</tt> of the image to be used as the icon in the
   *     pressed button state of the new instance
   * @param selected <tt>true</tt> if the new toggle button is to be initially selected; otherwise,
   *     <tt>false</tt>
   * @param inSettingsPanel <tt>true</tt> when the button is used in a menu, to use different
   *     background.
   */
  public InputVolumeControlButton(
      Call call,
      ImageID iconImageID,
      ImageID pressedIconImageID,
      boolean inSettingsPanel,
      boolean selected) {
    super(
        call,
        inSettingsPanel,
        selected,
        iconImageID,
        pressedIconImageID,
        "service.gui.MUTE_BUTTON_TOOL_TIP");

    this.mute = selected;

    volumeControl = getVolumeControl();

    // Creates the menu that would contain the volume control component.
    sliderMenu = new VolumeControlSlider(volumeControl, JSlider.VERTICAL).getPopupMenu();
    sliderMenu.setInvoker(this);

    addMouseListener(
        new MouseAdapter() {
          TimerTask timerTask;

          @Override
          public void mousePressed(MouseEvent mouseevent) {
            Timer timer = new Timer();
            timerTask =
                new TimerTask() {
                  @Override
                  public void run() {
                    showSliderMenu();
                  }
                };

            timer.schedule(timerTask, 1000);
          }

          @Override
          public void mouseReleased(MouseEvent mouseevent) {
            if (!sliderMenuIsVisible) {
              if (timerTask != null) {
                timerTask.cancel();
              }
            } else {
              setSelected(!isSelected());
            }
          }
        });
  }
 /**
  * This method displays a popup menu, if there is one registered with the Figure (the Figure's
  * attributes are queried for Figure.POPUP_MENU which is used to indicate an association of a
  * popup menu with the Figure).
  *
  * @param figure Figure for which a popup menu should be displayed
  * @param x x coordinate where the popup menu should be displayed
  * @param y y coordinate where the popup menu should be displayed
  * @param component Component which invoked the popup menu
  */
 protected void showPopupMenu(Figure figure, int x, int y, Component comp) {
   final Object attribute = figure.getAttribute(Figure.POPUP_MENU);
   if ((attribute != null) && (attribute instanceof JPopupMenu)) {
     JPopupMenu popup = (JPopupMenu) attribute;
     if (popup instanceof PopupMenuFigureSelection) {
       ((PopupMenuFigureSelection) popup).setSelectedFigure(figure);
     }
     // calculate offsets for internal MDI frames
     Point newLocation = new Point(x, y);
     adjustOffsets(comp.getParent(), newLocation);
     popup.setLocation(newLocation);
     popup.setInvoker(comp);
     popup.setVisible(true);
   }
 }
  /**
   * Shows the appropriate user interface that would allow the user to add the given
   * <tt>SourceUIContact</tt> to their contact list.
   *
   * @param contact the contact to add
   */
  private void addContact(SourceUIContact contact) {
    SourceContact sourceContact = (SourceContact) contact.getDescriptor();

    List<ContactDetail> details =
        sourceContact.getContactDetails(OperationSetPersistentPresence.class);
    int detailsCount = details.size();

    if (detailsCount > 1) {
      JMenuItem addContactMenu =
          TreeContactList.createAddContactMenu((SourceContact) contact.getDescriptor());

      JPopupMenu popupMenu = ((JMenu) addContactMenu).getPopupMenu();

      // Add a title label.
      JLabel infoLabel = new JLabel();
      infoLabel.setText(
          "<html><b>"
              + GuiActivator.getResources().getI18NString("service.gui.ADD_CONTACT")
              + "</b></html>");

      popupMenu.insert(infoLabel, 0);
      popupMenu.insert(new Separator(), 1);

      popupMenu.setFocusable(true);
      popupMenu.setInvoker(treeContactList);

      Point location =
          new Point(
              addContactButton.getX(), addContactButton.getY() + addContactButton.getHeight());

      SwingUtilities.convertPointToScreen(location, treeContactList);

      location.y = location.y + treeContactList.getPathBounds(treeContactList.getSelectionPath()).y;

      popupMenu.setLocation(location.x + 8, location.y - 8);
      popupMenu.setVisible(true);
    } else if (details.size() == 1) {
      TreeContactList.showAddContactDialog(details.get(0), sourceContact.getDisplayName());
    }
  }
Beispiel #8
0
  @Override
  public void actionPerformed(ActionEvent e) {
    String source = e.getActionCommand();
    Object obj = e.getSource();

    // popup buttons
    if (obj == removeButton) {
      midPanel.remove(orderLabel[indexOfLabelPressed]);
      popup.setVisible(false);
      itemCountOfLabel[indexOfLabelPressed] = 0;
      revalidate();
      repaint();

      setCost();

    } else if (obj == cancelButton) {
      popup.setVisible(false);
    } else if (obj == discountButton) {
      discountPopup.setLocation(700, 220);
      discountPopup.setInvoker(discountPopup);
      discountPopup.setVisible(true);
      itemDiscountPopupLabel.setText(
          "Price: "
              + itemPriceOfLabel[indexOfLabelPressed]
              + " Discount: "
              + menuPanel.df.format(((1 - itemPriceModifier[indexOfLabelPressed]) * 100))
              + "%");
    } else if (obj == countButton) {
      countPopup.setLocation(700, 220);
      countPopup.setInvoker(countPopup);
      countPopup.setVisible(true);
    }

    // discount buttons
    if (indexOfLabelPressed != -1) { // if it is label
      okDiscountButton.setText("Set Price");
      if (obj == discountButton0
          || obj == discountButton1
          || obj == discountButton2
          || obj == discountButton3
          || obj == discountButton4
          || obj == discountButton5
          || obj == discountButton6
          || obj == discountButton7
          || obj == discountButton8
          || obj == discountButton9) {
        itemDiscountPopupString = itemDiscountPopupString + source;
        itemDiscountPopupLabel.setText("Discount: " + itemDiscountPopupString);
      } else if (obj == clearDiscountButton) {
        itemDiscountPopupString = "";
        itemDiscountPopupLabel.setText("Discount: " + itemCountPopupString);
        discountPopup.setVisible(false);
      } else if (obj == okDiscountButton) {
        if (itemDiscountPopupString == "") {
          itemDiscountPopupString = "";
          itemDiscountPopupLabel.setText("Discount: " + itemDiscountPopupString);
          discountPopup.setVisible(false);
        } else {
          itemPriceOfLabel[indexOfLabelPressed] = Double.parseDouble(itemDiscountPopupString) / 100;
          discountPopup.setVisible(false);
          setLabelText();
          setCost();
          itemDiscountPopupString = "";
          itemDiscountPopupLabel.setText("Discount: " + itemDiscountPopupString);
        }
      } else if (obj == percentDiscountButton) {
        if (itemDiscountPopupString == "") {
          itemDiscountPopupString = "";
          itemDiscountPopupLabel.setText("Discount: " + itemDiscountPopupString);
          discountPopup.setVisible(false);
        } else {
          itemPriceModifier[indexOfLabelPressed] =
              (100 - Double.parseDouble(itemDiscountPopupString)) / 100;
          discountPopup.setVisible(false);
          setLabelText();
          setCost();
          itemDiscountPopupString = "";
          itemDiscountPopupLabel.setText("Discount: " + itemDiscountPopupString);
        }
      } else if (obj == resetDiscountButton) {
        itemPriceModifier[indexOfLabelPressed] = 1;
        itemPriceOfLabel[indexOfLabelPressed] = itemOriginalPrice[indexOfLabelPressed];
        setLabelText();
        setCost();
        discountPopup.setVisible(false);
        itemDiscountPopupString = "";
        itemDiscountPopupLabel.setText("Discount: " + itemDiscountPopupString);
      }
    } else if (indexOfLabelPressed == -1) {
      okDiscountButton.setText("Deduct");
      if (obj == discountButton0
          || obj == discountButton1
          || obj == discountButton2
          || obj == discountButton3
          || obj == discountButton4
          || obj == discountButton5
          || obj == discountButton6
          || obj == discountButton7
          || obj == discountButton8
          || obj == discountButton9) {
        itemDiscountPopupString = itemDiscountPopupString + source;
        itemDiscountPopupLabel.setText("Discount: " + itemDiscountPopupString);
      } else if (obj == clearDiscountButton) {
        itemDiscountPopupString = "";
        itemDiscountPopupLabel.setText("Discount: " + itemCountPopupString);
        discountPopup.setVisible(false);
      } else if (obj == okDiscountButton) {
        if (itemDiscountPopupString == "") {
          itemDiscountPopupString = "";
          itemDiscountPopupLabel.setText("Discount: " + itemDiscountPopupString);
          discountPopup.setVisible(false);
        } else {
          finalModifier = Double.parseDouble(itemDiscountPopupString) / 100;
          discountPopup.setVisible(false);
          setCost();
          itemDiscountPopupString = "";
          itemDiscountPopupLabel.setText("Discount: " + itemDiscountPopupString);
        }
      } else if (obj == percentDiscountButton) {
        if (itemDiscountPopupString == "") {
          itemDiscountPopupString = "";
          itemDiscountPopupLabel.setText("Discount: " + itemDiscountPopupString);
          discountPopup.setVisible(false);
        } else {
          finalPercentModifier = (100 - Double.parseDouble(itemDiscountPopupString)) / 100;
          discountPopup.setVisible(false);
          setCost();
          itemDiscountPopupString = "";
          itemDiscountPopupLabel.setText("Discount: " + itemDiscountPopupString);
        }
      } else if (obj == resetDiscountButton) {
        finalPercentModifier = 1;
        finalModifier = 0;
        setCost();
        discountPopup.setVisible(false);
        itemDiscountPopupString = "";
        itemDiscountPopupLabel.setText("Discount: " + itemDiscountPopupString);
      }
    }
    // count buttons
    if (obj == countButton0
        || obj == countButton1
        || obj == countButton2
        || obj == countButton3
        || obj == countButton4
        || obj == countButton5
        || obj == countButton6
        || obj == countButton7
        || obj == countButton8
        || obj == countButton9) {
      itemCountPopupString = itemCountPopupString + source;
      itemCountPopupLabel.setText("Item count: " + itemCountPopupString);
    } else if (obj == clearCountButton) {
      itemCountPopupString = "";
      itemCountPopupLabel.setText("Item count: " + itemCountPopupString);
      countPopup.setVisible(false);
    } else if (obj == okCountButton) {
      if (itemCountPopupString == "") {
        itemCountPopupString = "";
        itemCountPopupLabel.setText("Item count: " + itemCountPopupString);
        countPopup.setVisible(false);
      } else {
        itemCountOfLabel[indexOfLabelPressed] = Integer.parseInt(itemCountPopupString);
        countPopup.setVisible(false);
        setLabelText();
        setCost();
        itemCountPopupString = "";
        itemCountPopupLabel.setText("Item count: " + itemCountPopupString);
      }
    }
  }
  // Handle some of the common steps between creating the content
  // and object tables.
  public AbstractViperTable(TablePanel tp) {
    super();
    this.outerTablePanel = tp;
    setLayout(new BorderLayout());
    EnhancedTable table =
        new EnhancedTable() {
          public void changeSelection(
              int rowIndex, int columnIndex, boolean toggle, boolean extend) {
            ViperTableModel currModel = AbstractViperTable.this.getCurrentModel();
            columnIndex = convertColumnIndexToModel(columnIndex);
            AttrConfig ac = currModel.getAttributeForColumn(columnIndex);
            Descriptor d = currModel.getDescriptorAtRow(rowIndex);
            Node n = null;
            if (ac != null) {
              Attribute a = d.getAttribute(ac);
              n = a;
            } else if (currModel.getInternalColumn(columnIndex) == ViperTableModel.BY_ID) {
              n = d;
            }
            if (n != null) {
              if (extend) {
                mediator.getSelection().addNode(n);
              } else {
                mediator.getSelection().setTo(n);
              }
            }
          }

          public boolean isCellSelected(int row, int column) {
            ViperTableModel currModel = AbstractViperTable.this.getCurrentModel();
            column = convertColumnIndexToModel(column);
            AttrConfig ac = currModel.getAttributeForColumn(column);
            Descriptor d = currModel.getDescriptorAtRow(row);
            if (ac != null) {
              Attribute a = d.getAttribute(ac);
              return mediator.getSelection().isSelected(a);
            } else if (currModel.getInternalColumn(column) == ViperTableModel.BY_ID) {
              return mediator.getSelection().isSelected(d);
            }
            return false;
          }
        };
    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    table.resizeAllColumnsToNaturalWidth();
    table.setCellSelectionBackground(
        table.getSelectionBackground().brighter().brighter().brighter());
    table.setCellSelectionForeground(table.getForeground().darker());
    initAttributeTable(table);
    JScrollPane scrollPane = new JScrollPane(table);
    this.add(scrollPane);
    popup = new DescPropPopup();
    popup.setInvoker(getTable());
    getTable()
        .addMouseListener(
            new MouseAdapter() {
              public void mousePressed(MouseEvent e) {
                maybeShowPopup(e);
              }

              public void mouseReleased(MouseEvent e) {
                maybeShowPopup(e);
              }
            });
  }