| <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> |