From 407d89fbfa7ac9f2cb2ac14c3c752e9176b500b1 Mon Sep 17 00:00:00 2001 From: Jonathan E. Jensen Date: Thu, 13 Jun 2013 14:13:50 -0700 Subject: feature[ats_QGK3T]: Create DSL renderer Change-Id: I20a84bccdf455f74628b138bde155cb916fd3989 --- .../dsl/ui/integration/AbstractDslRenderer.java | 163 +++++++++++++++++++++ .../ui/integration/internal/OseeDslRenderer.java | 86 ++--------- 2 files changed, 175 insertions(+), 74 deletions(-) create mode 100644 plugins/org.eclipse.osee.framework.core.dsl.ui.integration/src/org/eclipse/osee/framework/core/dsl/ui/integration/AbstractDslRenderer.java (limited to 'plugins/org.eclipse.osee.framework.core.dsl.ui.integration/src') diff --git a/plugins/org.eclipse.osee.framework.core.dsl.ui.integration/src/org/eclipse/osee/framework/core/dsl/ui/integration/AbstractDslRenderer.java b/plugins/org.eclipse.osee.framework.core.dsl.ui.integration/src/org/eclipse/osee/framework/core/dsl/ui/integration/AbstractDslRenderer.java new file mode 100644 index 00000000000..b057d25e101 --- /dev/null +++ b/plugins/org.eclipse.osee.framework.core.dsl.ui.integration/src/org/eclipse/osee/framework/core/dsl/ui/integration/AbstractDslRenderer.java @@ -0,0 +1,163 @@ +/******************************************************************************* + * Copyright (c) 2010 Boeing. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Boeing - initial API and implementation + *******************************************************************************/ +package org.eclipse.osee.framework.core.dsl.ui.integration; + +import static org.eclipse.osee.framework.ui.skynet.render.PresentationType.DEFAULT_OPEN; +import static org.eclipse.osee.framework.ui.skynet.render.PresentationType.GENERALIZED_EDIT; +import static org.eclipse.osee.framework.ui.skynet.render.PresentationType.PRODUCE_ATTRIBUTE; +import static org.eclipse.osee.framework.ui.skynet.render.PresentationType.SPECIALIZED_EDIT; +import java.io.File; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.osee.framework.core.data.IArtifactType; +import org.eclipse.osee.framework.core.data.IOseeBranch; +import org.eclipse.osee.framework.core.dsl.ui.integration.internal.DslUiIntegrationConstants; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.core.operation.IOperation; +import org.eclipse.osee.framework.logging.OseeLevel; +import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.skynet.core.artifact.Artifact; +import org.eclipse.osee.framework.skynet.core.types.IArtifact; +import org.eclipse.osee.framework.ui.skynet.render.DefaultArtifactRenderer; +import org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer; +import org.eclipse.osee.framework.ui.skynet.render.PresentationType; +import org.eclipse.osee.framework.ui.swt.Displays; +import org.eclipse.swt.program.Program; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.ide.IDE; + +/** + * @author Jonathan E. Jensen + */ +public abstract class AbstractDslRenderer extends FileSystemRenderer { + + protected static final String COMMAND_ID = "org.eclipse.osee.framework.ui.skynet.render.dsl.editor.command"; + + protected AbstractDslRenderer() { + super(); + } + + /** + * Simple String name of the renderer + */ + @Override + public abstract String getName(); + + /** + * Provides an instance of the concrete class. + */ + @Override + public abstract DefaultArtifactRenderer newInstance(); + + /** + * Provides a list of the artifact types that the renderer supports. + * + * @return a list of the artifact types that the renderer supports + */ + protected abstract IArtifactType[] getArtifactTypeMatches(); + + /** + * Provides the command ID associated with this renderer and adds it to the commandGroup. + */ + @Override + public List getCommandIds(CommandGroup commandGroup) { + ArrayList commandIds = new ArrayList(1); + if (commandGroup.isEdit()) { + commandIds.add(COMMAND_ID); + } + + return commandIds; + } + + /** + * Get the file extention associated with the dsl and related artifact. + */ + @Override + public abstract String getAssociatedExtension(Artifact artifact) throws OseeCoreException; + + /** + * Provides a render input stream for the given input. + */ + @Override + public abstract InputStream getRenderInputStream(PresentationType presentationType, List artifacts) throws OseeCoreException; + + /** + * Provides the update operation for the renderer. + */ + @Override + protected abstract IOperation getUpdateOperation(File file, List artifacts, IOseeBranch branch, PresentationType presentationType); + + /** + * Provides the minimum match ranking for this renderer. + */ + @Override + public abstract int minimumRanking(); + + /** + * This function can be overridden if the subclass does not support compare + */ + @Override + public boolean supportsCompare() { + return true; + } + + @Override + public int getApplicabilityRating(PresentationType presentationType, IArtifact artifact) throws OseeCoreException { + Artifact aArtifact = artifact.getFullArtifact(); + if (!presentationType.matches(GENERALIZED_EDIT, PRODUCE_ATTRIBUTE) && !aArtifact.isHistorical()) { + if (aArtifact.isOfType(getArtifactTypeMatches())) { + return ARTIFACT_TYPE_MATCH; + } + } + return NO_MATCH; + } + + @SuppressWarnings("unused") + @Override + public final void open(final List artifacts, final PresentationType presentationType) throws OseeCoreException { + + Displays.ensureInDisplayThread(new Runnable() { + @Override + public void run() { + if (!artifacts.isEmpty()) { + try { + PresentationType onOpenPresentationType = getOnOpenPresentationType(presentationType); + IFile file = renderToFile(artifacts, onOpenPresentationType); + if (file != null) { + IWorkbench workbench = PlatformUI.getWorkbench(); + IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage(); + IDE.openEditor(page, file); + } + } catch (CoreException ex) { + OseeLog.log(DslUiIntegrationConstants.class, OseeLevel.SEVERE_POPUP, ex); + } + } + } + }); + } + + public PresentationType getOnOpenPresentationType(PresentationType presentationType) { + return presentationType == DEFAULT_OPEN ? SPECIALIZED_EDIT : presentationType; + } + + /** + * This is required by the base class but not by this renderer. Therefore, we stub it out. + */ + @Override + public final Program getAssociatedProgram(Artifact artifact) throws OseeCoreException { + throw new OseeCoreException("should not be called"); + } +} diff --git a/plugins/org.eclipse.osee.framework.core.dsl.ui.integration/src/org/eclipse/osee/framework/core/dsl/ui/integration/internal/OseeDslRenderer.java b/plugins/org.eclipse.osee.framework.core.dsl.ui.integration/src/org/eclipse/osee/framework/core/dsl/ui/integration/internal/OseeDslRenderer.java index 2036f27f061..a837c04f82d 100644 --- a/plugins/org.eclipse.osee.framework.core.dsl.ui.integration/src/org/eclipse/osee/framework/core/dsl/ui/integration/internal/OseeDslRenderer.java +++ b/plugins/org.eclipse.osee.framework.core.dsl.ui.integration/src/org/eclipse/osee/framework/core/dsl/ui/integration/internal/OseeDslRenderer.java @@ -10,45 +10,33 @@ *******************************************************************************/ package org.eclipse.osee.framework.core.dsl.ui.integration.internal; -import static org.eclipse.osee.framework.ui.skynet.render.PresentationType.DEFAULT_OPEN; -import static org.eclipse.osee.framework.ui.skynet.render.PresentationType.GENERALIZED_EDIT; -import static org.eclipse.osee.framework.ui.skynet.render.PresentationType.PRODUCE_ATTRIBUTE; -import static org.eclipse.osee.framework.ui.skynet.render.PresentationType.SPECIALIZED_EDIT; import java.io.ByteArrayInputStream; import java.io.File; import java.io.InputStream; import java.io.UnsupportedEncodingException; -import java.util.ArrayList; import java.util.List; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; +import org.eclipse.osee.framework.core.data.IArtifactType; import org.eclipse.osee.framework.core.data.IOseeBranch; import org.eclipse.osee.framework.core.dsl.integration.util.OseeDslSegmentParser; +import org.eclipse.osee.framework.core.dsl.ui.integration.AbstractDslRenderer; import org.eclipse.osee.framework.core.enums.CoreArtifactTypes; import org.eclipse.osee.framework.core.enums.CoreAttributeTypes; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.core.exception.OseeExceptions; import org.eclipse.osee.framework.core.operation.IOperation; -import org.eclipse.osee.framework.logging.OseeLevel; -import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.skynet.core.artifact.Artifact; -import org.eclipse.osee.framework.skynet.core.types.IArtifact; import org.eclipse.osee.framework.ui.skynet.render.DefaultArtifactRenderer; -import org.eclipse.osee.framework.ui.skynet.render.FileSystemRenderer; import org.eclipse.osee.framework.ui.skynet.render.FileToAttributeUpdateOperation; import org.eclipse.osee.framework.ui.skynet.render.PresentationType; -import org.eclipse.osee.framework.ui.swt.Displays; -import org.eclipse.swt.program.Program; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.ide.IDE; /** * @author Roberto E. Escobar */ -public final class OseeDslRenderer extends FileSystemRenderer { - private static final String COMMAND_ID = "org.eclipse.osee.framework.core.dsl.OseeDsl.editor.command"; +public final class OseeDslRenderer extends AbstractDslRenderer { + private static final IArtifactType[] MATCHING_ARTIFACT_TYPES = { + CoreArtifactTypes.AccessControlModel, + CoreArtifactTypes.OseeTypeDefinition}; + private static final OseeDslSegmentParser parser = new OseeDslSegmentParser(); @Override @@ -61,56 +49,6 @@ public final class OseeDslRenderer extends FileSystemRenderer { return new OseeDslRenderer(); } - @Override - public int getApplicabilityRating(PresentationType presentationType, IArtifact artifact) throws OseeCoreException { - Artifact aArtifact = artifact.getFullArtifact(); - if (!presentationType.matches(GENERALIZED_EDIT, PRODUCE_ATTRIBUTE) && !aArtifact.isHistorical()) { - if (aArtifact.isOfType(CoreArtifactTypes.AccessControlModel, CoreArtifactTypes.OseeTypeDefinition)) { - return ARTIFACT_TYPE_MATCH; - } - } - return NO_MATCH; - } - - @Override - public List getCommandIds(CommandGroup commandGroup) { - ArrayList commandIds = new ArrayList(1); - if (commandGroup.isEdit()) { - commandIds.add(COMMAND_ID); - } - return commandIds; - } - - @Override - public boolean supportsCompare() { - return true; - } - - @SuppressWarnings("unused") - @Override - public void open(final List artifacts, PresentationType presentationType) throws OseeCoreException { - final PresentationType resultantpresentationType = - presentationType == DEFAULT_OPEN ? SPECIALIZED_EDIT : presentationType; - - Displays.ensureInDisplayThread(new Runnable() { - @Override - public void run() { - if (!artifacts.isEmpty()) { - try { - IFile file = renderToFile(artifacts, resultantpresentationType); - if (file != null) { - IWorkbench workbench = PlatformUI.getWorkbench(); - IWorkbenchPage page = workbench.getActiveWorkbenchWindow().getActivePage(); - IDE.openEditor(page, file); - } - } catch (CoreException ex) { - OseeLog.log(DslUiIntegrationConstants.class, OseeLevel.SEVERE_POPUP, ex); - } - } - } - }); - } - @SuppressWarnings("unused") @Override public String getAssociatedExtension(Artifact artifact) throws OseeCoreException { @@ -143,11 +81,6 @@ public final class OseeDslRenderer extends FileSystemRenderer { return inputStream; } - @Override - public Program getAssociatedProgram(Artifact artifact) throws OseeCoreException { - throw new OseeCoreException("should not be called"); - } - @Override protected IOperation getUpdateOperation(File file, List artifacts, IOseeBranch branch, PresentationType presentationType) { IOperation op; @@ -167,4 +100,9 @@ public final class OseeDslRenderer extends FileSystemRenderer { public int minimumRanking() { return GENERAL_MATCH; } + + @Override + protected IArtifactType[] getArtifactTypeMatches() { + return MATCHING_ARTIFACT_TYPES; + } } -- cgit v1.2.3