diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IConstraintVerifierUI.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IConstraintVerifierUI.java index 644763c818c0f8472840ed99c57785ee3c80537a..51a2486de8b3783d210a8002a54b39565d8047ba 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IConstraintVerifierUI.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/IConstraintVerifierUI.java @@ -17,8 +17,8 @@ $Id$ +--------------------------------------------------------------------------*/ package org.fortiss.tooling.kernel.ui.extension; -import org.eclipse.emf.ecore.EObject; import org.fortiss.tooling.kernel.model.constraints.IConstraint; +import org.fortiss.tooling.kernel.model.constraints.IConstraintContainer; import org.fortiss.tooling.kernel.model.constraints.IConstraintVerificationStatus; import org.fortiss.tooling.kernel.service.base.IEObjectAware; @@ -28,29 +28,28 @@ import org.fortiss.tooling.kernel.service.base.IEObjectAware; * @author aravantinos * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 55841F342D5CE5159A902AB923946C35 + * @ConQAT.Rating YELLOW Hash: FF8F3F170CD5768D578035D3803F7470 */ public interface IConstraintVerifierUI<T extends IConstraint> extends IEObjectAware<T> { /** - * Action to take when trying to open the given status. <code>canOpen</code> should be called - * before to know if the status can be opened. + * Action to take when trying to open the given constraint. <code>canOpen</code> should be + * called before to know if the status can be opened. * - * @return true if the status could indeed be open, false if it needs further handling. + * @param constraint + * @param status + * @return true if the constraint could indeed be open, false if it needs further handling. */ - public boolean openStatus(IConstraintVerificationStatus status); + public boolean openStatus(T constraint, IConstraintVerificationStatus status); - /** True if the given status can be open. */ - public boolean canOpen(IConstraintVerificationStatus status); + /** True if the constraint can be open. */ + boolean canOpen(T constraint, IConstraintVerificationStatus status); /** Method to execute when a constraint gets outdated. */ public void onOutdate(T constraint); - /** - * @param status - * @return a short user-friendly description explaining the status. - */ - public String getMessage(IConstraintVerificationStatus status); + /** Returns a short user-friendly description explaining the constraint. */ + public String getMessage(T constraint, IConstraintVerificationStatus status); /** * The following features deal with the usage of constraints to drive the process. @@ -58,15 +57,15 @@ public interface IConstraintVerifierUI<T extends IConstraint> extends IEObjectAw * EXPERIMENTAL. */ - /** Activates the constraint type. */ - public void activate(EObject context); - - /** Deactivates the constraint type. */ - public void deactivate(EObject context); - /** - * ID of the constraint. Must be unique among all constraints which are usable for development - * process. *Must match* the ID of the corresponding constraint non-UI verifier. + * Hook to run when the constraint is activated. Can be used to add constraints that would be + * missing. */ - public String getID(); + public void onActivate(IConstraintContainer context); + + /** Gets a general description for the constraint type. */ + String getDescription(); + + /** True if this constraint shall be displayed as a development process constraint. */ + boolean isUsableForDevelopmentProcess(); } diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ConstraintVerifierUIBases.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ConstraintVerifierUIBases.java index 7d9c3b05b6c626af2387da61ee5b20c3d77999c7..5de0be7474c1078f1e347bc6afd4902bb532b38c 100644 --- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ConstraintVerifierUIBases.java +++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/extension/base/ConstraintVerifierUIBases.java @@ -23,7 +23,6 @@ import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; -import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; @@ -39,12 +38,13 @@ import org.eclipse.swt.widgets.Shell; import org.fortiss.tooling.kernel.model.constraints.ErrorVerificationStatus; import org.fortiss.tooling.kernel.model.constraints.FailVerificationStatus; import org.fortiss.tooling.kernel.model.constraints.IConstraint; +import org.fortiss.tooling.kernel.model.constraints.IConstraintContainer; import org.fortiss.tooling.kernel.model.constraints.IConstraintVerificationStatus; import org.fortiss.tooling.kernel.model.constraints.OutdatedVerificationStatus; -import org.fortiss.tooling.kernel.model.constraints.SuccessVerificationStatus; import org.fortiss.tooling.kernel.service.IConstraintVerificationService; import org.fortiss.tooling.kernel.service.IConstraintVerificationService.IFix; import org.fortiss.tooling.kernel.ui.extension.IConstraintVerifierUI; +import org.fortiss.tooling.kernel.ui.service.IConstraintVerificationUIService; import org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService; import org.fortiss.tooling.kernel.ui.util.ConstraintsUIUtils; import org.fortiss.tooling.kernel.utils.ConstraintsUtils; @@ -55,7 +55,7 @@ import org.fortiss.tooling.kernel.utils.ConstraintsUtils; * @author vincent * @author $Author$ * @version $Rev$ - * @ConQAT.Rating YELLOW Hash: 84B5C13C5626B34EB7DD1D8D692368B7 + * @ConQAT.Rating YELLOW Hash: 0D74DFF10E167E1EB9754CFB52A8CCC4 */ public class ConstraintVerifierUIBases { @@ -65,24 +65,30 @@ public class ConstraintVerifierUIBases { /** {@inheritDoc} */ @Override - public boolean openStatus(IConstraintVerificationStatus status) { - if(!canOpen(status)) { + public boolean canOpen(T constraint, IConstraintVerificationStatus status) { + return status instanceof OutdatedVerificationStatus; + } + + /** {@inheritDoc} */ + @Override + public boolean openStatus(T c, IConstraintVerificationStatus status) { + if(!canOpen(c, status)) { return false; } if(status instanceof OutdatedVerificationStatus) { - IConstraint constraint = status.getConstraint(); - IConstraintVerificationService.getInstance().verify(constraint); - IConstraintVerificationStatus currentStatus = constraint.getVerificationStatus(); - if(currentStatus instanceof ErrorVerificationStatus & canOpen(currentStatus)) { - openStatus(currentStatus); + IConstraintVerificationService.getInstance().verify(c); + IConstraintVerificationStatus currentStatus = + IConstraintVerificationUIService.getInstance().getStatus(c); + if(currentStatus instanceof ErrorVerificationStatus & canOpen(c, status)) { + openStatus(c, status); } return true; } if(status instanceof FailVerificationStatus || status instanceof ErrorVerificationStatus) { - List<IFix> fixes = IConstraintVerificationService.getInstance().fixes(status); + List<IFix> fixes = IConstraintVerificationService.getInstance().fixes(c); Shell shell = Display.getCurrent().getActiveShell(); - int result = new FixDialog(shell, status, getMessage(status), fixes).open(); + int result = new FixDialog(shell, status, getMessage(c, status), fixes).open(); if(fixes.size() == 1 && result == 0) { // get(0) because the size is equal to 1 by the previous test fixes.get(0).runFix(status); @@ -94,12 +100,6 @@ public class ConstraintVerifierUIBases { return false; } - /** {@inheritDoc} */ - @Override - public boolean canOpen(IConstraintVerificationStatus status) { - return(!(status instanceof SuccessVerificationStatus)); - } - /** Dialog presenting the error/failure and the possible fix(es). */ private static class FixDialog extends MessageDialog { @@ -177,7 +177,9 @@ public class ConstraintVerifierUIBases { /** {@inheritDoc} */ @Override - public String getMessage(IConstraintVerificationStatus s) { + public String getMessage(T c, IConstraintVerificationStatus status) { + IConstraintVerificationStatus s = + IConstraintVerificationUIService.getInstance().getStatus(c); // Default message. Inheriting classes SHOULD specialize. String name = IModelElementHandlerService.getInstance().getName(s.getConstraint()); String pre = @@ -195,14 +197,14 @@ public class ConstraintVerifierUIBases { /** {@inheritDoc} */ @Override - public void activate(EObject context) { - // TODO Auto-generated method stub + public void onActivate(IConstraintContainer context) { + // Nothing to do in general } /** {@inheritDoc} */ @Override - public void deactivate(EObject context) { - // TODO Auto-generated method stub + public boolean isUsableForDevelopmentProcess() { + return true; } } @@ -227,5 +229,11 @@ public class ConstraintVerifierUIBases { } }).schedule(); } + + /** {@inheritDoc} */ + @Override + public boolean canOpen(T constraint, IConstraintVerificationStatus status) { + return false; + } } }