Revision 3574

View differences:

org.gvsig.complexlegend/trunk/org.gvsig.complexlegend/org.gvsig.complexlegend.swing/org.gvsig.complexlegend.swing.impl/src/main/java/org/gvsig/complexlegend/swing/impl/DefaultComplexLegendPanel.java
1
package org.gvsig.complexlegend.swing.impl;
2

  
3
import java.awt.BorderLayout;
4
import java.awt.Dimension;
5
import java.awt.FlowLayout;
6
import java.awt.event.ActionEvent;
7
import java.awt.event.ActionListener;
8
import java.util.Iterator;
9
import java.util.List;
10

  
11
import javax.swing.BorderFactory;
12
import javax.swing.DefaultComboBoxModel;
13
import javax.swing.ImageIcon;
14
import javax.swing.JButton;
15
import javax.swing.JCheckBox;
16
import javax.swing.JComboBox;
17
import javax.swing.JDialog;
18
import javax.swing.JLabel;
19
import javax.swing.JPanel;
20
import javax.swing.event.ListDataEvent;
21
import javax.swing.event.ListDataListener;
22

  
23
import org.gvsig.andami.IconThemeHelper;
24
import org.gvsig.andami.PluginServices;
25
import org.gvsig.app.project.documents.view.legend.gui.AbstractParentPanel;
26
import org.gvsig.app.project.documents.view.legend.gui.Features;
27
import org.gvsig.app.project.documents.view.legend.gui.ILegendPanel;
28
import org.gvsig.complexlegend.ComplexLegendItem;
29
import org.gvsig.complexlegend.VectorComplexLegend;
30
import org.gvsig.complexlegend.impl.DefaultVectorComplexLegend;
31
import org.gvsig.complexlegend.swing.ComplexLegendPanel;
32
import org.gvsig.fmap.mapcontext.MapContextLocator;
33
import org.gvsig.fmap.mapcontext.layers.FLayer;
34
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
35
import org.gvsig.fmap.mapcontext.rendering.legend.ILegend;
36
import org.gvsig.symbology.swing.SymbologySwingLocator;
37
import org.gvsig.tools.ToolsLocator;
38
import org.gvsig.tools.i18n.I18nManager;
39
import org.gvsig.tools.observer.Observable;
40
import org.gvsig.tools.observer.Observer;
41
import org.slf4j.Logger;
42
import org.slf4j.LoggerFactory;
43

  
44
public class DefaultComplexLegendPanel extends JPanel implements ComplexLegendPanel, Observer {
45

  
46
    /**
47
     *
48
     */
49
    private static final long serialVersionUID = -312336406359200569L;
50
    private static Logger logger = LoggerFactory.getLogger(DefaultComplexLegendPanel.class);
51
    private VectorComplexLegend auxLegend;
52
    private FLayer layer;
53
    private JComboBox cmbValue;
54
    private JCheckBox chkAllowOverlap;
55
    private JPanel symbolPanel;
56
    private JButton addButton;
57
    private JButton removeButton;
58
    private DefaultComboBoxModel model;
59
    private ILegendPanel legendPanel;
60
    private JDialog dlg;
61
    private ComplexLegendItem currentItem;
62
    private I18nManager i18nManager;
63
    private int currentIndex;
64

  
65
    public DefaultComplexLegendPanel() {
66
        super();
67
        initialize();
68
        refreshButtons();
69
    }
70

  
71
    private void initialize() {
72
        this.i18nManager = ToolsLocator.getI18nManager();
73

  
74
        setLayout(new BorderLayout());
75
        JPanel aux = new JPanel(new BorderLayout());
76

  
77
        JPanel fieldsPanel = new JPanel(new FlowLayout());
78
        fieldsPanel.setBorder(BorderFactory.createTitledBorder(null,
79
                i18nManager.getTranslation("select_scale")));
80
        fieldsPanel.setPreferredSize(new Dimension(300, 100));
81

  
82
        fieldsPanel.add(new JLabel());
83
        fieldsPanel.add(getComboBox());
84
        fieldsPanel.add(getAddButton());
85
        fieldsPanel.add(getRemoveButton());
86

  
87
        JPanel fieldsPanelCheck = new JPanel(new FlowLayout());
88
        chkAllowOverlap = new JCheckBox(i18nManager.getTranslation("_Allow_overlap_drawing_legends"));
89
        fieldsPanelCheck.add(chkAllowOverlap);
90
        fieldsPanel.add(fieldsPanelCheck);
91

  
92
        symbolPanel = new JPanel();
93
        symbolPanel.setBorder(BorderFactory.createTitledBorder(null,
94
                i18nManager.getTranslation("legend_definition")));
95

  
96
        aux.add(fieldsPanel, BorderLayout.NORTH);
97
        aux.add(symbolPanel, BorderLayout.CENTER);
98

  
99
        this.add(aux, BorderLayout.CENTER);
100
    }
101

  
102
    private JComboBox getComboBox() {
103
        if (cmbValue == null) {
104
            cmbValue = new JComboBox(getComboBoxModel());
105
            cmbValue.setPreferredSize(new Dimension(350, 20));
106
            cmbValue.addActionListener(new ActionListener() {
107
                public void actionPerformed(ActionEvent e) {
108
                    refreshLegendPanel();
109
                }
110
            });
111
        }
112
        return cmbValue;
113
    }
114

  
115
    private DefaultComboBoxModel getComboBoxModel() {
116
        if (this.model == null) {
117
            this.model = new DefaultComboBoxModel();
118
            this.model.addListDataListener(new ListDataListener() {
119
                public void intervalRemoved(ListDataEvent arg0) {
120
                }
121

  
122
                public void intervalAdded(ListDataEvent arg0) {
123
                }
124

  
125
                public void contentsChanged(ListDataEvent arg0) {
126
                    refreshButtons();
127
                }
128
            });
129
        }
130
        return this.model;
131
    }
132

  
133
    protected void refreshButtons() {
134
        boolean status = (getComboBoxModel().getSize() != 0);
135
        getComboBox().setEnabled(status);
136
        getRemoveButton().setEnabled(status);
137
        if (legendPanel != null) {
138
            legendPanel.getPanel().setVisible(status);
139
        }
140
        if (auxLegend != null && auxLegend instanceof DefaultVectorComplexLegend) {
141
            chkAllowOverlap.setSelected(auxLegend.getAllowOverlap());
142
        }
143
    }
144

  
145
    private JButton getAddButton() {
146
        if (addButton == null) {
147
            addButton = new JButton();
148
            addButton.setIcon(PluginServices.getIconTheme().get("legend-add"));
149
            addButton.addActionListener(new ActionListener() {
150
                public void actionPerformed(ActionEvent arg0) {
151
                    createComplexLegendItemWindow();
152
                }
153
            });
154
        }
155
        return addButton;
156
    }
157

  
158
    private JButton getRemoveButton() {
159
        if (removeButton == null) {
160
            removeButton = new JButton();
161
            removeButton.setIcon(PluginServices.getIconTheme().get("legend-delete"));
162
            removeButton.addActionListener(new ActionListener() {
163
                public void actionPerformed(ActionEvent arg0) {
164
                    removeComplexLegendItem();
165
                }
166
            });
167
        }
168
        return removeButton;
169
    }
170

  
171
    protected void removeComplexLegendItem() {
172
        ComplexLegendItem item = (ComplexLegendItem) getComboBox().getSelectedItem();
173
        int index = auxLegend.getLegends().indexOf(item);
174
        if (index != -1) {
175
            auxLegend.remove(item);
176
            getComboBoxModel().removeElementAt(index);
177
        }
178
        refreshButtons();
179
    }
180

  
181
    protected void createComplexLegendItemWindow() {
182
        if (layer != null) {
183
            ComplexLegendItemPanel legendItemPanel
184
                    = new ComplexLegendItemPanel(layer, (VectorComplexLegend) getLegend());
185
            legendItemPanel.addObserver(this);
186

  
187
            dlg = new JDialog();
188
            dlg.setTitle(i18nManager.getTranslation("SelectItem"));
189
            dlg.setResizable(true);
190
            //legendItemPanel.setParentDialog(dlg);
191
            dlg.getContentPane().add(legendItemPanel);
192
            dlg.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
193

  
194
            dlg.setSize(510, 510);
195
            dlg.setModal(true);
196
            dlg.pack();
197
            dlg.setLocationRelativeTo(null);
198
            dlg.setVisible(true);
199
        }
200
    }
201

  
202
    public String getDescription() {
203
        return i18nManager.getTranslation(
204
                "legend_by_scale");
205
    }
206

  
207
    public ImageIcon getIcon() {
208
        return IconThemeHelper.getImageIcon(
209
                "scaled-symbols");
210
    }
211

  
212
    public ILegend getLegend() {
213
        if (auxLegend == null) {
214
            auxLegend = (VectorComplexLegend) MapContextLocator.getMapContextManager()
215
                    .createLegend(DefaultVectorComplexLegend.COMPLEX_LEGEND_NAME);
216
        }
217
        saveCurrentPanel();
218
        auxLegend.setAllowOverlap(this.chkAllowOverlap.isSelected());
219

  
220
        return (VectorComplexLegend) auxLegend.cloneLegend();
221
    }
222

  
223
    public Class getLegendClass() {
224
        return DefaultVectorComplexLegend.class;
225
    }
226

  
227
    public JPanel getPanel() {
228
        return this;
229
    }
230

  
231
    public Class getParentClass() {
232
        return Features.class;
233
    }
234

  
235
    public String getTitle() {
236
        return i18nManager.getTranslation("complex_symbology");
237
    }
238

  
239
    public boolean isSuitableFor(FLayer layer) {
240
        return (layer instanceof FLyrVect);
241
    }
242

  
243
    public void setData(FLayer layer, ILegend data) {
244
        this.layer = layer;
245
        if (data instanceof DefaultVectorComplexLegend) {
246
            auxLegend = (DefaultVectorComplexLegend) data.cloneLegend();
247
            updateComboModel();
248
            chkAllowOverlap.setSelected(auxLegend.getAllowOverlap());
249
        }
250

  
251
    }
252

  
253
    private void saveCurrentPanel() {
254
        if (legendPanel != null && currentItem != null) {
255
            currentItem.setLegend(legendPanel.getLegend());
256
        }
257
    }
258

  
259
    public void refreshLegendPanel() {
260
        ComplexLegendItem item = (ComplexLegendItem) getComboBox().getSelectedItem();
261
        if (item != null) {
262
            ILegendPanel aux = getLegendPanel(item.getLegend());
263
            if (aux != null) {
264
                saveCurrentPanel();
265

  
266
                symbolPanel.removeAll();
267
                legendPanel = aux;
268
                legendPanel.setData(layer, item.getLegend());
269
                symbolPanel.add(legendPanel.getPanel());
270
                symbolPanel.repaint();
271
                symbolPanel.revalidate();
272

  
273
                currentItem = item;
274
                currentIndex = getComboBox().getSelectedIndex();
275
            }
276
        }
277
    }
278

  
279
    private ILegendPanel getLegendPanel(ILegend legend) {
280
        List panels = SymbologySwingLocator.getSwingManager().getLegendEditorClasses();
281
        Iterator it = panels.iterator();
282
        while (it.hasNext()) {
283
            Class panelClass = (Class) it.next();
284
            ILegendPanel panel;
285
            try {
286
                panel = (ILegendPanel) panelClass.newInstance();
287
                if (!(panel instanceof AbstractParentPanel)) {
288
                    if (panel.getLegendClass().equals(legend.getClass())) {
289
                        panel.setData(layer, legend);
290
                        return panel;
291
                    }
292
                }
293
            } catch (Exception e) {
294
                logger.warn("Error creating ILegendPanel. ", e);
295
                return null;
296
            }
297
        }
298
        return null;
299
    }
300

  
301
    public void update(Observable observable, Object isAccepted) {
302
        if (observable instanceof ComplexLegendItemPanel && isAccepted instanceof Boolean) {
303
            ComplexLegendItemPanel itemPanel = (ComplexLegendItemPanel) observable;
304
            boolean acceptForm = (Boolean) isAccepted;
305
            if (!acceptForm) {
306
                /* Si se ha pinchado en cancelar, se cierra sin m?s */
307
                dlg.dispose();
308
            } else {
309
                if (itemPanel.validateValues()) {
310
                    ComplexLegendItem item = itemPanel.getLegendItem();
311

  
312
                    /* Guardo el panel actual*/
313
                    saveCurrentPanel();
314

  
315
                    /* A?ado y ordeno la nueva entrada */
316
                    auxLegend.add(item);
317
                    updateComboModel();
318

  
319
                    /* Cargo el nuevo panel */
320
                    symbolPanel.removeAll();
321
                    legendPanel = itemPanel.getLegendPanel();
322
                    legendPanel.setData(layer, item.getLegend());
323
                    symbolPanel.add(legendPanel.getPanel());
324
                    symbolPanel.repaint();
325

  
326
                    /* Selecciono la nueva entrada */
327
                    currentItem = item;
328
                    getComboBox().setSelectedItem(item);
329
                    currentIndex = getComboBox().getSelectedIndex();
330

  
331
                    /* Cierro el di?logo */
332
                    dlg.dispose();
333
                }
334
            }
335
        }
336
    }
337

  
338
    private void updateComboModel() {
339
        getComboBoxModel().removeAllElements();
340
        if (auxLegend != null) {
341
            Iterator<ComplexLegendItem> it = auxLegend.getLegends().iterator();
342
            while (it.hasNext()) {
343
                ComplexLegendItem item = (ComplexLegendItem) it.next();
344
                getComboBoxModel().addElement(item);
345
            }
346

  
347
        }
348
    }
349

  
350
}
org.gvsig.complexlegend/trunk/org.gvsig.complexlegend/org.gvsig.complexlegend.swing/org.gvsig.complexlegend.swing.impl/src/main/java/org/gvsig/complexlegend/swing/impl/ComplexLegendItemPanel.java
224 224
			while(it.hasNext()){
225 225
				ILegendPanel legPanel = (ILegendPanel) it.next();
226 226
				if(!((legPanel instanceof AbstractParentPanel) ||
227
						(legPanel instanceof DefaultComplexLegendPanel))){
227
						(legPanel instanceof DefaultComplexLegendPanelController))){
228 228
					model.addElement(new LegendPanelCombo(legPanel));
229 229
				}
