Statistics
| Revision:

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 @ 43632

History | View | Annotate | Download (4.44 KB)

1
package org.gvsig.fmap.dal.swing.impl.dataStoreParameters;
2

    
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
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
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
public class DefaultDataStoreParametersPanelManager implements DataStoreParametersPanelManager {
23

    
24
    private static Logger logger = LoggerFactory.getLogger(DefaultDataStoreParametersPanelManager.class);
25
            
26
    private List<DataStoreParametersPanelFactory> factories = null;
27
    
28
    public DefaultDataStoreParametersPanelManager() {
29
        this.factories = new ArrayList<>();
30
    }
31
    
32
    @Override
33
    public void registerFactory(DataStoreParametersPanelFactory factory) {
34
        if( this.factories.contains(factory) ) {
35
            return;
36
        }
37
        this.factories.add(factory);
38
    }
39

    
40
    @Override
41
    public DataStoreParametersPanelFactory getFactory(DynObject parameters) {
42
        DataStoreParametersPanelFactory factory = null;
43
        for (DataStoreParametersPanelFactory currentFactory : factories) {
44
            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
    public DataStoreParametersPanel createDataStoreParametersPanel(DynObject parameters) {
57
        DataStoreParametersPanelFactory factory = this.getFactory(parameters);
58
        if( factory == null ) {
59
            return null;
60
        }
61
        return factory.create(parameters);
62
    }
63
    
64
    @Override
65
    public int showPropertiesDialog(final DynObject parameters) {
66
        
67
        final DataStoreParametersPanel panel = this.createDataStoreParametersPanel(parameters);
68
        this.showPropertiesDialog(parameters, panel);
69
    }
70
    
71
    @Override
72
    public int showPropertiesDialog(final DynObject parameters, final DataStoreParametersPanel panel) {
73
        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
        if( panel instanceof DataStoreDynObjectParametersPanel ) {
88
            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
        return dialog.getAction();
112
    }
113
    
114
    private void showAdvancedPropertiesDialog(DynObject parameters) {
115
        final DataStoreParametersPanel panel =  new DataStoreDynObjectParametersPanel(parameters);
116
        this.showPropertiesDialog(parameters, panel);
117
   }    
118
}