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)); }
@Override public String getDisplayName() { return propertyDefinition.getDisplayName(); }