230 230
			}
org.gvsig.complexlegend/trunk/org.gvsig.complexlegend/org.gvsig.complexlegend.swing/org.gvsig.complexlegend.swing.impl/src/main/java/org/gvsig/complexlegend/swing/impl/DefaultComplexLegendPanelView.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2

  
3
<object classname="com.jeta.forms.store.memento.FormPackage">
4
 <at name="fileversion">
5
  <object classname="com.jeta.forms.store.memento.FormsVersion2">
6
   <at name="major">2</at>
7
   <at name="minor">0</at>
8
   <at name="sub">0</at>
9
  </object>
10
 </at>
11
 <at name="form">
12
  <object classname="com.jeta.forms.store.memento.FormMemento">
13
   <super classname="com.jeta.forms.store.memento.ComponentMemento">
14
    <at name="cellconstraints">
15
     <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
16
      <at name="column">1</at>
17
      <at name="row">1</at>
18
      <at name="colspan">1</at>
19
      <at name="rowspan">1</at>
20
      <at name="halign">default</at>
21
      <at name="valign">default</at>
22
      <at name="insets" object="insets">0,0,0,0</at>
23
     </object>
24
    </at>
25
    <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
26
   </super>
27
   <at name="id">/home/pako/projects/gvSIG/org.gvsig.complexlegend/org.gvsig.complexlegend.swing/org.gvsig.complexlegend.swing.impl/src/main/java/org/gvsig/complexlegend/swing/impl/DefaultComplexLegendPanelView.xml</at>
