/** * Selects the first legend attached to the given style in this {@link LegendTree} and displays it * in the Simple Style Editor's card layout. * * @param style Style */ private void selectAndShowFirstLegend(StyleWrapper style) { RuleWrapper firstRW = style.getRuleWrapper(0); ILegendPanel firstPanel = firstRW.getLegend(0); TreePath tp = new TreePath(style).pathByAddingChild(firstRW).pathByAddingChild(firstPanel); tree.setSelectionPath(tp); simpleStyleEditor.showDialogForLegend(firstPanel); }
private void addRule() { // We must add it just after the currently selected Rule. // Let's find which one it is. If there is none, we add it at the // end of the list. MultiInputPanel mip = new MultiInputPanel(I18N.tr("Choose a name for your rule")); mip.addInput("RuleName", I18N.tr("Name of the Rule : "), new TextBoxType(10)); mip.addValidation( new MIPValidation() { @Override public String validate(MultiInputPanel mid) { String ruleName = mid.getInput("RuleName"); return ruleName.isEmpty() ? I18N.tr("Rule name cannot be null or empty.") : null; } }); if (UIFactory.showDialog(mip)) { String s = mip.getInput("RuleName"); LegendTreeModel tm = (LegendTreeModel) tree.getModel(); // We need to link our new RuleWrapper with the layer we are editing. Rule temp = new Rule(simpleStyleEditor.getStyleWrapper().getStyle().getLayer()); temp.setName(s); Legend leg = LegendFactory.getLegend(temp.getCompositeSymbolizer().getSymbolizerList().get(0)); // Initialize a panel for this legend. ILegendPanel ilp = ILegendPanelFactory.getILegendPanel(simpleStyleEditor, leg); List<ILegendPanel> list = new ArrayList<ILegendPanel>(); list.add(ilp); RuleWrapper nrw = new RuleWrapper(simpleStyleEditor, temp, list); tm.addElement(tm.getRoot(), nrw, getSelectedRule()); simpleStyleEditor.legendAdded(nrw.getPanel()); } }
private Component getComponent(RuleWrapper rw, JLabel lab) { String s = rw.getRule().getName(); if (s == null || s.isEmpty()) { s = "Unknown"; } lab.setText(s); return lab; }
/** Refreshes the state of the icons contained in the toolbar of this panel. */ public final void refreshIcons() { // We must retrieve the index of the currently selected item in its // parent to decide if we display the buttons or not. TreePath tp = tree.getSelectionPath(); if (tp == null) { jButtonMenuDel.setEnabled(false); jButtonMenuRename.setEnabled(false); jButtonMenuDown.setEnabled(false); jButtonMenuUp.setEnabled(false); } else { jButtonMenuRename.setEnabled(true); Object last = tp.getLastPathComponent(); int index = -1; int max = -1; if (last instanceof StyleWrapper) { max = 0; index = 0; } else if (last instanceof RuleWrapper) { StyleWrapper sw = simpleStyleEditor.getStyleWrapper(); index = sw.indexOf((RuleWrapper) last); max = sw.getSize() - 1; } else if (last instanceof ILegendPanel) { RuleWrapper rw = getSelectedRule(); index = rw.indexOf((ILegendPanel) last); max = rw.getSize() - 1; } if (index == 0) { jButtonMenuUp.setEnabled(false); } else { jButtonMenuUp.setEnabled(true); } if (index < max) { jButtonMenuDown.setEnabled(true); } else { jButtonMenuDown.setEnabled(false); } if (max < 1) { jButtonMenuDel.setEnabled(false); } else { jButtonMenuDel.setEnabled(true); } } }
/** * Adds the rule panel attached to the given {@link RuleWrapper}. * * @param ruleWrapper RuleWrapper */ private void addRulePanel(RuleWrapper ruleWrapper) { // Get the panel associated to this RuleWrapper, set its id, // initialize it and add a listener for when its node name changes. PnlRule rulePanel = ruleWrapper.getPanel(); rulePanel.setId(createNewID()); rulePanel.addPropertyChangeListener( EventHandler.create(PropertyChangeListener.class, this, "onNodeNameChange", "")); // Add the rule wrapper panel to the container after putting it in // a new JScrollPane. dialogContainer.add(rulePanel.getId(), getJScrollPane(rulePanel)); }
/** * Add a legend to the tree, in the currently selected RuleWrapper, after the currently selected * Legend (if any in both case). A RuleWrapper will be added in the case there is none. */ private void addLegend() { LegendUIChooser legendPicker = new LegendUIChooser(simpleStyleEditor); if (UIFactory.showDialog(legendPicker)) { // Recover the panel that was selected when the user clicked OK. ILegendPanel ilp = legendPicker.getSelectedPanel(); // Get the currently selected RuleWrapper, or the last one in this // style if none is currently selected. RuleWrapper currentrw = getSelectedRule(); StyleWrapper sw = simpleStyleEditor.getStyleWrapper(); if (currentrw == null) { if (sw.getSize() == 0) { addRule(); } currentrw = sw.getRuleWrapper(sw.getSize() - 1); } // Set the Legend's name. Legend legend = ilp.getLegend(); legend .getSymbolizer() .setName(getUniqueName(legend.getLegendTypeName(), currentrw.getRule(), 0)); // Add the panel to the LegendTree. ((LegendTreeModel) tree.getModel()).addElement(currentrw, ilp, getSelectedLegend()); // Automatically select the newly added legend in the tree. TreePath selectionPath = tree.getSelectionPath(); TreePath parent; if (selectionPath.getLastPathComponent() instanceof RuleWrapper) { parent = selectionPath; } else { parent = selectionPath.getParentPath(); } tree.setSelectionPath(parent.pathByAddingChild(ilp)); // Notify the SimpleStyleEditor that a Legend has been added. simpleStyleEditor.legendAdded(ilp); } }