Revision 47232

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.swing/org.gvsig.expressionevaluator.swing.impl/src/main/java/org/gvsig/expressionevaluator/swing/impl/DefaultExpressionPickerController.java
24 24
import org.gvsig.tools.dispose.Disposable;
25 25
import org.gvsig.tools.dispose.DisposeUtils;
26 26
import org.gvsig.tools.i18n.I18nManager;
27
import org.gvsig.tools.swing.api.InitComponentsListener;
27 28
import org.gvsig.tools.swing.api.ToolsSwingLocator;
28 29
import org.gvsig.tools.swing.api.ToolsSwingManager;
29 30
import org.gvsig.tools.swing.api.ToolsSwingUtils;
......
58 59
        }
59 60
    }
60 61
    
61
    private final JButton button;
62
    private final JTextComponent text;
62
    private JButton button;
63
    private JTextComponent text;
63 64
    private Expression value;
64 65
    private ExpressionBuilderConfig config;
65
    private final DefaultExpressionEvaluatorSwingManager manager;
66
    private DefaultExpressionEvaluatorSwingManager manager;
66 67
    private ActionListener buttonAction;
67
    private final JMenuItem menuItem;
68
    private final AbstractAutomaticExpressionChecker automaticExpressionChecker;
68
    private JMenuItem menuItem;
69
    private AbstractAutomaticExpressionChecker automaticExpressionChecker;
69 70
    private boolean returnNullWhenEmptyExpression;
70
    private final HistoryController<Expression> historyController;
71
    private final BookmarksController<Expression> bookmarksController;
72
    private final JButton buttonBookmarks;
73
    private final JButton buttonHistory;
71
    private HistoryController<Expression> historyController;
72
    private BookmarksController<Expression> bookmarksController;
73
    private JButton buttonBookmarks;
74
    private JButton buttonHistory;
74 75
    private ActionListener historyAndBookmarkListener;
75 76
    private JComboBox combo;
76 77
    
......
96 97
            JButton btnHistory,
97 98
            JButton btnBookmarks
98 99
        ) {
100
        this.manager = manager;
101
        this.text = text;
102
        this.button = button;
103
        this.buttonHistory = btnHistory;
104
        this.buttonBookmarks = btnBookmarks;
105

  
106
        createComponents();
107
    }
108
    
109
    private void createComponents() {
110
        ToolsSwingUtils.addInitComponentsListener(this.text, new InitComponentsListener() {
111
            @Override
112
            public void doDisposeComponents() {
113
                disposeComponents();
114
            }
115

  
116
            @Override
117
            public void doInitComponents() {
118
                initComponents();
119
            }
120
        });
121
        
99 122
        ToolsSwingManager swingManager = ToolsSwingLocator.getToolsSwingManager();
100 123
        I18nManager i18n = ToolsLocator.getI18nManager();
101 124

  
102
        this.manager = manager;
103 125
        this.config = new DefaultExpressionBuilderConfig(manager);
104
        this.text = text;
105
        
106
        ToolsSwingUtils.addWindowClosedListener(text, (ActionEvent e) -> {
107
            dispose();
108
        });
109

  
110
        this.button = button;
111
        if(  "...".equals(this.button.getText()) ) {
112
            this.button.setText("");
113
        }
126
        this.returnNullWhenEmptyExpression = true;
114 127
        this.value = null;
115
        this.returnNullWhenEmptyExpression = true;
116
        this.button.setIcon(this.getIcon("picker-expression"));
117 128
        this.buttonAction = (ActionEvent e) -> {
118 129
          doSelectExpression();
119 130
        };
120
        this.button.addActionListener(this.buttonAction);
121
        
122
        swingManager.addClearButton(this.text);
123
        swingManager.setDefaultPopupMenu(this.text);
124
        JPopupMenu popupMenu = this.text.getComponentPopupMenu();
125 131
        this.menuItem = new JMenuItem(i18n.getTranslation("_Show_expression_builder"));
126
        this.menuItem.addActionListener(buttonAction);
127
        popupMenu.add(this.menuItem);
128
        
132

  
129 133
        this.historyAndBookmarkListener = (ActionEvent e) -> {
130 134
          ActionEventWithCurrentValue<Expression> ee = (ActionEventWithCurrentValue<Expression>)e;
131 135
          switch(ee.getID()) {
......
138 142
              break;
139 143
          }
140 144
        };
141
        this.buttonHistory = btnHistory;
142 145
        this.historyController = swingManager.createHistoryController(
143 146
                ExpressionEvaluatorLocator.getManager().getHistory(), 
144
                btnHistory
147
                this.buttonHistory
145 148
        );
146
        this.historyController.addActionListener(historyAndBookmarkListener);
147
        popupMenu.add(this.historyController.createMenu());
148
        
149
        this.buttonBookmarks = btnBookmarks;
149

  
150 150
        this.bookmarksController = swingManager.createBookmarksController(
151 151
                ExpressionEvaluatorLocator.getManager().getBookmarks(), 
152
                btnBookmarks
152
                this.buttonBookmarks
153 153
        );
154
        this.bookmarksController.addActionListener(historyAndBookmarkListener);        
155
        popupMenu.add(this.bookmarksController.createMenu());
156 154

  
157 155
        this.automaticExpressionChecker = new AbstractAutomaticExpressionChecker(config, text) {
158 156
            @Override
......
173 171
                fireChangeEvent();
174 172
            }
175 173
        };
174
        
176 175
    }
177 176
    
177
    private void disposeComponents() {
178
        dispose();
179
    }
180
    
181
    private void initComponents() {
182
        ToolsSwingManager swingManager = ToolsSwingLocator.getToolsSwingManager();
183
        I18nManager i18n = ToolsLocator.getI18nManager();
184

  
185
        
186

  
187
        if(  "...".equals(this.button.getText()) ) {
188
            this.button.setText("");
189
        }
190
        this.button.setIcon(this.getIcon("picker-expression"));
191
        this.button.addActionListener(this.buttonAction);
192
        
193
        swingManager.addClearButton(this.text);
194
        swingManager.setDefaultPopupMenu(this.text);
195
        JPopupMenu popupMenu = this.text.getComponentPopupMenu();
196
        this.menuItem.addActionListener(buttonAction);
197
        popupMenu.add(this.menuItem);
198
        
199
        this.historyController.addActionListener(historyAndBookmarkListener);
200
        popupMenu.add(this.historyController.createMenu());
201
        
202
        this.bookmarksController.addActionListener(historyAndBookmarkListener);        
203
        popupMenu.add(this.bookmarksController.createMenu());
204

  
205
    }
206
    
178 207
    @Override
179 208
    public void dispose() {
180 209
        if(this.buttonAction != null){

Also available in: Unified diff