| <h2>Frequently Asked Questions</h2> |
| |
| <!-- <h3>[General]</h3> --> |
| |
| <ol> |
| <h4> |
| <li>Is it possible to separate the diagram data from the domain |
| data? |
| </h4> |
| <p> |
| Yes, and it is also recommended to do so. Simply use the standard EMF |
| mechanisms to store the domain objects in an EMF resource of your |
| choice. The tutorial follows the very simple approach to store both |
| the diagram and domain objects inside the same resource, this is |
| definitely not the way to go for building your own tool. Have a look |
| at this <a |
| href="http://www.eclipse.org/forums/index.php?t=msg&th=172247&start=0&S=acb08c1bf425f0ccb0106fb3a46a4bad"> |
| forum entry</a> to see how it can be changed for the tutorial. |
| </p> |
| |
| <h4> |
| <li>Is it possible to integrate an arbitrary automatic layouter |
| with Graphiti? |
| </h4> |
| <p> |
| Yes, indeed. Use a Custom Feature to do so. The following <a |
| href="resources/TutorialLayoutDiagramFeature.java">snippet</a> shows |
| how a layouter can be integrated into the Graphiti tutorial. In the |
| snippet, we use a layouter which comes with GEF. Note, that this |
| requires a direct dependency to Draw2D. Your Feature Provider has to |
| deliver the Layout Feature as a Custom Feature. Then the action will |
| be available via the context menu. |
| </p> |
| |
| <h4> |
| <li>How do i build an editable property sheet? |
| </h4> |
| <p>We use the non-editable property sheet in the examples.common |
| and examples.tutorial plugins of the Graphiti project as a touchstone. |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <ol> |
| <li>Study the extension point <code>org.eclipse.ui.views.properties.tabbed.propertyContributor</code>. |
| See the <code>org.eclipse.graphiti.examples.common.property</code> |
| package as reference. |
| </li> |
| <li>Study the extension point <code>org.eclipse.ui.views.properties.tabbed.propertySections</code>. |
| See the <code>org.eclipse.graphiti.examples.tutorial.property</code> |
| package as reference. |
| </li> |
| <li>In the class <code>TutorialEClassSection</code> from the |
| tutorial plug-in set the <code>nameText</code> field as editable and |
| add a <code>ModifyListener</code> to the <code>nameText</code> field |
| as shown in the <a href="resources/ModifyListener.txt">snippet</a>. |
| </li> |
| |
| </ol> |
| </p> |
| |
| <h4> |
| <li>How do i build structured menus on context buttons? |
| </h4> |
| <p> |
| If you want a compact context button pad you might consider organizing |
| your context buttons into sub-menus. Use |
| <code>ContextButtonEntry</code> |
| 's method |
| <code>addContextButtonMenuEntry</code> |
| to add sub-entries to the context menu entry. If a menu entry has |
| sub-entries this is visualized by a small triangle in the lower right |
| corner of the entry representation and left-clicking opens the |
| sub-menu. |
| </p> |
| |
| <h4> |
| <li>Why does pressing F2 to enable direct editing only work if |
| the mouse cursor is placed over the shape? |
| </h4> |
| <p>In general it is possible to invoke direct editing for a |
| selected shape by pressing F2. Since the selected object may contain |
| more than one editable object (e.g. two text fields) or the hierarchy |
| may not be clear, the Graphiti framework may not be able to |
| automatically determine which field should be edited. As a last resort |
| the framework tries to use the shape the mouse cursor is placed upon.</p> |
| <p> |
| But you can help the framework out by overriding the method |
| getLocationInfo in your ToolBehaviorProvider. This method is called |
| upon pressing F2 and can return a LocationInfo object stating which |
| text object shall be edited. Here's a <a |
| href="resources/GetLocationInfo.java">short example |
| implementation</a> for the tutorial. |
| </p> |
| |
| |
| <h4> |
| <li>How do I work in a diagram using the keyboard only? |
| </h4> |
| <p>Graphiti supports triggering all kinds of operations using the |
| keyboard, basically all the keyboard bindings are reused from what GEF |
| offers in this respect. Here is a list of the most commonly used |
| shortcuts:</p> |
| <table> |
| <tr> |
| <th>Action</th> |
| <th>Key</th> |
| </tr> |
| <tr> |
| <td>Navigate left</td> |
| <td>Left arrow</td> |
| <tr> |
| <td>Navigate right</td> |
| <td>Right arrow</td> |
| </tr> |
| <tr> |
| <td>Navigate down</td> |
| <td>Down arrow</td> |
| </tr> |
| <tr> |
| <td>Navigate up</td> |
| <td>Up arrow</td> |
| </tr> |
| <tr> |
| <td>Navigate into a container</td> |
| <td>Alt+Down arrow with the container selected</td> |
| </tr> |
| <tr> |
| <td>Navigate out of a container</td> |
| <td>Alt+Up arrow</td> |
| </tr> |
| <tr> |
| <td>Cycle through selection handles</td> |
| <td>Press the period key with a part selected</td> |
| </tr> |
| <tr> |
| <td>Move a component</td> |
| <td>Cycle once to the Move handle using the period key. Use |
| navigation keys to move. Press Enter to accept new location. Press |
| Escape to cancel the move</td> |
| </tr> |
| <tr> |
| <td>Resize a component</td> |
| <td>Cycle to desired resize handle using the period key. Use |
| navigation keys to resize. Press Enter to accept new size. Press |
| Escape to cancel the resize</td> |
| </tr> |
| <tr> |
| <td>Cycle through connections</td> |
| <td>slash or backslash while on an element with connections</td> |
| </tr> |
| <tr> |
| <td>Select multiple</td> |
| <td>Hold down Ctrl. Use navigation keys to navigate to |
| additional components. Press Space to select additional shapes or |
| deselect already selected ones.</td> |
| </tr> |
| <tr> |
| <td>Select in sequence</td> |
| <td>Hold down Shift, use navigation keys to select additional |
| shapes or deselect already selected ones.</td> |
| </tr> |
| <tr> |
| <td>Go from editor to palette</td> |
| <td>Shift + Tab</td> |
| </tr> |
| <tr> |
| <td>Go from palette to editor</td> |
| <td>Tab (currently only works with active selection tool)</td> |
| </tr> |
| <tr> |
| <td>Create selected palette element</td> |
| <td>RETURN</td> |
| </tr> |
| <tr> |
| <td>Create relation between elements</td> |
| <td>Apply multi selection to the elements with SPACE. Navigate |
| to palette with Shift + Tab and create the desired relation with |
| RETURN</td> |
| </tr> |
| </table> |
| <p> |
| More keybindings can be found e.g. <a |
| href="http://eclipse-ruminations.blogspot.com/2009/03/keyboard-shortcuts-and-accessibility-in.html">here</a>. |
| </p> |
| </ol> |