28
   <at name="rowspecs">CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE</at>
29
   <at name="colspecs">FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE</at>
30
   <at name="components">
31
    <object classname="java.util.LinkedList">
32
     <item >
33
      <at name="value">
34
       <object classname="com.jeta.forms.store.memento.FormMemento">
35
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
36
         <at name="cellconstraints">
37
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
38
           <at name="column">2</at>
39
           <at name="row">2</at>
40
           <at name="colspan">1</at>
41
           <at name="rowspan">1</at>
42
           <at name="halign">default</at>
43
           <at name="valign">default</at>
44
           <at name="insets" object="insets">0,0,0,0</at>
45
          </object>
46
         </at>
47
         <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
48
        </super>
49
        <at name="id">embedded.763457626</at>
50
        <at name="rowspecs">CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE</at>
51
        <at name="colspecs">FILL:DEFAULT:GROW(1.0)</at>
52
        <at name="components">
53
         <object classname="java.util.LinkedList">
54
          <item >
55
           <at name="value">
56
            <object classname="com.jeta.forms.store.memento.FormMemento">
57
             <super classname="com.jeta.forms.store.memento.ComponentMemento">
58
              <at name="cellconstraints">
59
               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
60
                <at name="column">1</at>
61
                <at name="row">2</at>
62
                <at name="colspan">1</at>
63
                <at name="rowspan">1</at>
64
                <at name="halign">default</at>
65
                <at name="valign">default</at>
66
                <at name="insets" object="insets">0,0,0,0</at>
67
               </object>
68
              </at>
69
              <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
70
             </super>
71
             <at name="id">embedded.1183280059</at>
72
             <at name="rowspecs">CENTER:MIN(12DLU;DEFAULT):GROW(1.0)</at>
73
             <at name="colspecs">FILL:4DLU:NONE,FILL:MIN(12DLU;DEFAULT):GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE</at>
74
             <at name="components">
75
              <object classname="java.util.LinkedList">
76
               <item >
77
                <at name="value">
78
                 <object classname="com.jeta.forms.store.memento.BeanMemento">
79
                  <super classname="com.jeta.forms.store.memento.ComponentMemento">
80
                   <at name="cellconstraints">
81
                    <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
82
                     <at name="column">2</at>
83
                     <at name="row">1</at>
84
                     <at name="colspan">1</at>
85
                     <at name="rowspan">1</at>
86
                     <at name="halign">default</at>
87
                     <at name="valign">default</at>
88
                     <at name="insets" object="insets">0,0,0,0</at>
89
                    </object>
90
                   </at>
91
                   <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
92
                  </super>
93
                  <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
94
                  <at name="beanclass">javax.swing.JComboBox</at>
95
                  <at name="beanproperties">
96
                   <object classname="com.jeta.forms.store.memento.PropertiesMemento">
97
                    <at name="classname">javax.swing.JComboBox</at>
98
                    <at name="properties">
99
                     <object classname="com.jeta.forms.store.support.PropertyMap">
100
                      <at name="border">
101
                       <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
102
                        <super classname="com.jeta.forms.store.properties.BorderProperty">
103
                         <at name="name">border</at>
104
                        </super>
105
                        <at name="borders">
106
                         <object classname="java.util.LinkedList">
107
                          <item >
108
                           <at name="value">
109
                            <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
110
                             <super classname="com.jeta.forms.store.properties.BorderProperty">
111
                              <at name="name">border</at>
112
                             </super>
113
                            </object>
114
                           </at>
115
                          </item>
116
                         </object>
117
                        </at>
118
                       </object>
119
                      </at>
120
                      <at name="name">cmbValue</at>
121
                      <at name="width">1146</at>
122
                      <at name="items">
123
                       <object classname="com.jeta.forms.store.properties.ItemsProperty">
124
                        <at name="name">items</at>
125
                       </object>
126
                      </at>
127
                      <at name="height">14</at>
128
                     </object>
129
                    </at>
130
                   </object>
131
                  </at>
132
                 </object>
133
                </at>
134
               </item>
135
               <item >
136
                <at name="value">
137
                 <object classname="com.jeta.forms.store.memento.BeanMemento">
138
                  <super classname="com.jeta.forms.store.memento.ComponentMemento">
139
                   <at name="cellconstraints">
140
                    <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
141
                     <at name="column">4</at>
142
                     <at name="row">1</at>
143
                     <at name="colspan">1</at>
144
                     <at name="rowspan">1</at>
145
                     <at name="halign">default</at>
146
                     <at name="valign">default</at>
147
                     <at name="insets" object="insets">0,0,0,0</at>
148
                    </object>
149
                   </at>
150
                   <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
151
                  </super>
152
                  <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
153
                  <at name="beanclass">javax.swing.JButton</at>
154
                  <at name="beanproperties">
155
                   <object classname="com.jeta.forms.store.memento.PropertiesMemento">
