Revision 2537
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.dynform/org.gvsig.tools.dynform.spi/src/main/java/org/gvsig/tools/dynform/spi/dynformfield/AbstractJDynFormField.java | ||
---|---|---|
482 | 482 |
|
483 | 483 |
@Override |
484 | 484 |
public void fetch(DynObject container) { |
485 |
if( this.isReadOnly() ) { |
|
486 |
return; |
|
487 |
} |
|
485 |
// if( this.isReadOnly() ) {
|
|
486 |
// return;
|
|
487 |
// }
|
|
488 | 488 |
Object value = this.getValue(); |
489 | 489 |
DynClass dynclass = container.getDynClass(); |
490 | 490 |
if( dynclass!=null ) { |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.dynform/org.gvsig.tools.dynform.spi/src/main/java/org/gvsig/tools/dynform/spi/dynformfield/AbstractJDynFormFieldWithValueList.java | ||
---|---|---|
23 | 23 |
*/ |
24 | 24 |
package org.gvsig.tools.dynform.spi.dynformfield; |
25 | 25 |
|
26 |
import java.awt.event.ActionEvent; |
|
27 |
import java.awt.event.ActionListener; |
|
26 | 28 |
import java.awt.event.FocusListener; |
27 | 29 |
import java.awt.event.ItemEvent; |
28 | 30 |
import java.awt.event.KeyAdapter; |
... | ... | |
52 | 54 |
import org.gvsig.tools.dynform.spi.DynFormSPIManager.ComponentsFactory; |
53 | 55 |
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.TAG_DYNFORM_DROPDOWN; |
54 | 56 |
import org.gvsig.tools.dynform.spi.dynformfield.AbstractJDynFormField.IllegalFieldValue; |
57 |
import org.gvsig.tools.dynobject.DynField; |
|
55 | 58 |
import org.gvsig.tools.dynobject.DynField_v2; |
56 | 59 |
import org.gvsig.tools.dynobject.DynObject; |
57 | 60 |
import org.gvsig.tools.dynobject.DynObjectValueItem; |
... | ... | |
104 | 107 |
return null; |
105 | 108 |
} |
106 | 109 |
if( theDefinition instanceof DynField_v2 ) { |
107 |
if( theDefinition.getAvailableValuesMethod()!=null ) { |
|
108 |
DynObject item = this.getForm().getDefinition().createElement(); |
|
109 |
this.getForm().getValues(item); |
|
110 |
return theDefinition.getAvailableValues(item); |
|
110 |
DynObject context = this.getForm().getDefinition().createElement(); |
|
111 |
DynField[] fields = context.getDynClass().getDynFields(); |
|
112 |
for (DynField field : fields) { |
|
113 |
String name = field.getName(); |
|
114 |
JDynFormField jfield = (JDynFormField) this.getForm().getField(name); |
|
115 |
if (jfield != null ) { |
|
116 |
try { |
|
117 |
jfield.fetch(context); |
|
118 |
} catch (Exception ex) { |
|
119 |
LOGGER.warn("Can't get value of field '" + name + "'.", ex); |
|
120 |
} |
|
121 |
} |
|
111 | 122 |
} |
123 |
return theDefinition.getAvailableValues(context); |
|
112 | 124 |
} |
113 | 125 |
return theDefinition.getAvailableValues(); |
114 | 126 |
} |
... | ... | |
116 | 128 |
@Override |
117 | 129 |
public void initComponent() { |
118 | 130 |
ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager(); |
119 |
DynObjectValueItem[] availableValues = this.getAvailableValues(); |
|
120 | 131 |
ComponentsFactory theFactory = this.getComponentsFactory(); |
121 | 132 |
if (theFactory.containsJComboBox(this.getDefinition(), null)) { |
122 | 133 |
JComboBox combo = this.getComponentsFactory().getJComboBox(this.getDefinition(), null); |
123 | 134 |
this.dropDown = ToolsSwingLocator.getToolsSwingManager().createDropDown(combo); |
124 |
this.dropDown.setModel(new DefaultComboBoxModel(availableValues)); |
|
135 |
if( this.getDefinition().isAvailableValuesCalculated() ) { |
|
136 |
this.dropDown.addDropdownListener((ActionEvent e) -> { |
|
137 |
dropDown.setModel(new DefaultComboBoxModel(this.getAvailableValues())); |
|
138 |
}); |
|
139 |
} else { |
|
140 |
this.dropDown.setModel(new DefaultComboBoxModel(this.getAvailableValues())); |
|
141 |
} |
|
125 | 142 |
this.contents = combo; |
126 | 143 |
this.fixPreferredWidth(this.contents); |
127 | 144 |
this.dropDown.addItemListener((ItemEvent e) -> { |
... | ... | |
133 | 150 |
} else if (theFactory.containsJLabel(this.getDefinition(), "Ddn")) { |
134 | 151 |
JLabel label = this.getComponentsFactory().getJLabel(this.getDefinition(), "Ddn"); |
135 | 152 |
this.dropDown = ToolsSwingLocator.getToolsSwingManager().createDropDown(label); |
136 |
this.dropDown.setModel(new DefaultComboBoxModel(availableValues)); |
|
153 |
if( this.getDefinition().isAvailableValuesCalculated() ) { |
|
154 |
this.dropDown.addDropdownListener((ActionEvent e) -> { |
|
155 |
dropDown.setModel(new DefaultComboBoxModel(this.getAvailableValues())); |
|
156 |
}); |
|
157 |
} else { |
|
158 |
this.dropDown.setModel(new DefaultComboBoxModel(this.getAvailableValues())); |
|
159 |
} |
|
137 | 160 |
this.dropDown.setVisibleDropdownArrow(true); |
138 | 161 |
this.contents = label; |
139 | 162 |
this.fixPreferredWidth(this.contents); |
... | ... | |
181 | 204 |
} |
182 | 205 |
}); |
183 | 206 |
} else { |
207 |
DynObjectValueItem[] availableValues = this.getAvailableValues(); |
|
184 | 208 |
if (availableValues == null) { |
185 | 209 |
this.dropDown = null; |
186 | 210 |
JTextComponent text = this.getComponentsFactory().getJTextField(this.getDefinition(), null); |
... | ... | |
211 | 235 |
case "label": { |
212 | 236 |
JLabel label = this.getComponentsFactory().getJLabel(this.getDefinition(), "Ddn"); |
213 | 237 |
this.dropDown = ToolsSwingLocator.getToolsSwingManager().createDropDown(label); |
214 |
this.dropDown.setModel(new DefaultComboBoxModel(availableValues)); |
|
238 |
this.dropDown.setModel(new DefaultComboBoxModel(this.getAvailableValues())); |
|
239 |
if( this.getDefinition().isAvailableValuesCalculated() ) { |
|
240 |
this.dropDown.addDropdownListener((ActionEvent e) -> { |
|
241 |
dropDown.setModel(new DefaultComboBoxModel(this.getAvailableValues())); |
|
242 |
}); |
|
243 |
} |
|
215 | 244 |
this.dropDown.setVisibleDropdownArrow(true); |
216 | 245 |
label.setBorder(BorderFactory.createLineBorder(UIManager.getColor("TextField.darkShadow"))); |
217 | 246 |
label.setForeground(UIManager.getColor("TextField.foreground")); |
... | ... | |
225 | 254 |
case "combo": { |
226 | 255 |
JComboBox combo = this.getComponentsFactory().getJComboBox(this.getDefinition(), null); |
227 | 256 |
this.dropDown = ToolsSwingLocator.getToolsSwingManager().createDropDown(combo); |
228 |
this.dropDown.setModel(new DefaultComboBoxModel(availableValues)); |
|
257 |
this.dropDown.setModel(new DefaultComboBoxModel(this.getAvailableValues())); |
|
258 |
if( this.getDefinition().isAvailableValuesCalculated() ) { |
|
259 |
this.dropDown.addDropdownListener((ActionEvent e) -> { |
|
260 |
dropDown.setModel(new DefaultComboBoxModel(this.getAvailableValues())); |
|
261 |
}); |
|
262 |
} |
|
229 | 263 |
this.contents = combo; |
230 | 264 |
this.fixPreferredWidth(this.contents); |
231 | 265 |
break; |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.dynform/org.gvsig.tools.dynform.impl/src/main/java/org/gvsig/tools/dynform/impl/DefaultDynFormLibrary.java | ||
---|---|---|
24 | 24 |
package org.gvsig.tools.dynform.impl; |
25 | 25 |
|
26 | 26 |
|
27 |
import java.net.URL; |
|
27 | 28 |
import org.gvsig.tools.ToolsLocator; |
28 | 29 |
import org.gvsig.tools.dynform.DynFormLibrary; |
29 | 30 |
import org.gvsig.tools.dynform.DynFormLocator; |
30 | 31 |
import org.gvsig.tools.dynform.spi.DynFormSPILocator; |
31 |
import org.gvsig.tools.dynform.spi.DynFormSPIManager; |
|
32 | 32 |
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.TAG_DYNFORM_ACTION_CLOSE; |
33 | 33 |
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.TAG_DYNFORM_ACTION_DELETE; |
34 | 34 |
import static org.gvsig.tools.dynform.spi.DynFormSPIManager.TAG_DYNFORM_ACTION_NEW; |
... | ... | |
50 | 50 |
import org.gvsig.tools.dynobject.DynObjectManager; |
51 | 51 |
import org.gvsig.tools.library.AbstractLibrary; |
52 | 52 |
import org.gvsig.tools.library.LibraryException; |
53 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
|
54 |
import org.gvsig.tools.swing.icontheme.IconTheme; |
|
53 | 55 |
|
54 | 56 |
public class DefaultDynFormLibrary extends AbstractLibrary { |
57 |
public static final String ICON_PROVIDER_NAME = "DynForm"; |
|
55 | 58 |
|
59 |
public static final String ICON_COMMON_GROUP_NAME = "Common"; |
|
60 |
|
|
61 |
@Override |
|
56 | 62 |
public void doRegistration() { |
57 | 63 |
super.doRegistration(); |
58 | 64 |
registerAsImplementationOf(DynFormLibrary.class); |
59 | 65 |
} |
60 | 66 |
|
67 |
@Override |
|
61 | 68 |
protected void doInitialize() throws LibraryException { |
62 | 69 |
DynFormLocator.registerDefaultDynFormManager(DefaultDynFormManager.class); |
63 | 70 |
DynFormSPILocator.registerDefaultDynFormSPIManager(DefaultDynFormSPIManager.class); |
... | ... | |
81 | 88 |
dynObjectManager.registerTag(TAG_DYNFORM_SEPARATOR, "String value to add a separator previos this field with this."); |
82 | 89 |
dynObjectManager.registerTag(TAG_DYNFORM_DROPDOWN, "String value to force the type of dropdown to use, must be 'label' or 'combo'."); |
83 | 90 |
dynObjectManager.registerTag(TAG_DYNFORM_RESIZEWEIGHT, "Integer value between 0 and 100 indicating what the field should expand. A value of 0 indicates that it should not be expanded."); |
91 |
|
|
84 | 92 |
} |
85 |
|
|
93 |
|
|
94 |
|
|
95 |
@Override |
|
86 | 96 |
protected void doPostInitialize() throws LibraryException { |
87 |
|
|
97 |
String[][] iconsInfo = new String[][]{ |
|
98 |
new String[]{ICON_PROVIDER_NAME, ICON_COMMON_GROUP_NAME, "form-buttonbar-cancelnew"}, |
|
99 |
new String[]{ICON_PROVIDER_NAME, ICON_COMMON_GROUP_NAME, "form-buttonbar-close"}, |
|
100 |
new String[]{ICON_PROVIDER_NAME, ICON_COMMON_GROUP_NAME, "form-buttonbar-delete"}, |
|
101 |
new String[]{ICON_PROVIDER_NAME, ICON_COMMON_GROUP_NAME, "form-buttonbar-first"}, |
|
102 |
new String[]{ICON_PROVIDER_NAME, ICON_COMMON_GROUP_NAME, "form-buttonbar-last"}, |
|
103 |
new String[]{ICON_PROVIDER_NAME, ICON_COMMON_GROUP_NAME, "form-buttonbar-new"}, |
|
104 |
new String[]{ICON_PROVIDER_NAME, ICON_COMMON_GROUP_NAME, "form-buttonbar-next"}, |
|
105 |
new String[]{ICON_PROVIDER_NAME, ICON_COMMON_GROUP_NAME, "form-buttonbar-previous"}, |
|
106 |
new String[]{ICON_PROVIDER_NAME, ICON_COMMON_GROUP_NAME, "form-buttonbar-save"}, |
|
107 |
new String[]{ICON_PROVIDER_NAME, ICON_COMMON_GROUP_NAME, "form-problem-indicator"}, |
|
108 |
new String[]{ICON_PROVIDER_NAME, ICON_COMMON_GROUP_NAME, "form-buttonbar-search"} |
|
109 |
}; |
|
110 |
registerIcons(iconsInfo); |
|
88 | 111 |
} |
89 | 112 |
|
113 |
public static void registerIcons(String[][] iconsInfo) { |
|
114 |
IconTheme theme = ToolsSwingLocator.getIconThemeManager().getCurrent(); |
|
115 |
for (String[] icon : iconsInfo) { |
|
116 |
// 0 - Provider, 1 - Group, 2 - Name |
|
117 |
URL url = DefaultDynFormLibrary.class.getResource("images/"+ icon[2] + ".png"); |
|
118 |
theme.registerDefault(icon[0], icon[1], icon[2], null, url); |
|
119 |
} |
|
120 |
} |
|
90 | 121 |
} |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.dynform/org.gvsig.tools.dynform.impl/src/main/java/org/gvsig/tools/dynform/impl/DefaultJProblemIndicator.java | ||
---|---|---|
36 | 36 |
import org.gvsig.tools.dynform.JDynFormField; |
37 | 37 |
import org.gvsig.tools.dynform.spi.dynformfield.JProblemIndicator; |
38 | 38 |
import org.gvsig.tools.swing.api.Component; |
39 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
|
40 |
import org.gvsig.tools.swing.icontheme.IconTheme; |
|
39 | 41 |
|
40 | 42 |
public class DefaultJProblemIndicator implements Component, JProblemIndicator { |
41 | 43 |
|
... | ... | |
54 | 56 |
private void initComponentIfNeed() { |
55 | 57 |
if (this.indicator == null) { |
56 | 58 |
this.indicator = new JLabel(); |
57 |
URL resource = null; |
|
58 |
resource = this.getClass().getClassLoader().getResource("org/gvsig/tools/dynform/impl/problem.png"); |
|
59 |
URL resource; |
|
60 |
IconTheme theme = ToolsSwingLocator.getIconThemeManager().getCurrent(); |
|
61 |
this.errorIcon = theme.get("form-problem-indicator"); |
|
62 |
resource = this.getClass().getClassLoader().getResource("org/gvsig/tools/dynform/impl/images/transparent.png"); |
|
59 | 63 |
if (resource != null) { |
60 |
this.errorIcon = new ImageIcon(resource); |
|
61 |
} |
|
62 |
resource = this.getClass().getClassLoader().getResource("org/gvsig/tools/dynform/impl/transparent.png"); |
|
63 |
if (resource != null) { |
|
64 | 64 |
this.okIcon = new ImageIcon(resource); |
65 | 65 |
} |
66 | 66 |
this.indicator.setIcon(this.okIcon); |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.dynform/org.gvsig.tools.dynform.impl/src/main/java/org/gvsig/tools/dynform/impl/DefaultDynFormFieldDefinition.java | ||
---|---|---|
27 | 27 |
import org.gvsig.tools.dynform.DynFormFieldDefinition; |
28 | 28 |
import org.gvsig.tools.dynobject.DynField; |
29 | 29 |
import org.gvsig.tools.dynobject.DynField_v2; |
30 |
import org.gvsig.tools.dynobject.DynMethod; |
|
30 | 31 |
import org.gvsig.tools.dynobject.DynObjectManager; |
31 | 32 |
import org.gvsig.tools.dynobject.impl.DefaultDynField; |
32 | 33 |
import org.gvsig.tools.service.Manager; |
... | ... | |
52 | 53 |
this.setOrder(definition.getOder()); |
53 | 54 |
this.setSubtype(definition.getSubtype()); |
54 | 55 |
|
55 |
this.setAvailableValues(definition.getAvailableValues()); |
|
56 | 56 |
|
57 | 57 |
this.manager = manager; |
58 | 58 |
DynObjectManager dynManager = ToolsLocator.getDynObjectManager(); |
59 | 59 |
this.label = (String) dynManager.getAttributeValue(definition, "label"); |
60 | 60 |
if(definition instanceof DynField_v2){ |
61 |
this.setDefaultValueSupplier(((DynField_v2)definition).getDefaultValueSupplier()); |
|
62 |
this.setClassOfValue(((DynField_v2)definition).getDynClassOfValue()); |
|
63 |
this.setClassOfValue(((DynField_v2)definition).getClassOfValue()); |
|
61 |
DynField_v2 definition2 = (DynField_v2)definition; |
|
62 |
DynMethod method = definition2.getAvailableValuesMethod(); |
|
63 |
if( method == null ) { |
|
64 |
this.setAvailableValues(definition.getAvailableValues()); |
|
65 |
} else { |
|
66 |
this.setAvailableValues(method); |
|
67 |
} |
|
68 |
this.setDefaultValueSupplier(definition2.getDefaultValueSupplier()); |
|
69 |
this.setClassOfValue(definition2.getDynClassOfValue()); |
|
70 |
this.setClassOfValue(definition2.getClassOfValue()); |
|
64 | 71 |
if( definition.isContainer() ) { |
65 |
this.setClassOfItems(((DynField_v2)definition).getDynClassOfItems());
|
|
66 |
this.setClassOfItems(((DynField_v2)definition).getClassOfItems());
|
|
67 |
this.setTypeOfItems(((DynField_v2)definition).getTypeOfItems());
|
|
72 |
this.setClassOfItems(definition2.getDynClassOfItems());
|
|
73 |
this.setClassOfItems(definition2.getClassOfItems());
|
|
74 |
this.setTypeOfItems(definition2.getTypeOfItems());
|
|
68 | 75 |
} |
69 |
this.getTags().add(((DynField_v2)definition).getTags());
|
|
76 |
this.getTags().add(definition2.getTags());
|
|
70 | 77 |
|
71 | 78 |
}else{ |
72 |
this.setSubtype(definition.getSubtype()); |
|
79 |
this.setAvailableValues(definition.getAvailableValues()); |
|
80 |
// this.setSubtype(definition.getSubtype()); |
|
73 | 81 |
} |
74 | 82 |
} |
75 | 83 |
|
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.dynform/org.gvsig.tools.dynform.services/src/main/java/org/gvsig/tools/dynform/services/dynformset/base/FormSetButtonBar.java | ||
---|---|---|
26 | 26 |
import java.awt.Dimension; |
27 | 27 |
import java.awt.FlowLayout; |
28 | 28 |
import java.awt.event.ActionEvent; |
29 |
import java.awt.event.ActionListener; |
|
30 | 29 |
import java.awt.event.KeyEvent; |
31 |
import java.net.URL; |
|
32 | 30 |
import java.util.ArrayList; |
33 | 31 |
import java.util.HashMap; |
34 | 32 |
import java.util.HashSet; |
... | ... | |
40 | 38 |
import javax.swing.Action; |
41 | 39 |
import javax.swing.BorderFactory; |
42 | 40 |
|
43 |
import javax.swing.Icon; |
|
44 | 41 |
import javax.swing.ImageIcon; |
45 | 42 |
import javax.swing.JButton; |
46 | 43 |
import javax.swing.JComponent; |
... | ... | |
63 | 60 |
import static org.gvsig.tools.dynform.JDynFormSet.ACTION_SET_CURRENT_RECORD; |
64 | 61 |
import org.gvsig.tools.i18n.I18nManager; |
65 | 62 |
import org.gvsig.tools.swing.api.Component; |
63 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
|
64 |
import org.gvsig.tools.swing.icontheme.IconTheme; |
|
66 | 65 |
import org.slf4j.Logger; |
67 | 66 |
import org.slf4j.LoggerFactory; |
68 | 67 |
|
68 |
@SuppressWarnings("UseSpecificCatch") |
|
69 | 69 |
public class FormSetButtonBar implements Component { |
70 | 70 |
|
71 | 71 |
protected static final Logger LOGGER = LoggerFactory |
... | ... | |
316 | 316 |
this.othersButtons.add(new JButton(action)); |
317 | 317 |
} |
318 | 318 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
319 |
this.contents.add(createButton(i18n.getTranslation("_Close"), "close.png", ACTION_CLOSE, KeyEvent.VK_UNDEFINED));
|
|
319 |
this.contents.add(createButton(i18n.getTranslation("_Close"), "form-buttonbar-close", ACTION_CLOSE, KeyEvent.VK_UNDEFINED));
|
|
320 | 320 |
this.initButtons(); |
321 | 321 |
this.updateRecords(); |
322 | 322 |
} |
323 | 323 |
|
324 | 324 |
private JPanel getStandardButtonBar() { |
325 | 325 |
I18nManager i18nManager = ToolsLocator.getI18nManager(); |
326 |
JPanel contents = new JPanel();
|
|
327 |
contents.setLayout(new FlowLayout(FlowLayout.LEADING, 4, 4));
|
|
326 |
JPanel theContents = new JPanel();
|
|
327 |
theContents.setLayout(new FlowLayout(FlowLayout.LEADING, 4, 4));
|
|
328 | 328 |
|
329 |
JComponent firstButton = createButton(i18nManager.getTranslation("_first"), "first.png", ACTION_FIRST, KeyEvent.CTRL_MASK + KeyEvent.VK_PAGE_UP);
|
|
330 |
contents.add(firstButton);
|
|
331 |
contents.add(createButton(i18nManager.getTranslation("_back"), "previous.png", ACTION_PREVIOUS, KeyEvent.VK_PAGE_UP));
|
|
329 |
JComponent firstButton = createButton(i18nManager.getTranslation("_first"), "form-buttonbar-first", ACTION_FIRST, KeyEvent.CTRL_MASK + KeyEvent.VK_PAGE_UP);
|
|
330 |
theContents.add(firstButton);
|
|
331 |
theContents.add(createButton(i18nManager.getTranslation("_back"), "form-buttonbar-previous", ACTION_PREVIOUS, KeyEvent.VK_PAGE_UP));
|
|
332 | 332 |
|
333 | 333 |
this.records = new JButton(); |
334 | 334 |
this.records.setCursor(new Cursor(Cursor.HAND_CURSOR)); |
... | ... | |
336 | 336 |
this.records.setBorderPainted(false); |
337 | 337 |
this.records.setFocusPainted(false); |
338 | 338 |
this.records.setContentAreaFilled(false); |
339 |
this.records.addActionListener(new ActionListener() { |
|
340 |
|
|
341 |
@Override |
|
342 |
public void actionPerformed(ActionEvent ae) { |
|
343 |
doGoRecord(); |
|
344 |
} |
|
345 |
}); |
|
339 |
this.records.addActionListener((ActionEvent ae) -> { doGoRecord(); }); |
|
346 | 340 |
int height = this.records.getFont().getSize(); |
347 | 341 |
if (height < 16) { |
348 | 342 |
height = 16; |
349 | 343 |
} |
350 | 344 |
this.records.setPreferredSize(new Dimension(COUNTER_WIDTH, height)); |
351 | 345 |
this.records.setHorizontalAlignment(SwingConstants.CENTER); |
352 |
contents.add(this.records);
|
|
346 |
theContents.add(this.records);
|
|
353 | 347 |
|
354 |
contents.add(createButton(i18nManager.getTranslation("_next"), "next.png", ACTION_NEXT, KeyEvent.VK_PAGE_DOWN));
|
|
355 |
contents.add(createButton(i18nManager.getTranslation("_last"), "last.png", ACTION_LAST, KeyEvent.CTRL_MASK + KeyEvent.VK_PAGE_DOWN));
|
|
348 |
theContents.add(createButton(i18nManager.getTranslation("_next"), "form-buttonbar-next", ACTION_NEXT, KeyEvent.VK_PAGE_DOWN));
|
|
349 |
theContents.add(createButton(i18nManager.getTranslation("_last"), "form-buttonbar-last", ACTION_LAST, KeyEvent.CTRL_MASK + KeyEvent.VK_PAGE_DOWN));
|
|
356 | 350 |
|
357 |
contents.add(createButton(i18nManager.getTranslation("guardar"), "save.png", ACTION_SAVE, KeyEvent.CTRL_MASK + KeyEvent.VK_S));
|
|
358 |
contents.add(createButton(i18nManager.getTranslation("nuevo"), "new.png", ACTION_NEW, KeyEvent.VK_F6));
|
|
359 |
contents.add(createButton(i18nManager.getTranslation("cancelar nuevo"), "cancelnew.png", ACTION_CANCEL_NEW, KeyEvent.VK_F12));
|
|
360 |
contents.add(createButton(i18nManager.getTranslation("borrar"), "delete.png", ACTION_DELETE, KeyEvent.SHIFT_MASK + KeyEvent.VK_F2));
|
|
361 |
contents.add(createButton(i18nManager.getTranslation("search"), "search.png", ACTION_SEARCH, KeyEvent.CTRL_MASK + KeyEvent.VK_F));
|
|
351 |
theContents.add(createButton(i18nManager.getTranslation("guardar"), "form-buttonbar-save", ACTION_SAVE, KeyEvent.CTRL_MASK + KeyEvent.VK_S));
|
|
352 |
theContents.add(createButton(i18nManager.getTranslation("nuevo"), "form-buttonbar-new", ACTION_NEW, KeyEvent.VK_F6));
|
|
353 |
theContents.add(createButton(i18nManager.getTranslation("cancelar nuevo"), "form-buttonbar-cancelnew", ACTION_CANCEL_NEW, KeyEvent.VK_F12));
|
|
354 |
theContents.add(createButton(i18nManager.getTranslation("borrar"), "form-buttonbar-delete", ACTION_DELETE, KeyEvent.SHIFT_MASK + KeyEvent.VK_F2));
|
|
355 |
theContents.add(createButton(i18nManager.getTranslation("search"), "form-buttonbar-search", ACTION_SEARCH, KeyEvent.CTRL_MASK + KeyEvent.VK_F));
|
|
362 | 356 |
|
363 |
return contents;
|
|
357 |
return theContents;
|
|
364 | 358 |
} |
365 | 359 |
|
366 | 360 |
private void doGoRecord() { |
... | ... | |
399 | 393 |
|
400 | 394 |
private JComponent createButton(final String tip, final String image, final String action, int mnemonic) { |
401 | 395 |
int actionid = this.actionNameToId.get(action); |
402 |
|
|
403 |
URL url = this.getClass().getClassLoader().getResource("org/gvsig/tools/dynform/impl/" + image); |
|
404 |
Icon icon = new ImageIcon(url); |
|
396 |
|
|
397 |
IconTheme iconTheme = ToolsSwingLocator.getIconThemeManager().getCurrent(); |
|
398 |
ImageIcon icon = iconTheme.get(image); |
|
399 |
// |
|
400 |
// URL url = this.getClass().getClassLoader().getResource("org/gvsig/tools/dynform/impl/images/" + image+".png"); |
|
401 |
// Icon icon = new ImageIcon(url); |
|
405 | 402 |
JButton button = new JButton(icon); |
406 | 403 |
if (mnemonic != KeyEvent.VK_UNDEFINED) { |
407 | 404 |
button.setMnemonic(mnemonic); |
... | ... | |
412 | 409 |
button.setContentAreaFilled(false); |
413 | 410 |
button.setToolTipText(tip); |
414 | 411 |
button.setCursor(new Cursor(Cursor.HAND_CURSOR)); |
415 |
button.addActionListener(new ActionListener() { |
|
416 |
|
|
417 |
@Override |
|
418 |
public void actionPerformed(ActionEvent ae) { |
|
419 |
fireEvent(action, null); |
|
420 |
} |
|
421 |
}); |
|
412 |
button.addActionListener((ActionEvent ae) -> { fireEvent(action, null); }); |
|
422 | 413 |
this.buttons[actionid] = button; |
423 | 414 |
return button; |
424 | 415 |
} |
... | ... | |
457 | 448 |
public void setEnabled(String id, boolean enabled) { |
458 | 449 |
Integer x = this.actionNameToId.get(id); |
459 | 450 |
if( x!=null ) { // Ojo, si quito el intValue a veces falla |
460 |
this.buttons[x.intValue()].setEnabled(enabled);
|
|
451 |
this.buttons[x].setEnabled(enabled); |
|
461 | 452 |
return; |
462 | 453 |
} |
463 | 454 |
JButton button = this.otherButtons.get(id); |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/dynobject/impl/DefaultDynField.java | ||
---|---|---|
702 | 702 |
} |
703 | 703 |
v = (Comparable) value; |
704 | 704 |
boolean ok = false; |
705 |
for (DynObjectValueItem availableValue : this.availableValues) { |
|
706 |
if (v.compareTo(availableValue.getValue()) == 0) { |
|
707 |
ok = true; |
|
708 |
break; |
|
705 |
DynObjectValueItem[] theAvailableValues = this.getAvailableValues(); |
|
706 |
if( theAvailableValues!=null ) { |
|
707 |
for (DynObjectValueItem availableValue : theAvailableValues) { |
|
708 |
if (v.compareTo(availableValue.getValue()) == 0) { |
|
709 |
ok = true; |
|
710 |
break; |
|
711 |
} |
|
709 | 712 |
} |
713 |
if (!ok) { |
|
714 |
throw new DynFieldValidateException(value, this); |
|
715 |
} |
|
710 | 716 |
} |
711 |
if (!ok) { |
|
712 |
throw new DynFieldValidateException(value, this); |
|
713 |
} |
|
714 | 717 |
} else if (this.getMaxValue() != null && this.getMinValue() != null) { |
715 | 718 |
if (!(value instanceof Comparable)) { |
716 | 719 |
throw new DynFieldValidateException(value, this); |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/dataTypes/DataTypeUtils.java | ||
---|---|---|
111 | 111 |
return (boolean) coerce(DataTypes.BOOLEAN, value, defaultValue); |
112 | 112 |
} |
113 | 113 |
|
114 |
public static boolean isTrue(Object value, boolean defaultValue) { |
|
115 |
return (boolean) coerce(DataTypes.BOOLEAN, value, defaultValue); |
|
116 |
} |
|
117 |
|
|
118 |
public static boolean isFalse(Object value, boolean defaultValue) { |
|
119 |
return ! (boolean) coerce(DataTypes.BOOLEAN, value, defaultValue); |
|
120 |
} |
|
121 |
|
|
114 | 122 |
public static float toFloat(Object value, float defaultValue) { |
115 | 123 |
return (float) coerce(DataTypes.FLOAT, value, defaultValue); |
116 | 124 |
} |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/dataTypes/DataTypes.java | ||
---|---|---|
66 | 66 |
|
67 | 67 |
public static final int OBJECT = 0x40; |
68 | 68 |
|
69 |
public static final int MAX_TYPE_VALUE = 0x70;
|
|
69 |
public static final int MAX_TYPE_VALUE = 0x7f;
|
|
70 | 70 |
|
71 | 71 |
public static final String SUBTYPE_FILE = "File"; |
72 | 72 |
public static final String SUBTYPE_FOLDER = "Folder"; |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/dataTypes/impl/DefaultDataTypesManager.java | ||
---|---|---|
28 | 28 |
import java.net.URI; |
29 | 29 |
import java.net.URL; |
30 | 30 |
import java.util.ArrayList; |
31 |
import java.util.Date; |
|
32 | 31 |
import java.util.Iterator; |
33 | 32 |
import java.util.List; |
34 | 33 |
import java.util.Locale; |
... | ... | |
211 | 210 |
// Check if the type has been already registereds |
212 | 211 |
get(type); |
213 | 212 |
throw new IllegalArgumentException("type " |
214 |
+ Integer.toHexString(type).toUpperCase() + ", name " + name |
|
215 |
+ ", already registered as " + getTypeName(type) + ".");
|
|
213 |
+ Integer.toHexString(type).toUpperCase() + ", name '" + name
|
|
214 |
+ "', already registered as '" + getTypeName(type) + "'.");
|
|
216 | 215 |
} catch (IllegalArgumentException e) { |
217 | 216 |
// OK, the type is still not registered. |
218 | 217 |
} |
... | ... | |
222 | 221 |
flags, max_precision, default_precision, default_scale |
223 | 222 |
); |
224 | 223 |
types[type] = dataType; |
225 |
LOG.info("Registered data type {}.", dataType.toString());
|
|
224 |
LOG.debug("Registered data type {}.", dataType.toString());
|
|
226 | 225 |
return dataType; |
227 | 226 |
} |
228 | 227 |
|
... | ... | |
253 | 252 |
} |
254 | 253 |
|
255 | 254 |
if (dataType == null) { |
256 |
throw new IllegalArgumentException("DataType " + type |
|
257 |
+ " not registered"); |
|
255 |
throw new IllegalArgumentException("DataType " + type + " not registered"); |
|
258 | 256 |
} |
259 | 257 |
|
260 | 258 |
return dataType; |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/DropDownButton.java | ||
---|---|---|
21 | 21 |
import javax.swing.JPopupMenu; |
22 | 22 |
import javax.swing.UIManager; |
23 | 23 |
import org.apache.commons.lang3.StringUtils; |
24 |
import org.gvsig.tools.swing.api.ActionListenerSupport; |
|
24 | 25 |
import org.gvsig.tools.swing.api.DropDown; |
25 | 26 |
import org.gvsig.tools.util.LabeledValue; |
26 | 27 |
|
... | ... | |
43 | 44 |
private boolean visibleDropdownArrow = true; |
44 | 45 |
private final Color warningBackgroundColor; |
45 | 46 |
private final Color backgroundColor; |
47 |
private final ActionListenerSupport dropdownListsnersHelper; |
|
46 | 48 |
|
47 |
|
|
48 | 49 |
public DropDownButton(final AbstractButton button, Color warningBackgroundColor) { |
49 | 50 |
this.component = button; |
50 | 51 |
this.itemListeners = new HashSet<>(); |
52 |
this.dropdownListsnersHelper = new DefaultActionListenerSupport(); |
|
51 | 53 |
this.component.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); |
52 | 54 |
this.component.addMouseListener(new MouseAdapter() { |
53 | 55 |
@Override |
... | ... | |
62 | 64 |
if( !s.endsWith(" \u25BE")) { |
63 | 65 |
this.component.setText(s+" \u25BE"); |
64 | 66 |
} |
65 |
this.component.addActionListener(new ActionListener() { |
|
66 |
@Override |
|
67 |
public void actionPerformed(ActionEvent e) { |
|
68 |
doShowPopup(); |
|
69 |
} |
|
67 |
this.component.addActionListener((ActionEvent e) -> { |
|
68 |
doShowPopup(); |
|
70 | 69 |
}); |
71 | 70 |
} |
72 | 71 |
|
... | ... | |
121 | 120 |
} |
122 | 121 |
|
123 | 122 |
private void doShowPopup() { |
123 |
ActionEvent ev = new ActionEvent(this, 0, null); |
|
124 |
dropdownListsnersHelper.fireActionEvent(ev); |
|
124 | 125 |
if (model == null) { |
125 | 126 |
return; |
126 | 127 |
} |
... | ... | |
269 | 270 |
this.itemListeners.remove(l); |
270 | 271 |
} |
271 | 272 |
|
273 |
@Override |
|
274 |
public void addDropdownListener(ActionListener listener) { |
|
275 |
this.dropdownListsnersHelper.addActionListener(listener); |
|
276 |
} |
|
277 |
|
|
278 |
@Override |
|
279 |
public void removeDropdownListener(ActionListener listener) { |
|
280 |
this.dropdownListsnersHelper.removeActionListener(listener); |
|
281 |
} |
|
272 | 282 |
} |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/ClipboardMonitor.java | ||
---|---|---|
1 |
package org.gvsig.tools.swing.impl; |
|
2 |
|
|
3 |
import java.awt.Toolkit; |
|
4 |
import java.awt.datatransfer.Clipboard; |
|
5 |
import java.awt.datatransfer.ClipboardOwner; |
|
6 |
import java.awt.datatransfer.DataFlavor; |
|
7 |
import java.awt.datatransfer.FlavorEvent; |
|
8 |
import java.awt.datatransfer.FlavorListener; |
|
9 |
import java.awt.datatransfer.StringSelection; |
|
10 |
import java.awt.datatransfer.Transferable; |
|
11 |
import java.util.HashMap; |
|
12 |
import java.util.Map; |
|
13 |
import java.util.Objects; |
|
14 |
import java.util.Observable; |
|
15 |
import java.util.Observer; |
|
16 |
import org.apache.commons.lang3.StringUtils; |
|
17 |
import org.slf4j.Logger; |
|
18 |
import org.slf4j.LoggerFactory; |
|
19 |
|
|
20 |
/** |
|
21 |
* |
|
22 |
* @author gvSIG Team |
|
23 |
*/ |
|
24 |
@SuppressWarnings(value = {"UseSpecificCatch"}) |
|
25 |
public class ClipboardMonitor extends Observable implements ClipboardOwner { |
|
26 |
|
|
27 |
// log4j.logger.org.gvsig.tools.swing.impl.ClipboardMonitor=DEBUG |
|
28 |
|
|
29 |
private static final Logger LOGGER = LoggerFactory.getLogger(ClipboardMonitor.class); |
|
30 |
|
|
31 |
private static ClipboardMonitor monitor = null; |
|
32 |
|
|
33 |
private final Map<Observer,FlavorListener> listeners = new HashMap<>(); |
|
34 |
|
|
35 |
public ClipboardMonitor() { |
|
36 |
gainOwnership(); |
|
37 |
} |
|
38 |
|
|
39 |
public Clipboard getClipboard() { |
|
40 |
Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard(); |
|
41 |
return clip; |
|
42 |
} |
|
43 |
|
|
44 |
private void gainOwnership() { |
|
45 |
LOGGER.debug("gainOwnership"); |
|
46 |
Clipboard clip = getClipboard(); |
|
47 |
try { |
|
48 |
Transferable content = clip.getContents(null); |
|
49 |
clip.setContents(content, this); |
|
50 |
setChanged(); |
|
51 |
notifyObservers(content); |
|
52 |
} catch (Exception ex) { |
|
53 |
LOGGER.debug("Can't gain clipboard ownership",ex); |
|
54 |
} |
|
55 |
} |
|
56 |
|
|
57 |
@Override |
|
58 |
public void lostOwnership(Clipboard clipboard, Transferable contents) { |
|
59 |
LOGGER.debug("lostOwnership"); |
|
60 |
new Thread(() -> { |
|
61 |
try { |
|
62 |
Thread.sleep(200); |
|
63 |
gainOwnership(); |
|
64 |
} catch (Exception e) { |
|
65 |
LOGGER.debug("Retry gain clipboard ownership failed",e); |
|
66 |
} |
|
67 |
}).start(); |
|
68 |
} |
|
69 |
|
|
70 |
public static final ClipboardMonitor getMonitor() { |
|
71 |
if (monitor == null) { |
|
72 |
monitor = new ClipboardMonitor(); |
|
73 |
} |
|
74 |
return monitor; |
|
75 |
} |
|
76 |
|
|
77 |
public void put(String data) { |
|
78 |
LOGGER.debug("put "+StringUtils.abbreviate(data, 30)); |
|
79 |
StringSelection ss = new StringSelection(data); |
|
80 |
Clipboard clip = getClipboard(); |
|
81 |
|
|
82 |
ClipboardOwner owner = ss; // use this as owner don't fire events to observers ?? |
|
83 |
clip.setContents(ss, owner); |
|
84 |
} |
|
85 |
|
|
86 |
public String getString() { |
|
87 |
LOGGER.debug("getString"); |
|
88 |
try { |
|
89 |
Clipboard clip = getClipboard(); |
|
90 |
Transferable t = clip.getContents(null); |
|
91 |
if(t.isDataFlavorSupported(DataFlavor.stringFlavor)) { |
|
92 |
return (String) (t.getTransferData(DataFlavor.stringFlavor)); |
|
93 |
} |
|
94 |
} catch (Exception ex) { |
|
95 |
LOGGER.debug("getString return null",ex); |
|
96 |
return null; |
|
97 |
} |
|
98 |
LOGGER.debug("getString return null"); |
|
99 |
return null; |
|
100 |
} |
|
101 |
|
|
102 |
public boolean hasString() { |
|
103 |
LOGGER.debug("hasString"); |
|
104 |
try { |
|
105 |
Clipboard clip = getClipboard(); |
|
106 |
boolean available = clip.isDataFlavorAvailable(DataFlavor.stringFlavor); |
|
107 |
return !available; |
|
108 |
} catch (Exception ex) { |
|
109 |
LOGGER.debug("hasString error, return true",ex); |
|
110 |
return true; |
|
111 |
} |
|
112 |
} |
|
113 |
|
|
114 |
@Override |
|
115 |
public synchronized void addObserver(Observer o) { |
|
116 |
LOGGER.debug("addObserver "+Objects.toString(o)); |
|
117 |
if( o==null || listeners.containsKey(o) ) { |
|
118 |
return; |
|
119 |
} |
|
120 |
Clipboard clip = getClipboard(); |
|
121 |
FlavorListener listener = (FlavorEvent e) -> { o.update(monitor, null); }; |
|
122 |
super.addObserver(o); |
|
123 |
clip.addFlavorListener(listener); |
|
124 |
listeners.put(o, listener); |
|
125 |
} |
|
126 |
|
|
127 |
@Override |
|
128 |
public synchronized void deleteObserver(Observer o) { |
|
129 |
LOGGER.debug("deleteObserver"+Objects.toString(o)); |
|
130 |
if( o==null ) { |
|
131 |
return; |
|
132 |
} |
|
133 |
Clipboard clip = getClipboard(); |
|
134 |
FlavorListener listener = listeners.get(o); |
|
135 |
super.deleteObserver(o); |
|
136 |
listeners.remove(o); |
|
137 |
if( listener==null ) { |
|
138 |
return; |
|
139 |
} |
|
140 |
clip.removeFlavorListener(listener); |
|
141 |
} |
|
142 |
|
|
143 |
} |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/DefaultToolsSwingManager.java | ||
---|---|---|
4 | 4 |
import java.awt.Color; |
5 | 5 |
import java.awt.Component; |
6 | 6 |
import java.awt.Dimension; |
7 |
import java.awt.Toolkit; |
|
8 |
import java.awt.datatransfer.DataFlavor; |
|
9 |
import java.awt.datatransfer.StringSelection; |
|
10 |
import java.awt.datatransfer.Transferable; |
|
11 | 7 |
import java.awt.event.ActionListener; |
12 | 8 |
import java.awt.image.BufferedImage; |
13 | 9 |
import java.awt.image.WritableRaster; |
... | ... | |
647 | 643 |
return new DropDownLabelIcon(lblNull, this.getWarningBackgroundColor()); |
648 | 644 |
} |
649 | 645 |
|
650 |
/** |
|
651 |
* Stores the provided text data on the clipboard. |
|
652 |
* |
|
653 |
* @param data |
|
654 |
* An String containing the data to be stored |
|
655 |
* on the clipboard. |
|
656 |
*/ |
|
657 | 646 |
@Override |
658 | 647 |
public void putInClipboard(String data) { |
659 |
StringSelection ss = new StringSelection(data); |
|
660 |
|
|
661 |
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, ss); |
|
648 |
ClipboardMonitor.getMonitor().put(data); |
|
662 | 649 |
} |
663 | 650 |
|
664 |
/** |
|
665 |
* Gets text data from the Clipboard, if available. |
|
666 |
* |
|
667 |
* @return An String containing the clipboard's data, or <code>null</code> |
|
668 |
* if the data was not available. |
|
669 |
*/ |
|
670 | 651 |
@Override |
671 | 652 |
public String getFromClipboard() { |
672 |
|
|
673 |
try { |
|
674 |
Transferable t = Toolkit.getDefaultToolkit() |
|
675 |
.getSystemClipboard() |
|
676 |
.getContents(null); |
|
677 |
if(t.isDataFlavorSupported(DataFlavor.stringFlavor)) { |
|
678 |
return (String) (t.getTransferData(DataFlavor.stringFlavor)); |
|
679 |
} |
|
680 |
} catch (Exception e) { |
|
681 |
return null; |
|
682 |
} |
|
683 |
return null; |
|
653 |
return ClipboardMonitor.getMonitor().getString(); |
|
684 | 654 |
} |
685 | 655 |
|
656 |
@Override |
|
686 | 657 |
public boolean isClipboardEmpty() { |
687 |
|
|
688 |
try { |
|
689 |
boolean available = Toolkit.getDefaultToolkit() |
|
690 |
.getSystemClipboard().isDataFlavorAvailable(DataFlavor.stringFlavor); |
|
691 |
return !available; |
|
692 |
} catch (Exception e) { |
|
693 |
return true; |
|
694 |
} |
|
658 |
return ClipboardMonitor.getMonitor().hasString(); |
|
695 | 659 |
} |
696 | 660 |
|
697 | 661 |
@Override |
662 |
public void addClipboardObserver(java.util.Observer observer) { |
|
663 |
ClipboardMonitor.getMonitor().addObserver(observer); |
|
664 |
} |
|
665 |
|
|
666 |
@Override |
|
667 |
public void deleteClipboardObserver(java.util.Observer observer) { |
|
668 |
ClipboardMonitor.getMonitor().deleteObserver(observer); |
|
669 |
} |
|
670 |
|
|
671 |
@Override |
|
698 | 672 |
public JSpinner spinnerOfNumber(JSpinner spinner, Number value) { |
699 | 673 |
return NullableSpinnerUtils.ofNumber(spinner, value); |
700 | 674 |
} |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/coerce/CoerceToColor.java | ||
---|---|---|
40 | 40 |
private static Map<String, Color> colorTable = null; |
41 | 41 |
|
42 | 42 |
@Override |
43 |
@SuppressWarnings("UseSpecificCatch") |
|
43 | 44 |
public Object coerce(Object value, CoercionContext context) throws CoercionException { |
44 | 45 |
if (value == null || value instanceof Color) { |
45 | 46 |
return value; |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/DropDownComboBox.java | ||
---|---|---|
1 | 1 |
package org.gvsig.tools.swing.impl; |
2 | 2 |
|
3 | 3 |
import java.awt.Color; |
4 |
import java.awt.event.ActionEvent; |
|
5 |
import java.awt.event.ActionListener; |
|
4 | 6 |
import java.awt.event.ItemListener; |
5 | 7 |
import java.util.List; |
6 | 8 |
import java.util.Objects; |
... | ... | |
8 | 10 |
import javax.swing.ImageIcon; |
9 | 11 |
import javax.swing.JComboBox; |
10 | 12 |
import javax.swing.JComponent; |
13 |
import javax.swing.event.PopupMenuEvent; |
|
14 |
import javax.swing.event.PopupMenuListener; |
|
15 |
import org.gvsig.tools.swing.api.ActionListenerSupport; |
|
11 | 16 |
import org.gvsig.tools.swing.api.DropDown; |
12 | 17 |
import org.gvsig.tools.util.LabeledValue; |
13 | 18 |
|
... | ... | |
22 | 27 |
private boolean readonly; |
23 | 28 |
private final Color warningBackgroundColor; |
24 | 29 |
private final Color backgroundColor; |
30 |
private final ActionListenerSupport dropdownListsnersHelper; |
|
25 | 31 |
|
26 | 32 |
public DropDownComboBox(JComboBox combo, Color warningBackgroundColor) { |
27 | 33 |
this.combo = combo; |
28 | 34 |
this.warningBackgroundColor = warningBackgroundColor; |
29 | 35 |
this.backgroundColor = combo.getBackground(); |
36 |
this.dropdownListsnersHelper = new DefaultActionListenerSupport(); |
|
37 |
this.combo.addPopupMenuListener(new PopupMenuListener() { |
|
38 |
@Override |
|
39 |
public void popupMenuWillBecomeVisible(PopupMenuEvent e) { |
|
40 |
ActionEvent ev = new ActionEvent(this, 0, null); |
|
41 |
dropdownListsnersHelper.fireActionEvent(ev); |
|
42 |
} |
|
43 |
|
|
44 |
@Override |
|
45 |
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { |
|
46 |
} |
|
47 |
|
|
48 |
@Override |
|
49 |
public void popupMenuCanceled(PopupMenuEvent e) { |
|
50 |
} |
|
51 |
}); |
|
30 | 52 |
} |
31 | 53 |
|
32 | 54 |
@Override |
... | ... | |
135 | 157 |
return this.icons; |
136 | 158 |
} |
137 | 159 |
|
160 |
public void addDropdownListener(ActionListener listener) { |
|
161 |
this.dropdownListsnersHelper.addActionListener(listener); |
|
162 |
} |
|
163 |
|
|
164 |
public void removeDropdownListener(ActionListener listener) { |
|
165 |
this.dropdownListsnersHelper.removeActionListener(listener); |
|
166 |
} |
|
138 | 167 |
} |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.impl/src/main/java/org/gvsig/tools/swing/impl/DropDownLabel.java | ||
---|---|---|
24 | 24 |
import javax.swing.JPopupMenu; |
25 | 25 |
import javax.swing.UIManager; |
26 | 26 |
import org.apache.commons.lang3.StringUtils; |
27 |
import org.gvsig.tools.swing.api.ActionListenerSupport; |
|
27 | 28 |
import org.gvsig.tools.swing.api.DropDown; |
28 | 29 |
import org.gvsig.tools.util.LabeledValue; |
29 | 30 |
|
... | ... | |
46 | 47 |
private Color enabledForeground = null; |
47 | 48 |
private final Color backgroundColor; |
48 | 49 |
private final Color warningBackgroundColor; |
50 |
private final ActionListenerSupport dropdownListsnersHelper; |
|
49 | 51 |
|
50 | 52 |
|
51 | 53 |
public DropDownLabel(final JComponent component, Color warningBackgroundColor) { |
52 | 54 |
this.component = component; |
53 | 55 |
this.itemListeners = new HashSet<>(); |
56 |
this.dropdownListsnersHelper = new DefaultActionListenerSupport(); |
|
54 | 57 |
this.component.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); |
55 | 58 |
this.component.addMouseListener(new MouseAdapter() { |
56 | 59 |
@Override |
... | ... | |
129 | 132 |
} |
130 | 133 |
|
131 | 134 |
private void doShowPopup() { |
135 |
ActionEvent ev = new ActionEvent(this, 0, null); |
|
136 |
dropdownListsnersHelper.fireActionEvent(ev); |
|
132 | 137 |
if (model == null) { |
133 | 138 |
return; |
134 | 139 |
} |
... | ... | |
280 | 285 |
public void removeItemListener(ItemListener l) { |
281 | 286 |
this.itemListeners.remove(l); |
282 | 287 |
} |
288 |
|
|
289 |
@Override |
|
290 |
public void addDropdownListener(ActionListener listener) { |
|
291 |
this.dropdownListsnersHelper.addActionListener(listener); |
|
292 |
} |
|
283 | 293 |
|
294 |
@Override |
|
295 |
public void removeDropdownListener(ActionListener listener) { |
|
296 |
this.dropdownListsnersHelper.removeActionListener(listener); |
|
297 |
} |
|
298 |
|
|
284 | 299 |
} |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/ToolsSwingUtils.java | ||
---|---|---|
66 | 66 |
} |
67 | 67 |
return dim; |
68 | 68 |
} |
69 |
|
|
69 | 70 |
public static Dimension ensureMaxRows(JComponent comp, int rows) { |
70 | 71 |
Dimension dim = comp.getPreferredSize(); |
71 | 72 |
int h = rows2px(rows); |
... | ... | |
121 | 122 |
} |
122 | 123 |
return dim; |
123 | 124 |
} |
125 |
|
|
126 |
public static Dimension ensureRowsCols(Dimension dim, int minRows, int minCols, int maxRows, int maxCols) { |
|
127 |
if( minRows>0 ) { |
|
128 |
int minh = rows2px(minRows); |
|
129 |
if( dim.height < minh ) { |
|
130 |
dim.height = minh; |
|
131 |
} |
|
132 |
} |
|
133 |
if( minCols > 0 ) { |
|
134 |
int minw = cols2px(minCols); |
|
135 |
if( dim.width < minw ) { |
|
136 |
dim.width = minw; |
|
137 |
} |
|
138 |
} |
|
139 |
if( maxRows>0 ) { |
|
140 |
int maxh = rows2px(maxRows); |
|
141 |
if( dim.height > maxh ) { |
|
142 |
dim.height = maxh; |
|
143 |
} |
|
144 |
} |
|
145 |
if( maxCols > 0 ) { |
|
146 |
int maxw = cols2px(maxCols); |
|
147 |
if( dim.width > maxw ) { |
|
148 |
dim.width = maxw; |
|
149 |
} |
|
150 |
} |
|
151 |
return dim; |
|
152 |
} |
|
153 |
|
|
154 |
public static Dimension ensureRowsCols(JComponent comp, int minRows, int minCols, int maxRows, int maxCols) { |
|
155 |
Dimension dim = comp.getPreferredSize(); |
|
156 |
comp.setPreferredSize(ensureRowsCols(dim, minRows, minCols, maxRows, maxCols)); |
|
157 |
return dim; |
|
158 |
} |
|
159 |
|
|
124 | 160 |
} |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/ToolsSwingManager.java | ||
---|---|---|
304 | 304 |
|
305 | 305 |
public boolean isClipboardEmpty(); |
306 | 306 |
|
307 |
public void addClipboardObserver(java.util.Observer observer); |
|
308 |
|
|
309 |
public void deleteClipboardObserver(java.util.Observer observer); |
|
310 |
|
|
307 | 311 |
public JSpinner spinnerOfNumber(JSpinner spinner, Number value); |
308 | 312 |
|
309 | 313 |
public JSpinner spinnerOfNumber(JSpinner spinner, Class valueClass); |
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/DropDown.java | ||
---|---|---|
1 | 1 |
package org.gvsig.tools.swing.api; |
2 | 2 |
|
3 | 3 |
import java.awt.ItemSelectable; |
4 |
import java.awt.event.ActionListener; |
|
4 | 5 |
import java.util.List; |
5 | 6 |
import javax.swing.ComboBoxModel; |
6 | 7 |
import javax.swing.ImageIcon; |
... | ... | |
37 | 38 |
|
38 | 39 |
public boolean isVisibleDropdownArrow(); |
39 | 40 |
|
41 |
public void addDropdownListener(ActionListener listener); |
|
42 |
|
|
43 |
public void removeDropdownListener(ActionListener listener); |
|
44 |
|
|
40 | 45 |
} |
Also available in: Unified diff