| <?php | |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); | |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); | |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); | |
| $App = new App(); | |
| $Nav = new Nav(); | |
| $Menu = new Menu(); | |
| include($App->getProjectCommon()); | |
| # Begin: page-specific settings. Change these. | |
| $pageTitle = "OSEE - Rendering"; | |
| $pageKeywords = "OSEE, Open, System, Engineering, Environment, Eclipse, Application Framework, Renderer"; | |
| $pageAuthor = "Jeff C. Phillips"; | |
| # Paste your HTML content between the EOHTML markers! | |
| $html = <<<EOHTML | |
| <div id="midcolumn"> | |
| <h3>$pageTitle</h3> | |
| <h4>Adding a Custom Editor</h4> | |
| <p>Additional editors can be added to OSEE and configured so that they will appear in the "Open With" menus throughout OSEE based on a specific artifact type selected. The steps outlined below assume that a custom editor has already been created.</p> | |
| <h4>Topics</h4> | |
| <ul> | |
| <li>Create Command</li> | |
| <li>Create Handler</li> | |
| <li>Create Renderer</li> | |
| </ul> | |
| <h4>Create a Command</h4> | |
| <ul> | |
| <li>Command id: command.custom.editor</li> | |
| <li>A command will need to be created to provide a name and icon for the menu item.</li> | |
| <br>1) Create an extension for the command org.eclipse.ui.commands. | |
| <br>2) To add an icon create an extension org.eclipse.ui.commandImages. | |
| </ul> | |
| <h4>Create a Handler</h4> | |
| <p> | |
| A handler will be needed to perform the operation desired when the menu is selected. In this case it will be to open the custom editor. | |
| </p> | |
| <ul> | |
| <li> | |
| Create a Handler class that extends AbstractEditorHandler. Extending this class provides the developer with a protected populated list of artifacts and supports access control features. | |
| </li> | |
| <code> | |
| <pre> | |
| /** | |
| * @author Jeff C. Phillips | |
| */ | |
| public class CustomEditorHandler extends AbstractEditorHandler { | |
| @Override | |
| public Object execute(ExecutionEvent event) throws ExecutionException { | |
| CustomRenderer renderer = new CustomRenderer(); | |
| try { | |
| //artifacts is a protected list of artifacts that are populated by the super class AbstractEditorHandler | |
| renderer.open(artifacts); | |
| } catch (OseeCoreException ex) { | |
| OseeLog.log(CustomEditorHandler.class, Level.SEVERE, ex); | |
| } | |
| dispose(); | |
| return null; | |
| } | |
| @Override | |
| protected PermissionEnum getPermissionLevel() { | |
| //The default implementation is Read but can be changed here. | |
| return super.getPermissionLevel(); | |
| } | |
| } | |
| </pre> | |
| </code></ul> | |
| <ul> | |
| <li> | |
| Create extension point for the handler | |
| <p> | |
| Create an org.eclipse.ui.handlers extension with the previous command ID and add the above handler class. | |
| </p> | |
| </li> | |
| </ul> | |
| <h4> | |
| Create a custom Renderer | |
| </h4> | |
| <p> | |
| The general purpose of the renderer is to renderer artifacts to different formats for use in editing, preview, printing, etc. Contributing a new renderer requires two steps. The first create the new renderer class and the second create a new extension point. | |
| </P> | |
| <ul> | |
| <li> | |
| Create new Renderer | |
| </li> | |
| <pre> | |
| /** | |
| * @author Jeff C. Phillips | |
| */ | |
| public class CustomRenderer extends DefaultArtifactRenderer { | |
| @Override | |
| /** | |
| * The applicability rating is what is used by the RendererManager to decide which renderer can be used for | |
| * specific artifact types. | |
| */ | |
| public int getApplicabilityRating(PresentationType presentationType, Artifact artifact) throws OseeCoreException { | |
| //In this example, this renderer will be applicable for WordArtifacts | |
| if (artifact.isOfType(WordArtifact.WORD_TEMPLATE)) { | |
| return PRESENTATION_SUBTYPE_MATCH; | |
| } | |
| return NO_MATCH; | |
| } | |
| @Override | |
| /** | |
| * Returns a list of command IDs that will be converted into Menu items | |
| */ | |
| public List<String> getCommandId(PresentationType presentationType) { | |
| ArrayList<String> commandIds = new ArrayList<String>(1); | |
| if (presentationType == PresentationType.SPECIALIZED_EDIT) { | |
| commandIds.add("command.custom.editor"); | |
| } | |
| return commandIds; | |
| } | |
| @Override | |
| public DefaultArtifactRenderer newInstance() throws OseeCoreException { | |
| return new CustomRenderer(); | |
| } | |
| @Override | |
| public void open(List<Artifact> artifacts) throws OseeCoreException { | |
| //Invoke custom editor | |
| CustomEditor.open(artifacts); | |
| } | |
| @Override | |
| public void preview(List<Artifact> artifacts) throws OseeCoreException { | |
| super.preview(artifacts); | |
| } | |
| } | |
| </pre> | |
| <li> | |
| Register New Renderer using an extension point | |
| </li> | |
| <p>Extend the extension point org.eclipse.osee.framework.ui.skynet.ArtifactRenderer and add a renderer element and set the class attribute to the renderer class above. | |
| </p> | |
| </ul> | |
| </div> | |
| EOHTML; | |
| # Generate the web page | |
| $App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html); | |
| ?> |