156
                    <at name="classname">javax.swing.JButton</at>
157
                    <at name="properties">
158
                     <object classname="com.jeta.forms.store.support.PropertyMap">
159
                      <at name="border">
160
                       <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
161
                        <super classname="com.jeta.forms.store.properties.BorderProperty">
162
                         <at name="name">border</at>
163
                        </super>
164
                        <at name="borders">
165
                         <object classname="java.util.LinkedList">
166
                          <item >
167
                           <at name="value">
168
                            <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
169
                             <super classname="com.jeta.forms.store.properties.BorderProperty">
170
                              <at name="name">border</at>
171
                             </super>
172
                            </object>
173
                           </at>
174
                          </item>
175
                         </object>
176
                        </at>
177
                       </object>
178
                      </at>
179
                      <at name="name">addButton</at>
180
                      <at name="width">32</at>
181
                      <at name="toolTipText">legend-add</at>
182
                      <at name="height">12</at>
183
                     </object>
184
                    </at>
185
                   </object>
186
                  </at>
187
                 </object>
188
                </at>
189
               </item>
190
               <item >
191
                <at name="value">
192
                 <object classname="com.jeta.forms.store.memento.BeanMemento">
193
                  <super classname="com.jeta.forms.store.memento.ComponentMemento">
194
                   <at name="cellconstraints">
195
                    <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
196
                     <at name="column">6</at>
197
                     <at name="row">1</at>
198
                     <at name="colspan">1</at>
199
                     <at name="rowspan">1</at>
200
                     <at name="halign">default</at>
201
                     <at name="valign">default</at>
202
                     <at name="insets" object="insets">0,0,0,0</at>
203
                    </object>
204
                   </at>
205
                   <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
206
                  </super>
207
                  <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
208
                  <at name="beanclass">javax.swing.JButton</at>
209
                  <at name="beanproperties">
210
                   <object classname="com.jeta.forms.store.memento.PropertiesMemento">
211
                    <at name="classname">javax.swing.JButton</at>
212
                    <at name="properties">
213
                     <object classname="com.jeta.forms.store.support.PropertyMap">
214
                      <at name="border">
215
                       <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
216
                        <super classname="com.jeta.forms.store.properties.BorderProperty">
217
                         <at name="name">border</at>
218
                        </super>
219
                        <at name="borders">
220
                         <object classname="java.util.LinkedList">
221
                          <item >
222
                           <at name="value">
223
                            <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
224
                             <super classname="com.jeta.forms.store.properties.BorderProperty">
225
                              <at name="name">border</at>
226
                             </super>
227
                            </object>
228
                           </at>
229
                          </item>
230
                         </object>
231
                        </at>
232
                       </object>
233
                      </at>
234
                      <at name="name">removeButton</at>
235
                      <at name="width">32</at>
236
                      <at name="height">12</at>
237
                     </object>
238
                    </at>
239
                   </object>
240
                  </at>
241
                 </object>
242
                </at>
243
               </item>
244
               <item >
245
                <at name="value">
246
                 <object classname="com.jeta.forms.store.memento.BeanMemento">
247
                  <super classname="com.jeta.forms.store.memento.ComponentMemento">
248
                   <at name="cellconstraints">
249
                    <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
250
                     <at name="column">8</at>
251
                     <at name="row">1</at>
252
                     <at name="colspan">1</at>
253
                     <at name="rowspan">1</at>
254
                     <at name="halign">default</at>
255
                     <at name="valign">default</at>
256
                     <at name="insets" object="insets">0,0,0,0</at>
257
                    </object>
258
                   </at>
259
                   <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
260
                  </super>
261
                  <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
262
                  <at name="beanclass">javax.swing.JCheckBox</at>
263
                  <at name="beanproperties">
264
                   <object classname="com.jeta.forms.store.memento.PropertiesMemento">
265
                    <at name="classname">javax.swing.JCheckBox</at>
266
                    <at name="properties">
267
                     <object classname="com.jeta.forms.store.support.PropertyMap">
268
                      <at name="border">
269
                       <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
270
                        <super classname="com.jeta.forms.store.properties.BorderProperty">
271
                         <at name="name">border</at>
272
                        </super>
273
                        <at name="borders">
274
                         <object classname="java.util.LinkedList">
275
                          <item >
276
                           <at name="value">
277
                            <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
278
                             <super classname="com.jeta.forms.store.properties.BorderProperty">
279
                              <at name="name">border</at>
280
                             </super>
281
                            </object>
282
                           </at>
283
                          </item>
284
                         </object>
285
                        </at>
286
                       </object>
287
                      </at>
288
                      <at name="actionCommand">_Allow_overlap_drawing_legends</at>
289
                      <at name="name">chkAllowOverlap</at>
290
                      <at name="width">204</at>
291
                      <at name="text">_Allow_overlap_drawing_legends</at>
292
                      <at name="toolTipText">_Allow_overlap_drawing_legends</at>
293
                      <at name="height">14</at>
294
                     </object>
295
                    </at>
296
                   </object>
297
                  </at>
298
                 </object>
299
                </at>
300
               </item>
301
              </object>
302
             </at>
303
             <at name="properties">
304
              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
305
               <at name="classname">com.jeta.forms.gui.form.GridView</at>
306
               <at name="properties">
307
                <object classname="com.jeta.forms.store.support.PropertyMap">
308
                 <at name="border">
309
                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
310
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
311
                    <at name="name">border</at>
312
                   </super>
313
                   <at name="borders">
314
                    <object classname="java.util.LinkedList"/>
315
                   </at>
316
                  </object>
317
                 </at>
318
                 <at name="name"></at>
319
                 <at name="fill">
320
                  <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
321
                   <at name="name">fill</at>
322
                  </object>
323
                 </at>
324
                 <at name="scollBars">
325
                  <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
326
                   <at name="name">scollBars</at>
327
                   <at name="verticalpolicy">21</at>
328
                   <at name="horizontalpolicy">31</at>
329
                   <at name="border">
330
                    <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
331
                     <super classname="com.jeta.forms.store.properties.BorderProperty">
332
                      <at name="name">border</at>
333
                     </super>
334
                     <at name="borders">
335
                      <object classname="java.util.LinkedList">
336
                       <item >
337
                        <at name="value">
338
                         <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
339
                          <super classname="com.jeta.forms.store.properties.BorderProperty">
340
                           <at name="name">border</at>
341
                          </super>
342
                         </object>
343
                        </at>
344
                       </item>
345
                      </object>
346
                     </at>
347
                    </object>
348
                   </at>
349
                  </object>
350
                 </at>
351
                </object>
352
               </at>
353
              </object>
354
             </at>
355
             <at name="cellpainters">
356
              <object classname="com.jeta.forms.store.support.Matrix">
357
               <at name="rows">
358
                <object classname="[Ljava.lang.Object;" size="1">
359
                 <at name="item" index="0">
360
                  <object classname="[Ljava.lang.Object;" size="9"/>
361
                 </at>
362
                </object>
