Ejemplo n.º 1
0
  private TitledComponent createPropertyGroupPanel(PropertyGroup propertyGroup) {
    JPanel propertiesPanel = new JPanel();

    // create and add properties to panel
    if (propertyGroup.getProperties().size() > 0) {
      createPropertyPanel(propertyGroup, propertiesPanel);
    } else {
      JLabel emptyLabel = new JLabel("(empty)");
      emptyLabel.setFont(emptyLabel.getFont().deriveFont(Font.ITALIC));
      propertiesPanel.add(emptyLabel);
    }

    // setup panel border
    propertiesPanel.setBorder(propertyGroupPanelBorder);

    // add panel to foldable titled component
    String title = getCaptionFor(propertyGroup);
    TitledComponent groupPanel = createTitledComponent(title, propertiesPanel);
    propertiesView.setupPropertyGroupTitledComponent(propertyGroup, groupPanel);

    return groupPanel;
  }
Ejemplo n.º 2
0
  private JPanel createPropertyPanel(
      IObjectWithProperties objectWithProperties, JPanel propertyPanel) {
    if (null == propertyPanel) {
      propertyPanel = new JPanel();
    }

    if (null == objectWithProperties || null == objectWithProperties.getProperties()) {
      return propertyPanel;
    }

    Collection<? extends IObjectWithProperties> properties = objectWithProperties.getProperties();
    int numProperties = properties.size();

    // setup layout
    double[][] layoutSize = new double[2][];
    layoutSize[0] = new double[] {TableLayout.FILL}; // columns
    layoutSize[1] = new double[numProperties]; // rows
    Arrays.fill(layoutSize[1], TableLayout.PREFERRED); // set all rows to preferred size

    propertyPanel.setLayout(new TableLayout(layoutSize));

    int row = 0;
    for (IObjectWithProperties aProperty : properties) {
      JPanel aPropertyRow = null;

      // Property Component
      if (aProperty instanceof AbstractPropertyComponent) {
        aPropertyRow = createPropertyComponentPanel((AbstractPropertyComponent) aProperty);

        // Property Group
      } else if (aProperty instanceof PropertyGroup
          && null != aProperty.getPropertiesObjectName()
          && !aProperty.getPropertiesObjectName().isEmpty()) {
        aPropertyRow = createPropertyGroupPanel((PropertyGroup) aProperty);

        // Property: get component
      } else if (aProperty instanceof Property) {
        Property aPropertyLeaf = (Property) aProperty;

        // FIXME don't create/add any component if the component type is "none"
        if (aPropertyLeaf.getComponentType().equals(Property.COMPONENT_TYPE_NONE)) {
          aPropertyRow = new JPanel();

        } else {
          aPropertyRow =
              createPropertyComponentPanel(propertiesView.getComponentFor((Property) aProperty));
        }
      }

      // other: recursive handling
      if (null == aPropertyRow) {
        aPropertyRow = createPropertyPanel(aProperty, null);
        aPropertyRow.setBorder(
            new ColorBorder(PropertyCardsConfig.propertyTitleBgColor2.brighter(), 0, 0, 1, 0));
      }

      propertyPanel.add(aPropertyRow, "0 " + row++);
    }

    return propertyPanel;
  }