ICE 3.4.2
[php5-ice-freebsdport.git] / java / src / IceGridGUI / LiveDeploymentPane.java
blob249d4657071c6949396969de39c8d23a2e43fdbf
1 // **********************************************************************
2 //
3 // Copyright (c) 2003-2011 ZeroC, Inc. All rights reserved.
4 //
5 // This copy of Ice is licensed to you under the terms described in the
6 // ICE_LICENSE file included in this distribution.
7 //
8 // **********************************************************************
10 package IceGridGUI;
12 import java.awt.*;
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;
19 import javax.swing.*;
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;
32 import IceGrid.*;
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()
41 super.updateUI();
42 setEmptyDividerBorder();
45 public void selected()
47 Coordinator c = _root.getCoordinator();
49 if(c.connected())
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);
64 public void refresh()
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)
86 if(newNode == null)
88 _currentNode = null;
89 showCurrentNode();
91 else
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);
102 _nextNodes.clear();
103 _root.getCoordinator().getForwardAction().setEnabled(false);
104 _currentNode = newNode;
105 showCurrentNode();
108 else
110 refresh();
114 public void back()
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;
139 showCurrentNode();
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;
168 showCurrentNode();
172 public void save()
174 assert false;
177 public void saveToRegistry()
179 assert false;
182 public void saveToFile()
184 assert false;
187 public void discardUpdates()
189 assert false;
192 public boolean close()
194 return false;
197 LiveDeploymentPane(Root root)
199 super(JSplitPane.HORIZONTAL_SPLIT, true);
200 _root = root;
201 setBorder(new EmptyBorder(10, 10, 10, 10));
204 // Tree display
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));
233 // Right pane
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);
254 else
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;
283 if(e.isAddedPath())
285 path = e.getPath();
288 if(path == null)
290 showNode(null);
292 else
294 showNode((TreeNode)path.getLastPathComponent());
300 private class PopupListener extends MouseAdapter
302 public void mousePressed(MouseEvent e)
304 maybeShowPopup(e);
307 public void mouseReleased(MouseEvent e)
309 maybeShowPopup(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());
320 if(path != null)
322 TreeNode node = (TreeNode)path.getLastPathComponent();
323 JPopupMenu popup = node.getPopupMenu();
324 if(popup != null)
326 popup.show(tree, e.getX(), e.getY());
333 private Root _root;
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;