363
               </at>
364
              </object>
365
             </at>
366
             <at name="rowgroups">
367
              <object classname="com.jeta.forms.store.memento.FormGroupSet">
368
               <at name="groups">
369
                <object classname="java.util.HashMap"/>
370
               </at>
371
              </object>
372
             </at>
373
             <at name="colgroups">
374
              <object classname="com.jeta.forms.store.memento.FormGroupSet">
375
               <at name="groups">
376
                <object classname="java.util.HashMap"/>
377
               </at>
378
              </object>
379
             </at>
380
            </object>
381
           </at>
382
          </item>
383
          <item >
384
           <at name="value">
385
            <object classname="com.jeta.forms.store.memento.BeanMemento">
386
             <super classname="com.jeta.forms.store.memento.ComponentMemento">
387
              <at name="cellconstraints">
388
               <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
389
                <at name="column">1</at>
390
                <at name="row">1</at>
391
                <at name="colspan">1</at>
392
                <at name="rowspan">1</at>
393
                <at name="halign">default</at>
394
                <at name="valign">default</at>
395
                <at name="insets" object="insets">0,0,0,0</at>
396
               </object>
397
              </at>
398
              <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
399
             </super>
400
             <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
401
             <at name="beanclass">com.jeta.forms.components.separator.TitledSeparator</at>
402
             <at name="beanproperties">
403
              <object classname="com.jeta.forms.store.memento.PropertiesMemento">
404
               <at name="classname">com.jeta.forms.components.separator.TitledSeparator</at>
405
               <at name="properties">
406
                <object classname="com.jeta.forms.store.support.PropertyMap">
407
                 <at name="border">
408
                  <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
409
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
410
                    <at name="name">border</at>
411
                   </super>
412
                   <at name="borders">
413
                    <object classname="java.util.LinkedList">
414
                     <item >
415
                      <at name="value">
416
                       <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
417
                        <super classname="com.jeta.forms.store.properties.BorderProperty">
418
                         <at name="name">border</at>
419
                        </super>
420
                       </object>
421
                      </at>
422
                     </item>
423
                    </object>
424
                   </at>
425
                  </object>
426
                 </at>
427
                 <at name="name">legendPanelTitle</at>
428
                 <at name="width">1466</at>
429
                 <at name="text">select_scale</at>
430
                 <at name="height">15</at>
431
                </object>
432
               </at>
433
              </object>
434
             </at>
435
            </object>
436
           </at>
437
          </item>
438
         </object>
439
        </at>
440
        <at name="properties">
441
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
442
          <at name="classname">com.jeta.forms.gui.form.GridView</at>
443
          <at name="properties">
444
           <object classname="com.jeta.forms.store.support.PropertyMap">
445
            <at name="border">
446
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
447
              <super classname="com.jeta.forms.store.properties.BorderProperty">
448
               <at name="name">border</at>
449
              </super>
450
              <at name="borders">
451
               <object classname="java.util.LinkedList"/>
452
              </at>
453
             </object>
454
            </at>
455
            <at name="name">fieldsPanel</at>
456
            <at name="fill">
457
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
458
              <at name="name">fill</at>
459
             </object>
460
            </at>
461
            <at name="scollBars">
462
             <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
463
              <at name="name">scollBars</at>
464
              <at name="verticalpolicy">21</at>
465
              <at name="horizontalpolicy">31</at>
466
              <at name="border">
467
               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
468
                <super classname="com.jeta.forms.store.properties.BorderProperty">
469
                 <at name="name">border</at>
470
                </super>
471
                <at name="borders">
472
                 <object classname="java.util.LinkedList">
473
                  <item >
474
                   <at name="value">
475
                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
476
                     <super classname="com.jeta.forms.store.properties.BorderProperty">
477
                      <at name="name">border</at>
478
                     </super>
479
                    </object>
480
                   </at>
481
                  </item>
482
                 </object>
483
                </at>
484
               </object>
485
              </at>
486
             </object>
487
            </at>
488
           </object>
489
          </at>
490
         </object>
491
        </at>
492
        <at name="cellpainters">
493
         <object classname="com.jeta.forms.store.support.Matrix">
494
          <at name="rows">
495
           <object classname="[Ljava.lang.Object;" size="3">
496
            <at name="item" index="0">
497
             <object classname="[Ljava.lang.Object;" size="1"/>
498
            </at>
499
            <at name="item" index="1">
500
             <object classname="[Ljava.lang.Object;" size="1"/>
501
            </at>
502
            <at name="item" index="2">
503
             <object classname="[Ljava.lang.Object;" size="1"/>
504
            </at>
505
           </object>
506
          </at>
507
         </object>
508
        </at>
509
        <at name="rowgroups">
510
         <object classname="com.jeta.forms.store.memento.FormGroupSet">
511
          <at name="groups">
512
           <object classname="java.util.HashMap"/>
513
          </at>
514
         </object>
515
        </at>
516
        <at name="colgroups">
517
         <object classname="com.jeta.forms.store.memento.FormGroupSet">
518
          <at name="groups">
519
           <object classname="java.util.HashMap"/>
520
          </at>
521
         </object>
522
        </at>
523
       </object>
524
      </at>
525
     </item>
526
     <item >
527
      <at name="value">
528
       <object classname="com.jeta.forms.store.memento.FormMemento">
529
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
530
         <at name="cellconstraints">
531
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
532
           <at name="column">2</at>
533
           <at name="row">4</at>
534
           <at name="colspan">1</at>
535
           <at name="rowspan">1</at>
536
           <at name="halign">default</at>
537
           <at name="valign">default</at>
538
           <at name="insets" object="insets">0,0,0,0</at>
539
          </object>
540
         </at>
541
         <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
542
        </super>
543
        <at name="id">embedded.567923831</at>
544
        <at name="rowspecs">FILL:DEFAULT:GROW(1.0)</at>
545
        <at name="colspecs">FILL:DEFAULT:GROW(1.0)</at>
546
        <at name="components">
547
         <object classname="java.util.LinkedList"/>
548
        </at>
549
        <at name="properties">
550
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
551
          <at name="classname">com.jeta.forms.gui.form.GridView</at>
552
          <at name="properties">
553
           <object classname="com.jeta.forms.store.support.PropertyMap">
554
            <at name="border">
555
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
556
              <super classname="com.jeta.forms.store.properties.BorderProperty">
557
               <at name="name">border</at>
558
              </super>
559
              <at name="borders">
560
               <object classname="java.util.LinkedList"/>
561
              </at>
562
             </object>
563
            </at>
564
            <at name="name">symbolPanel</at>
565
            <at name="fill">
566
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
567
              <at name="name">fill</at>
568
             </object>
569
            </at>
570
            <at name="scollBars">
571
             <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
572
              <at name="name">scollBars</at>
573
              <at name="verticalpolicy">21</at>
574
              <at name="horizontalpolicy">31</at>
575
              <at name="border">
576
               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
577
                <super classname="com.jeta.forms.store.properties.BorderProperty">
