svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.swing / org.gvsig.fmap.dal.swing.impl / src / main / java / org / gvsig / fmap / dal / swing / impl / dataStoreParameters / DefaultDataStoreParametersPanelManager.java @ 44152
History | View | Annotate | Download (4.44 KB)
1 | 43208 | jjdelcerro | package org.gvsig.fmap.dal.swing.impl.dataStoreParameters; |
---|---|---|---|
2 | 42754 | jjdelcerro | |
3 | import java.awt.event.ActionEvent; |
||
4 | import java.awt.event.ActionListener; |
||
5 | import java.util.ArrayList; |
||
6 | import java.util.List; |
||
7 | import org.apache.commons.lang3.StringUtils; |
||
8 | 43208 | jjdelcerro | import org.gvsig.fmap.dal.swing.dataStoreParameters.DataStoreParametersPanel; |
9 | import org.gvsig.fmap.dal.swing.dataStoreParameters.DataStoreParametersPanelFactory; |
||
10 | import org.gvsig.fmap.dal.swing.dataStoreParameters.DataStoreParametersPanelManager; |
||
11 | 42754 | jjdelcerro | import org.gvsig.tools.ToolsLocator; |
12 | import org.gvsig.tools.dynobject.DynObject; |
||
13 | import org.gvsig.tools.i18n.I18nManager; |
||
14 | import org.gvsig.tools.swing.api.ToolsSwingLocator; |
||
15 | import org.gvsig.tools.swing.api.windowmanager.Dialog; |
||
16 | import org.gvsig.tools.swing.api.windowmanager.WindowManager; |
||
17 | import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2; |
||
18 | import org.slf4j.Logger; |
||
19 | import org.slf4j.LoggerFactory; |
||
20 | |||
21 | |||
22 | 43208 | jjdelcerro | public class DefaultDataStoreParametersPanelManager implements DataStoreParametersPanelManager { |
23 | 42754 | jjdelcerro | |
24 | 43208 | jjdelcerro | private static Logger logger = LoggerFactory.getLogger(DefaultDataStoreParametersPanelManager.class); |
25 | 42754 | jjdelcerro | |
26 | 43208 | jjdelcerro | private List<DataStoreParametersPanelFactory> factories = null; |
27 | 42754 | jjdelcerro | |
28 | 43208 | jjdelcerro | public DefaultDataStoreParametersPanelManager() {
|
29 | 42754 | jjdelcerro | this.factories = new ArrayList<>(); |
30 | } |
||
31 | |||
32 | @Override
|
||
33 | 43208 | jjdelcerro | public void registerFactory(DataStoreParametersPanelFactory factory) { |
34 | 42754 | jjdelcerro | if( this.factories.contains(factory) ) { |
35 | return;
|
||
36 | } |
||
37 | this.factories.add(factory);
|
||
38 | } |
||
39 | |||
40 | @Override
|
||
41 | 43208 | jjdelcerro | public DataStoreParametersPanelFactory getFactory(DynObject parameters) {
|
42 | DataStoreParametersPanelFactory factory = null;
|
||
43 | for (DataStoreParametersPanelFactory currentFactory : factories) {
|
||
44 | 42754 | jjdelcerro | if( currentFactory.canBeApplied(parameters) ) {
|
45 | if( factory == null ) { |
||
46 | factory = currentFactory; |
||
47 | } else if( factory.getPriority() < currentFactory.getPriority() ) { |
||
48 | factory = currentFactory; |
||
49 | } |
||
50 | } |
||
51 | } |
||
52 | return factory;
|
||
53 | } |
||
54 | |||
55 | @Override
|
||
56 | 43209 | jjdelcerro | public DataStoreParametersPanel createDataStoreParametersPanel(DynObject parameters) {
|
57 | 43208 | jjdelcerro | DataStoreParametersPanelFactory factory = this.getFactory(parameters);
|
58 | 42754 | jjdelcerro | if( factory == null ) { |
59 | return null; |
||
60 | } |
||
61 | return factory.create(parameters);
|
||
62 | } |
||
63 | |||
64 | @Override
|
||
65 | 43632 | jjdelcerro | public int showPropertiesDialog(final DynObject parameters) { |
66 | 42775 | jjdelcerro | |
67 | 43209 | jjdelcerro | final DataStoreParametersPanel panel = this.createDataStoreParametersPanel(parameters); |
68 | 43645 | jjdelcerro | return this.showPropertiesDialog(parameters, panel); |
69 | 42775 | jjdelcerro | } |
70 | |||
71 | @Override
|
||
72 | 43632 | jjdelcerro | public int showPropertiesDialog(final DynObject parameters, final DataStoreParametersPanel panel) { |
73 | 42754 | jjdelcerro | I18nManager i18nManager = ToolsLocator.getI18nManager(); |
74 | |||
75 | String title = parameters.getDynClass().getDescription();
|
||
76 | if( !StringUtils.isEmpty(title) ) {
|
||
77 | title = parameters.getDynClass().getName(); |
||
78 | } |
||
79 | |||
80 | WindowManager_v2 winmanager = (WindowManager_v2) ToolsSwingLocator.getWindowManager(); |
||
81 | Dialog dialog = winmanager.createDialog(
|
||
82 | panel.asJComponent(), |
||
83 | title, |
||
84 | null,
|
||
85 | WindowManager_v2.BUTTONS_APPLY_OK_CANCEL |
||
86 | ); |
||
87 | 43208 | jjdelcerro | if( panel instanceof DataStoreDynObjectParametersPanel ) { |
88 | 42754 | jjdelcerro | dialog.setButtons(WindowManager_v2.BUTTONS_OK_CANCEL); |
89 | } else {
|
||
90 | dialog.setButtonLabel( |
||
91 | WindowManager_v2.BUTTON_APPLY, |
||
92 | i18nManager.getTranslation("Avanzado")
|
||
93 | ); |
||
94 | } |
||
95 | dialog.addActionListener(new ActionListener() { |
||
96 | @Override
|
||
97 | public void actionPerformed(ActionEvent ae) { |
||
98 | switch(ae.getID() ) {
|
||
99 | case WindowManager_v2.BUTTON_APPLY:
|
||
100 | showAdvancedPropertiesDialog(parameters); |
||
101 | break;
|
||
102 | case WindowManager_v2.BUTTON_OK:
|
||
103 | panel.fetchParameters(parameters); |
||
104 | break;
|
||
105 | case WindowManager_v2.BUTTON_CANCEL:
|
||
106 | break;
|
||
107 | } |
||
108 | } |
||
109 | }); |
||
110 | dialog.show(WindowManager.MODE.DIALOG); |
||
111 | 43632 | jjdelcerro | return dialog.getAction();
|
112 | 42754 | jjdelcerro | } |
113 | |||
114 | private void showAdvancedPropertiesDialog(DynObject parameters) { |
||
115 | 43208 | jjdelcerro | final DataStoreParametersPanel panel = new DataStoreDynObjectParametersPanel(parameters); |
116 | this.showPropertiesDialog(parameters, panel);
|
||
117 | 42754 | jjdelcerro | } |
118 | } |