1 19 20 package org.netbeans.modules.xml.wsdl.ui.view.grapheditor; 21 22 import java.awt.BorderLayout ; 23 import java.awt.Color ; 24 import java.awt.EventQueue ; 25 import java.awt.Image ; 26 import java.awt.Point ; 27 import java.awt.event.ActionEvent ; 28 import java.awt.event.MouseWheelListener ; 29 import java.util.Collections ; 30 import java.util.List ; 31 import javax.swing.AbstractAction ; 32 import javax.swing.Action ; 33 import javax.swing.ImageIcon ; 34 import javax.swing.JComponent ; 35 import javax.swing.JPanel ; 36 import javax.swing.JScrollPane ; 37 import javax.swing.JToggleButton ; 38 import javax.swing.JToolBar ; 39 import javax.swing.UIManager ; 40 import javax.swing.border.Border ; 41 import org.netbeans.api.visual.layout.LayoutFactory; 42 import org.netbeans.api.visual.layout.LayoutFactory.SerialAlignment; 43 import org.netbeans.api.visual.widget.LayerWidget; 44 import org.netbeans.api.visual.widget.Widget; 45 import org.netbeans.modules.visual.border.EmptyBorder; 46 import org.netbeans.modules.xml.wsdl.model.WSDLModel; 47 import org.netbeans.modules.xml.wsdl.ui.view.grapheditor.widget.CollaborationsWidget; 48 import org.netbeans.modules.xml.wsdl.ui.view.grapheditor.widget.PartnerScene; 49 import org.netbeans.modules.xml.wsdl.ui.view.grapheditor.widget.MessagesWidget; 50 import org.netbeans.modules.xml.xam.Component; 51 import org.openide.util.NbBundle; 52 import org.openide.util.Utilities; 53 54 61 public class GraphView extends JPanel { 62 63 private PartnerScene scene; 64 65 private Widget mMainLayer; 66 67 private WSDLModel mModel; 68 69 private DragOverSceneLayer mDragLayer; 70 71 private ZoomManager zoomer; 72 73 private CollaborationsWidget collaborationsWidget; 74 75 private MessagesWidget messagesWidget; 76 77 private Widget contentWidget; 78 79 82 public GraphView(WSDLModel model) { 83 super(new BorderLayout ()); 84 this.mModel = model; 85 86 scene = new PartnerScene(mModel); 87 JComponent sceneView = scene.createView(); 88 scene.setBackground(Color.WHITE); 89 zoomer = new ZoomManager(scene); 90 91 if (sceneView instanceof MouseWheelListener ) { 93 sceneView.removeMouseWheelListener((MouseWheelListener ) sceneView); 94 } 95 96 collaborationsWidget = scene.getCollaborationsWidget(); 97 messagesWidget = scene.getMessagesWidget(); 98 contentWidget = new Widget(scene); 101 contentWidget.setBorder(new EmptyBorder(24, 24, 24, 24, false)); 102 contentWidget.setLayout(LayoutFactory.createVerticalLayout( 103 SerialAlignment.JUSTIFY, 16)); 104 contentWidget.addChild(collaborationsWidget); 105 contentWidget.addChild(messagesWidget); 106 107 mMainLayer = new LayerWidget(scene); 108 mMainLayer.addChild(contentWidget); 109 mMainLayer.setPreferredLocation(new Point (0, 0)); 110 mMainLayer.setBackground(Color.WHITE); 111 112 mDragLayer = scene.getDragOverLayer(); 113 114 scene.addChild(mMainLayer); 115 scene.addChild(mDragLayer); 116 117 JScrollPane panel = new JScrollPane (sceneView); 118 panel.getVerticalScrollBar().setUnitIncrement(16); 119 panel.getHorizontalScrollBar().setUnitIncrement(16); 120 panel.setBorder(null); 121 add(panel, BorderLayout.CENTER); 122 } 123 124 130 public void addToolbarActions(JToolBar toolbar) { 131 zoomer.addToolbarActions(toolbar); 132 toolbar.addSeparator(); 133 Border border = UIManager.getBorder("nb.tabbutton.border"); Action [] actions = new Action [] { 135 new ViewCollaborationsAction(), 136 new ViewMessagesAction(), 137 }; 138 boolean[] visible = new boolean[] { 139 isCollaborationsShowing(), 140 isMessagesShowing(), 141 }; 142 for (int ii = 0; ii < actions.length; ii++) { 143 Action action = actions[ii]; 144 JToggleButton button = new JToggleButton (action); 145 button.setText(null); 148 button.setRolloverEnabled(true); 149 if (border != null) { 150 button.setBorder(border); 151 } 152 button.setSelected(visible[ii]); 153 toolbar.add(button); 154 } 155 } 156 157 163 public JComponent getContent() { 164 return scene.getView(); 165 } 166 167 172 public ZoomManager getZoomManager() { 173 return zoomer; 174 } 175 176 181 public boolean isCollaborationsShowing() { 182 return collaborationsWidget.getParentWidget() != null; 183 } 184 185 190 public boolean isMessagesShowing() { 191 return messagesWidget.getParentWidget() != null; 192 } 193 194 public void requestFocus() { 195 super.requestFocus(); 196 scene.getView().requestFocus(); 198 } 199 200 public boolean requestFocusInWindow() { 201 super.requestFocusInWindow(); 202 return scene.getView().requestFocusInWindow(); 204 } 205 206 211 public void setCollaborationsVisible(boolean visible) { 212 if (visible) { 213 assert !isCollaborationsShowing() : "collaborations already showing!"; 214 List <Widget> children = contentWidget.getChildren(); 216 int index = children.indexOf(messagesWidget); 217 if (index < 0) { 218 index = 0; 219 } 220 contentWidget.addChild(index, collaborationsWidget); 221 } else { 222 assert isCollaborationsShowing() : "collaborations already hidden!"; 223 contentWidget.removeChild(collaborationsWidget); 224 } 225 scene.validate(); 226 } 227 228 233 public void setMessagesVisible(boolean visible) { 234 if (visible) { 235 assert !isMessagesShowing() : "messages already showing!"; 236 contentWidget.addChild(messagesWidget); 238 } else { 239 assert isMessagesShowing() : "messages already hidden!"; 240 contentWidget.removeChild(messagesWidget); 241 } 242 scene.validate(); 243 } 244 245 250 public void showComponent(Component comp) { 251 Widget widget = scene.findWidget(comp); 252 if (widget != null) { 253 scene.setSelectedObjects(Collections.emptySet()); 257 scene.getSelectProvider().select(widget, widget.getLocation(), true); 258 } 259 } 260 261 264 private class ViewCollaborationsAction extends AbstractAction 265 implements Runnable { 266 267 270 public ViewCollaborationsAction() { 271 String path = NbBundle.getMessage(ViewCollaborationsAction.class, 272 "IMG_ViewCollaborationsAction"); 273 Image img = Utilities.loadImage(path); 274 if (img != null) { 275 putValue(Action.SMALL_ICON, new ImageIcon (img)); 276 } 277 String name = NbBundle.getMessage(ViewCollaborationsAction.class, 278 "ACSN_ViewCollaborationsAction"); 279 putValue(Action.NAME, name); putValue(Action.SHORT_DESCRIPTION, NbBundle.getMessage( 281 ViewCollaborationsAction.class, "LBL_ViewCollaborationsAction")); 282 } 283 284 public void actionPerformed(ActionEvent e) { 285 EventQueue.invokeLater(this); 286 } 287 288 public void run() { 289 setCollaborationsVisible(!isCollaborationsShowing()); 290 } 291 } 292 293 296 private class ViewMessagesAction extends AbstractAction 297 implements Runnable { 298 299 302 public ViewMessagesAction() { 303 String path = NbBundle.getMessage(ViewMessagesAction.class, 304 "IMG_ViewMessagesAction"); 305 Image img = Utilities.loadImage(path); 306 if (img != null) { 307 putValue(Action.SMALL_ICON, new ImageIcon (img)); 308 } 309 String name = NbBundle.getMessage(ViewCollaborationsAction.class, 310 "ACSN_ViewMessagesAction"); 311 putValue(Action.NAME, name); putValue(Action.SHORT_DESCRIPTION, NbBundle.getMessage( 313 ViewMessagesAction.class, "LBL_ViewMessagesAction")); 314 } 315 316 public void actionPerformed(ActionEvent e) { 317 EventQueue.invokeLater(this); 318 } 319 320 public void run() { 321 setMessagesVisible(!isMessagesShowing()); 322 } 323 } 324 } 325 | Popular Tags |