578
                 <at name="name">border</at>
579
                </super>
580
                <at name="borders">
581
                 <object classname="java.util.LinkedList">
582
                  <item >
583
                   <at name="value">
584
                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
585
                     <super classname="com.jeta.forms.store.properties.BorderProperty">
586
                      <at name="name">border</at>
587
                     </super>
588
                    </object>
589
                   </at>
590
                  </item>
591
                 </object>
592
                </at>
593
               </object>
594
              </at>
595
             </object>
596
            </at>
597
           </object>
598
          </at>
599
         </object>
600
        </at>
601
        <at name="cellpainters">
602
         <object classname="com.jeta.forms.store.support.Matrix">
603
          <at name="rows">
604
           <object classname="[Ljava.lang.Object;" size="1">
605
            <at name="item" index="0">
606
             <object classname="[Ljava.lang.Object;" size="1"/>
607
            </at>
608
           </object>
609
          </at>
610
         </object>
611
        </at>
612
        <at name="rowgroups">
613
         <object classname="com.jeta.forms.store.memento.FormGroupSet">
614
          <at name="groups">
615
           <object classname="java.util.HashMap"/>
616
          </at>
617
         </object>
618
        </at>
619
        <at name="colgroups">
620
         <object classname="com.jeta.forms.store.memento.FormGroupSet">
621
          <at name="groups">
622
           <object classname="java.util.HashMap"/>
623
          </at>
624
         </object>
625
        </at>
626
       </object>
627
      </at>
628
     </item>
629
     <item >
630
      <at name="value">
631
       <object classname="com.jeta.forms.store.memento.BeanMemento">
632
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
633
         <at name="cellconstraints">
634
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
635
           <at name="column">2</at>
636
           <at name="row">3</at>
637
           <at name="colspan">1</at>
638
           <at name="rowspan">1</at>
639
           <at name="halign">default</at>
640
           <at name="valign">default</at>
641
           <at name="insets" object="insets">0,0,0,0</at>
642
          </object>
643
         </at>
644
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
645
        </super>
646
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
647
        <at name="beanclass">com.jeta.forms.components.separator.TitledSeparator</at>
648
        <at name="beanproperties">
649
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
650
          <at name="classname">com.jeta.forms.components.separator.TitledSeparator</at>
651
          <at name="properties">
652
           <object classname="com.jeta.forms.store.support.PropertyMap">
653
            <at name="border">
654
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
655
              <super classname="com.jeta.forms.store.properties.BorderProperty">
656
               <at name="name">border</at>
657
              </super>
658
              <at name="borders">
659
               <object classname="java.util.LinkedList">
660
                <item >
661
                 <at name="value">
662
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
663
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
664
                    <at name="name">border</at>
665
                   </super>
666
                  </object>
667
                 </at>
668
                </item>
669
               </object>
670
              </at>
671
             </object>
672
            </at>
673
            <at name="name">symbolPanelTitle</at>
674
            <at name="width">1471</at>
675
            <at name="text">legend_definition</at>
676
            <at name="height">15</at>
677
           </object>
678
          </at>
679
         </object>
680
        </at>
681
       </object>
682
      </at>
683
     </item>
684
    </object>
685
   </at>
686
   <at name="properties">
687
    <object classname="com.jeta.forms.store.memento.PropertiesMemento">
688
     <at name="classname">com.jeta.forms.gui.form.GridView</at>
689
     <at name="properties">
690
      <object classname="com.jeta.forms.store.support.PropertyMap">
691
       <at name="border">
692
        <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
693
         <super classname="com.jeta.forms.store.properties.BorderProperty">
694
          <at name="name">border</at>
695
         </super>
696
         <at name="borders">
697
          <object classname="java.util.LinkedList"/>
698
         </at>
699
        </object>
700
       </at>
701
       <at name="name"/>
702
       <at name="fill">
703
        <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
704
         <at name="name">fill</at>
705
        </object>
706
       </at>
707
       <at name="scollBars">
708
        <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
709
         <at name="name">scollBars</at>
710
         <at name="verticalpolicy">21</at>
711
         <at name="horizontalpolicy">31</at>
712
         <at name="border">
713
          <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
714
           <super classname="com.jeta.forms.store.properties.BorderProperty">
715
            <at name="name">border</at>
716
           </super>
717
           <at name="borders">
718
            <object classname="java.util.LinkedList">
719
             <item >
720
              <at name="value">
721
               <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
722
                <super classname="com.jeta.forms.store.properties.BorderProperty">
723
                 <at name="name">border</at>
724
                </super>
725
               </object>
726
              </at>
727
             </item>
728
            </object>
729
           </at>
730
          </object>
731
         </at>
732
        </object>
733
       </at>
734
      </object>
735
     </at>
736
    </object>
737
   </at>
738
   <at name="cellpainters">
739
    <object classname="com.jeta.forms.store.support.Matrix">
740
     <at name="rows">
741
      <object classname="[Ljava.lang.Object;" size="5">
742
       <at name="item" index="0">
743
        <object classname="[Ljava.lang.Object;" size="3"/>
744
       </at>
745
       <at name="item" index="1">
746
        <object classname="[Ljava.lang.Object;" size="3"/>
747
       </at>
748
       <at name="item" index="2">
749
        <object classname="[Ljava.lang.Object;" size="3"/>
750
       </at>
751
       <at name="item" index="3">
752
        <object classname="[Ljava.lang.Object;" size="3"/>
753
       </at>
754
       <at name="item" index="4">
755
        <object classname="[Ljava.lang.Object;" size="3"/>
756
       </at>
757
      </object>
758
     </at>
759
    </object>
760
   </at>
761
   <at name="rowgroups">
762
    <object classname="com.jeta.forms.store.memento.FormGroupSet">
763
     <at name="groups">
764
      <object classname="java.util.HashMap"/>
765
     </at>
766
    </object>
767
   </at>
768
   <at name="colgroups">
769
    <object classname="com.jeta.forms.store.memento.FormGroupSet">
770
     <at name="groups">
771
      <object classname="java.util.HashMap"/>
772
     </at>
773
    </object>
774
   </at>
775
  </object>
776
 </at>
