1 // **********************************************************************
3 // Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved.
5 // This copy of Ice is licensed to you under the terms described in the
6 // ICE_LICENSE file included in this distribution.
8 // **********************************************************************
13 import java
.awt
.event
.WindowAdapter
;
14 import java
.awt
.event
.WindowEvent
;
15 import java
.awt
.event
.ActionEvent
;
16 import java
.awt
.event
.MouseAdapter
;
17 import java
.awt
.event
.MouseEvent
;
20 import javax
.swing
.border
.AbstractBorder
;
21 import javax
.swing
.border
.EmptyBorder
;
22 import javax
.swing
.event
.TreeSelectionEvent
;
23 import javax
.swing
.event
.TreeSelectionListener
;
24 import javax
.swing
.plaf
.SplitPaneUI
;
25 import javax
.swing
.plaf
.basic
.BasicSplitPaneUI
;
26 import javax
.swing
.tree
.TreeCellRenderer
;
27 import javax
.swing
.tree
.TreeSelectionModel
;
28 import javax
.swing
.tree
.TreePath
;
30 import com
.jgoodies
.forms
.factories
.Borders
;
33 import IceGridGUI
.LiveDeployment
.Editor
;
34 import IceGridGUI
.LiveDeployment
.Root
;
35 import IceGridGUI
.LiveDeployment
.TreeNode
;
37 public class LiveDeploymentPane
extends JSplitPane
implements Tab
39 public void updateUI()
42 setEmptyDividerBorder();
45 public void selected()
47 Coordinator c
= _root
.getCoordinator();
51 c
.getShowLiveDeploymentFiltersAction().setEnabled(true);
53 c
.getCloseApplicationAction().setEnabled(false);
54 c
.getSaveAction().setEnabled(false);
55 c
.getSaveToRegistryAction().setEnabled(false);
56 c
.getSaveToFileAction().setEnabled(false);
57 c
.getDiscardUpdatesAction().setEnabled(false);
59 c
.getBackAction().setEnabled(_previousNodes
.size() > 0);
60 c
.getForwardAction().setEnabled(_nextNodes
.size() > 0);
61 c
.showActions(_currentNode
);
66 if(_currentNode
!= null)
68 _currentNode
.getEditor();
70 if(_root
.getCoordinator().getCurrentTab() == this)
73 // Refresh actions as well
75 _root
.getCoordinator().showActions(_currentNode
);
80 public void showNode(TreeNodeBase node
)
82 TreeNode newNode
= (TreeNode
)node
;
84 if(newNode
!= _currentNode
)
93 if(_currentNode
!= null && _root
.hasNode(_currentNode
))
95 _previousNodes
.add(_currentNode
);
96 while(_previousNodes
.size() >= HISTORY_MAX_SIZE
)
98 _previousNodes
.removeFirst();
100 _root
.getCoordinator().getBackAction().setEnabled(true);
103 _root
.getCoordinator().getForwardAction().setEnabled(false);
104 _currentNode
= newNode
;
116 TreeNode previousNode
= null;
119 previousNode
= _previousNodes
.removeLast();
120 } while(_previousNodes
.size() > 0 && (previousNode
== _currentNode
|| !_root
.hasNode(previousNode
)));
122 if(_previousNodes
.size() == 0)
124 _root
.getCoordinator().getBackAction().setEnabled(false);
127 if(previousNode
!= _currentNode
)
129 if(_currentNode
!= null)
131 _nextNodes
.addFirst(_currentNode
);
132 _root
.getCoordinator().getForwardAction().setEnabled(true);
135 _currentNode
= previousNode
;
136 _selectionListenerEnabled
= false;
137 _root
.setSelectedNode(_currentNode
);
138 _selectionListenerEnabled
= true;
143 public void forward()
145 TreeNode nextNode
= null;
148 nextNode
= _nextNodes
.removeFirst();
149 } while(_nextNodes
.size() > 0 && (nextNode
== _currentNode
|| !_root
.hasNode(nextNode
)));
151 if(_nextNodes
.size() == 0)
153 _root
.getCoordinator().getForwardAction().setEnabled(false);
156 if(nextNode
!= _currentNode
)
158 if(_currentNode
!= null)
160 _previousNodes
.add(_currentNode
);
161 _root
.getCoordinator().getBackAction().setEnabled(true);
164 _currentNode
= nextNode
;
165 _selectionListenerEnabled
= false;
166 _root
.setSelectedNode(_currentNode
);
167 _selectionListenerEnabled
= true;
177 public void saveToRegistry()
182 public void saveToFile()
187 public void discardUpdates()
192 public boolean close()
197 LiveDeploymentPane(Root root
)
199 super(JSplitPane
.HORIZONTAL_SPLIT
, true);
201 setBorder(new EmptyBorder(10, 10, 10, 10));
206 TreeCellRenderer renderer
= new CellRenderer();
207 PopupListener popupListener
= new PopupListener();
209 JTree tree
= _root
.getTree();
211 tree
.setBorder(new EmptyBorder(5, 5, 5, 5));
212 tree
.setCellRenderer(renderer
);
213 ToolTipManager
.sharedInstance().registerComponent(tree
);
214 tree
.addMouseListener(popupListener
);
216 tree
.getSelectionModel().setSelectionMode(TreeSelectionModel
.SINGLE_TREE_SELECTION
);
218 tree
.addTreeSelectionListener(new SelectionListener());
220 tree
.setRootVisible(false);
222 JScrollPane leftScroll
=
223 new JScrollPane(tree
,
224 JScrollPane
.VERTICAL_SCROLLBAR_AS_NEEDED
,
225 JScrollPane
.HORIZONTAL_SCROLLBAR_AS_NEEDED
);
226 leftScroll
.setBorder(Borders
.EMPTY_BORDER
);
228 _leftPane
= new SimpleInternalFrame("Runtime Components");
229 _leftPane
.setContent(leftScroll
);
230 _leftPane
.setPreferredSize(new Dimension(280, 350));
235 _propertiesFrame
= new SimpleInternalFrame("Properties");
237 setLeftComponent(_leftPane
);
238 setRightComponent(_propertiesFrame
);
241 private void showCurrentNode()
243 _root
.getCoordinator().showActions(_currentNode
);
244 if(_currentNode
== null)
246 Component oldContent
= _propertiesFrame
.getContent();
247 if(oldContent
!= null)
249 _propertiesFrame
.remove(oldContent
);
251 _propertiesFrame
.setTitle("Properties");
252 _propertiesFrame
.setToolBar(null);
256 Editor editor
= _currentNode
.getEditor();
257 Component currentProperties
= editor
.getProperties();
258 _propertiesFrame
.setContent(currentProperties
);
259 _propertiesFrame
.setTitle(currentProperties
.getName());
260 _propertiesFrame
.setToolBar(editor
.getToolBar());
262 _propertiesFrame
.validate();
263 _propertiesFrame
.repaint();
266 private void setEmptyDividerBorder()
268 SplitPaneUI splitPaneUI
= getUI();
269 if(splitPaneUI
instanceof BasicSplitPaneUI
)
271 BasicSplitPaneUI basicUI
= (BasicSplitPaneUI
)splitPaneUI
;
272 basicUI
.getDivider().setBorder(BorderFactory
.createEmptyBorder());
276 private class SelectionListener
implements TreeSelectionListener
278 public void valueChanged(TreeSelectionEvent e
)
280 if(_selectionListenerEnabled
)
282 TreePath path
= null;
294 showNode((TreeNode
)path
.getLastPathComponent());
300 private class PopupListener
extends MouseAdapter
302 public void mousePressed(MouseEvent e
)
307 public void mouseReleased(MouseEvent e
)
312 private void maybeShowPopup(MouseEvent e
)
314 if (e
.isPopupTrigger())
316 JTree tree
= (JTree
)e
.getComponent();
318 TreePath path
= tree
.getPathForLocation(e
.getX(), e
.getY());
322 TreeNode node
= (TreeNode
)path
.getLastPathComponent();
323 JPopupMenu popup
= node
.getPopupMenu();
326 popup
.show(tree
, e
.getX(), e
.getY());
334 private SimpleInternalFrame _leftPane
;
335 private SimpleInternalFrame _propertiesFrame
;
338 // back/forward navigation
340 private java
.util
.LinkedList
<TreeNode
> _previousNodes
= new java
.util
.LinkedList
<TreeNode
>();
341 private java
.util
.LinkedList
<TreeNode
> _nextNodes
= new java
.util
.LinkedList
<TreeNode
>();
342 private TreeNode _currentNode
;
344 private boolean _selectionListenerEnabled
= true;
346 static private final int HISTORY_MAX_SIZE
= 20;