コード例 #1
0
    private void createGUI() {
      setLayout(new BoxLayout(this, BoxLayout.PAGE_AXIS));

      setBackground(bgColor);
      setBorder(
          BorderFactory.createCompoundBorder(
              BorderFactory.createMatteBorder(0, 0, 1, 0, LINE),
              BorderFactory.createEmptyBorder(10, 5, 10, 5)));

      Font labelFont = UIManager.getFont("Label.font");
      Font boldFont = labelFont.deriveFont(Font.BOLD, labelFont.getSize2D() * 1.2f);

      JPanel titlePanel = new JPanel();
      titlePanel.setLayout(new BorderLayout());
      titlePanel.setBackground(bgColor);
      titlePanel.setToolTipText(
          "<html><b>"
              + propDef.getPropertyType().value()
              + "</b> ("
              + propDef.getCardinality().value()
              + " value)"
              + (propDef.getDescription() != null ? "<br>" + propDef.getDescription() : ""));
      add(titlePanel);

      JPanel namePanel = new JPanel();
      namePanel.setLayout(new BoxLayout(namePanel, BoxLayout.Y_AXIS));
      namePanel.setBackground(bgColor);
      JLabel displayNameLabel = new JLabel(propDef.getDisplayName());
      displayNameLabel.setFont(boldFont);
      namePanel.add(displayNameLabel);
      JLabel idLabel = new JLabel(propDef.getId());
      namePanel.add(idLabel);

      titlePanel.add(namePanel, BorderLayout.LINE_START);

      changeBox = new JComboBox(new Object[] {"Don't change     ", "Update    ", "Unset     "});
      titlePanel.add(changeBox, BorderLayout.LINE_END);

      valueComponents = new LinkedList<JComponent>();
      if (propDef.getCardinality() == Cardinality.SINGLE) {
        JComponent valueField = createInputField(value);
        valueComponents.add(valueField);
        add(valueField);
      } else {
        if (value instanceof List<?>) {
          for (Object v : (List<?>) value) {
            JComponent valueField =
                new MultiValuePropertyInputField(createInputField(v), this, bgColor);
            valueComponents.add(valueField);
            add(valueField);
          }
        }

        JPanel addPanel = new JPanel(new BorderLayout());
        addPanel.setBackground(bgColor);
        JButton addButton = new JButton(ICON_ADD);
        addButton.addActionListener(
            new ActionListener() {
              @Override
              public void actionPerformed(ActionEvent e) {
                addNewValue();
                setStatus(StatusFlag.Update);
              }
            });
        addPanel.add(addButton, BorderLayout.LINE_END);
        add(addPanel);

        updatePositions();
      }

      setMaximumSize(new Dimension(Short.MAX_VALUE, getPreferredSize().height));
    }
コード例 #2
0
 @Override
 public String getDisplayName() {
   return propertyDefinition.getDisplayName();
 }