777
</object>
org.gvsig.complexlegend/trunk/org.gvsig.complexlegend/org.gvsig.complexlegend.swing/org.gvsig.complexlegend.swing.impl/src/main/java/org/gvsig/complexlegend/swing/impl/DefaultComplexLegendPanelView.java
1
package org.gvsig.complexlegend.swing.impl;
2

  
3
import com.jeta.forms.components.separator.TitledSeparator;
4
import com.jgoodies.forms.layout.CellConstraints;
5
import com.jgoodies.forms.layout.FormLayout;
6
import java.awt.BorderLayout;
7
import java.awt.ComponentOrientation;
8
import java.awt.Container;
9
import java.awt.Dimension;
10
import javax.swing.Box;
11
import javax.swing.ImageIcon;
12
import javax.swing.JButton;
13
import javax.swing.JCheckBox;
14
import javax.swing.JComboBox;
15
import javax.swing.JFrame;
16
import javax.swing.JPanel;
17

  
18

  
19
public class DefaultComplexLegendPanelView extends JPanel
20
{
21
   JPanel fieldsPanel = new JPanel();
22
   JComboBox cmbValue = new JComboBox();
23
   JButton addButton = new JButton();
24
   JButton removeButton = new JButton();
25
   JCheckBox chkAllowOverlap = new JCheckBox();
26
   TitledSeparator legendPanelTitle = new TitledSeparator();
27
   JPanel symbolPanel = new JPanel();
28
   TitledSeparator symbolPanelTitle = new TitledSeparator();
29

  
30
   /**
31
    * Default constructor
32
    */
33
   public DefaultComplexLegendPanelView()
34
   {
35
      initializePanel();
36
   }
37

  
38
   /**
39
    * Adds fill components to empty cells in the first row and first column of the grid.
40
    * This ensures that the grid spacing will be the same as shown in the designer.
41
    * @param cols an array of column indices in the first row where fill components should be added.
42
    * @param rows an array of row indices in the first column where fill components should be added.
43
    */
44
   void addFillComponents( Container panel, int[] cols, int[] rows )
45
   {
46
      Dimension filler = new Dimension(10,10);
47

  
48
      boolean filled_cell_11 = false;
49
      CellConstraints cc = new CellConstraints();
50
      if ( cols.length > 0 && rows.length > 0 )
51
      {
52
         if ( cols[0] == 1 && rows[0] == 1 )
53
         {
54
            /** add a rigid area  */
55
            panel.add( Box.createRigidArea( filler ), cc.xy(1,1) );
56
            filled_cell_11 = true;
57
         }
58
      }
59

  
60
      for( int index = 0; index < cols.length; index++ )
61
      {
62
         if ( cols[index] == 1 && filled_cell_11 )
63
         {
64
            continue;
65
         }
66
         panel.add( Box.createRigidArea( filler ), cc.xy(cols[index],1) );
67
      }
68

  
69
      for( int index = 0; index < rows.length; index++ )
70
      {
71
         if ( rows[index] == 1 && filled_cell_11 )
72
         {
73
            continue;
74
         }
75
         panel.add( Box.createRigidArea( filler ), cc.xy(1,rows[index]) );
76
      }
77

  
78
   }
79

  
80
   /**
81
    * Helper method to load an image file from the CLASSPATH
82
    * @param imageName the package and name of the file to load relative to the CLASSPATH
83
    * @return an ImageIcon instance with the specified image file
84
    * @throws IllegalArgumentException if the image resource cannot be loaded.
85
    */
86
   public ImageIcon loadImage( String imageName )
87
   {
88
      try
89
      {
90
         ClassLoader classloader = getClass().getClassLoader();
91
         java.net.URL url = classloader.getResource( imageName );
92
         if ( url != null )
93
         {
94
            ImageIcon icon = new ImageIcon( url );
95
            return icon;
96
         }
97
      }
98
      catch( Exception e )
99
      {
100
         e.printStackTrace();
101
      }
102
      throw new IllegalArgumentException( "Unable to load image: " + imageName );
103
   }
104

  
105
   /**
106
    * Method for recalculating the component orientation for 
107
    * right-to-left Locales.
108
    * @param orientation the component orientation to be applied
109
    */
110
   public void applyComponentOrientation( ComponentOrientation orientation )
111
   {
112
      // Not yet implemented...
113
      // I18NUtils.applyComponentOrientation(this, orientation);
114
      super.applyComponentOrientation(orientation);
115
   }
116

  
117
   public JPanel createPanel()
118
   {
119
      JPanel jpanel1 = new JPanel();
120
      FormLayout formlayout1 = new FormLayout("FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0),FILL:4DLU:NONE","CENTER:2DLU:NONE,CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,FILL:DEFAULT:GROW(1.0),CENTER:2DLU:NONE");
121
      CellConstraints cc = new CellConstraints();
122
      jpanel1.setLayout(formlayout1);
123

  
124
      jpanel1.add(createfieldsPanel(),cc.xy(2,2));
125
      jpanel1.add(createsymbolPanel(),cc.xy(2,4));
126
      symbolPanelTitle.setName("symbolPanelTitle");
127
      symbolPanelTitle.setText("legend_definition");
128
      jpanel1.add(symbolPanelTitle,cc.xy(2,3));
129

  
130
      addFillComponents(jpanel1,new int[]{ 1,2,3 },new int[]{ 1,2,3,4,5 });
131
      return jpanel1;
132
   }
133

  
134
   public JPanel createfieldsPanel()
135
   {
136
      fieldsPanel.setName("fieldsPanel");
137
      FormLayout formlayout1 = new FormLayout("FILL:DEFAULT:GROW(1.0)","CENTER:DEFAULT:NONE,CENTER:DEFAULT:NONE,CENTER:2DLU:NONE");
138
      CellConstraints cc = new CellConstraints();
139
      fieldsPanel.setLayout(formlayout1);
140

  
141
      fieldsPanel.add(createPanel1(),cc.xy(1,2));
142
      legendPanelTitle.setName("legendPanelTitle");
143
      legendPanelTitle.setText("select_scale");
144
      fieldsPanel.add(legendPanelTitle,cc.xy(1,1));
145

  
146
      addFillComponents(fieldsPanel,new int[0],new int[]{ 2,3 });
147
      return fieldsPanel;
148
   }
149

  
150
   public JPanel createPanel1()
151
   {
152
      JPanel jpanel1 = new JPanel();
153
      FormLayout formlayout1 = new FormLayout("FILL:4DLU:NONE,FILL:MIN(12DLU;DEFAULT):GROW(1.0),FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE","CENTER:MIN(12DLU;DEFAULT):GROW(1.0)");
154
      CellConstraints cc = new CellConstraints();
155
      jpanel1.setLayout(formlayout1);
156

  
157
      cmbValue.setName("cmbValue");
158
      jpanel1.add(cmbValue,cc.xy(2,1));
159

  
160
      addButton.setName("addButton");
161
      addButton.setToolTipText("legend-add");
162
      jpanel1.add(addButton,cc.xy(4,1));
163

  
164
      removeButton.setName("removeButton");
165
      jpanel1.add(removeButton,cc.xy(6,1));
166

  
167
      chkAllowOverlap.setActionCommand("_Allow_overlap_drawing_legends");
168
      chkAllowOverlap.setName("chkAllowOverlap");
169
      chkAllowOverlap.setText("_Allow_overlap_drawing_legends");
170
      chkAllowOverlap.setToolTipText("_Allow_overlap_drawing_legends");
171
      jpanel1.add(chkAllowOverlap,cc.xy(8,1));
172

  
173
      addFillComponents(jpanel1,new int[]{ 1,3,5,7,9 },new int[]{ 1 });
174
      return jpanel1;
175
   }
176

  
177
   public JPanel createsymbolPanel()
178
   {
179
      symbolPanel.setName("symbolPanel");
180
      FormLayout formlayout1 = new FormLayout("FILL:DEFAULT:GROW(1.0)","FILL:DEFAULT:GROW(1.0)");
181
      CellConstraints cc = new CellConstraints();
182
      symbolPanel.setLayout(formlayout1);
183

  
184
      addFillComponents(symbolPanel,new int[]{ 1 },new int[]{ 1 });
185
      return symbolPanel;
186
   }
187

  
188
   /**
189
    * Initializer
190
    */
191
   protected void initializePanel()
192
   {
193
      setLayout(new BorderLayout());
194
      add(createPanel(), BorderLayout.CENTER);
195
   }
196

  
197

  
198
}
org.gvsig.complexlegend/trunk/org.gvsig.complexlegend/org.gvsig.complexlegend.swing/org.gvsig.complexlegend.swing.impl/src/main/java/org/gvsig/complexlegend/swing/impl/DefaultComplexLegendPanelController.java
1
/*
2
 * To change this license header, choose License Headers in Project Properties.
3
 * To change this template file, choose Tools | Templates
4
 * and open the template in the editor.
5
 */
6
package org.gvsig.complexlegend.swing.impl;
7

  
8
import com.jgoodies.forms.layout.CellConstraints;
9
import java.awt.Dimension;
10
import java.awt.event.ActionEvent;
11
import java.util.Iterator;
12
import java.util.List;
13
import javax.swing.DefaultComboBoxModel;
14
import javax.swing.ImageIcon;
15
import javax.swing.JDialog;
16
import javax.swing.JPanel;
17
import javax.swing.event.ListDataEvent;
18
import javax.swing.event.ListDataListener;
19
import org.gvsig.andami.IconThemeHelper;
20
import org.gvsig.andami.PluginServices;
21
import org.gvsig.app.project.documents.view.legend.gui.AbstractParentPanel;
22
import org.gvsig.app.project.documents.view.legend.gui.Features;
23
import org.gvsig.app.project.documents.view.legend.gui.ILegendPanel;
24
import org.gvsig.complexlegend.ComplexLegendItem;
25
import org.gvsig.complexlegend.VectorComplexLegend;
26
import org.gvsig.complexlegend.impl.DefaultVectorComplexLegend;
27
import org.gvsig.complexlegend.swing.ComplexLegendPanel;
28
import org.gvsig.fmap.mapcontext.MapContextLocator;
29
import org.gvsig.fmap.mapcontext.layers.FLayer;
30
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
31
import org.gvsig.fmap.mapcontext.rendering.legend.ILegend;
32
import org.gvsig.symbology.swing.SymbologySwingLocator;
33
import org.gvsig.tools.ToolsLocator;
34
import org.gvsig.tools.i18n.I18nManager;
35
import org.gvsig.tools.observer.Observable;
36
import org.gvsig.tools.observer.Observer;
37
import org.slf4j.Logger;
38
import org.slf4j.LoggerFactory;
39

  
40
/**
41
 *
42
 * @author pako
43
 */
44
@SuppressWarnings("UseSpecificCatch")
45
public class DefaultComplexLegendPanelController extends DefaultComplexLegendPanelView implements ComplexLegendPanel, Observer {
46

  
47
    private static final Logger LOGGER = LoggerFactory.getLogger(DefaultComplexLegendPanelController.class);
48
    private VectorComplexLegend auxLegend;
49
    private FLayer layer;
50
    private DefaultComboBoxModel model;
51
    private ILegendPanel legendPanel;
52
    private JDialog dlg;
53
    private ComplexLegendItem currentItem;
54

  
55
    public DefaultComplexLegendPanelController() {
56
        translate();
57
        initializeComponents();
58
    }
59

  
60
    private void translate() {
61
        
62
        I18nManager i18nManager = ToolsLocator.getI18nManager();
63

  
64
        chkAllowOverlap.setText(i18nManager.getTranslation(chkAllowOverlap.getText()));
65
        legendPanelTitle.setText(i18nManager.getTranslation(legendPanelTitle.getText()));
66
        symbolPanelTitle.setText(i18nManager.getTranslation(symbolPanelTitle.getText()));
67
        
68
        addButton.setToolTipText(i18nManager.getTranslation(addButton.getToolTipText()));
69
        removeButton.setToolTipText(i18nManager.getTranslation(removeButton.getToolTipText()));
70

  
71
    }
72

  
73
    private void initializeComponents() {
74

  
75
        addButton.setIcon(PluginServices.getIconTheme().get("legend-add"));
76
        addButton.addActionListener((ActionEvent arg0) -> {
77
            createComplexLegendItemWindow();
78
        });
79

  
80
        removeButton.setIcon(PluginServices.getIconTheme().get("legend-delete"));
81
        removeButton.addActionListener((ActionEvent arg0) -> {
82
            removeComplexLegendItem();
83
        });
84

  
85
        cmbValue.setModel(getComboBoxModel());
86
        cmbValue.setPreferredSize(new Dimension(350, 20));
87
        cmbValue.addActionListener((ActionEvent e) -> {
88
            refreshLegendPanel();
89
        });
90

  
91
    }
92
    
93
    private DefaultComboBoxModel getComboBoxModel() {
94
        if (this.model == null) {
95
            this.model = new DefaultComboBoxModel();
96
            this.model.addListDataListener(new ListDataListener() {
97
                @Override
98
                public void intervalRemoved(ListDataEvent arg0) {
99
                }
100

  
101
                @Override
102
                public void intervalAdded(ListDataEvent arg0) {
103
                }
104

  
105
                @Override
106
                public void contentsChanged(ListDataEvent arg0) {
107
                    refreshButtons();
108
                }
109
            });
110
        }
111
        return this.model;
112
    }
113
    
114
        protected void refreshButtons() {
115
        boolean status = (getComboBoxModel().getSize() != 0);
116
        cmbValue.setEnabled(status);
117
        removeButton.setEnabled(status);
118
        if (legendPanel != null) {
119
            legendPanel.getPanel().setVisible(status);
120
        }
121
        if (auxLegend != null && auxLegend instanceof DefaultVectorComplexLegend) {
122
            chkAllowOverlap.setSelected(auxLegend.getAllowOverlap());
123
        }
124
    }
125

  
126

  
127
        
128
    protected void createComplexLegendItemWindow() {
129
        
130
        I18nManager i18nManager = ToolsLocator.getI18nManager();
131

  
132
        if (layer != null) {
133
            ComplexLegendItemPanel legendItemPanel
134
                    = new ComplexLegendItemPanel(layer, (VectorComplexLegend) getLegend());
135
            legendItemPanel.addObserver(this);
136

  
137
            dlg = new JDialog();
138
            dlg.setTitle(i18nManager.getTranslation("SelectItem"));
139
            dlg.setResizable(true);
140

  
141
            dlg.getContentPane().add(legendItemPanel);
142
            dlg.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
143

  
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff