diff options
Diffstat (limited to 'plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java')
-rw-r--r-- | plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java | 622 |
1 files changed, 312 insertions, 310 deletions
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java index f074d7a0082..ee504e63729 100644 --- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java +++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/ReviewInfoXWidget.java @@ -1,310 +1,312 @@ -/*******************************************************************************
- * Copyright (c) 2004, 2007 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.ats.editor.widget;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.logging.Level;
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.dialogs.IMessageProvider;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.osee.ats.actions.NewDecisionReviewJob;
-import org.eclipse.osee.ats.actions.NewPeerToPeerReviewJob;
-import org.eclipse.osee.ats.artifact.PeerToPeerReviewArtifact;
-import org.eclipse.osee.ats.artifact.ReviewSMArtifact;
-import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption;
-import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact;
-import org.eclipse.osee.ats.editor.SMAEditor;
-import org.eclipse.osee.ats.internal.AtsPlugin;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.util.Overview;
-import org.eclipse.osee.ats.util.widgets.ReviewManager;
-import org.eclipse.osee.ats.util.widgets.dialog.StateListAndTitleDialog;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.jdk.core.util.AHTML;
-import org.eclipse.osee.framework.jdk.core.util.Strings;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.UserManager;
-import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
-import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
-import org.eclipse.osee.framework.ui.plugin.util.Result;
-import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
-import org.eclipse.osee.framework.ui.skynet.widgets.XLabelValueBase;
-import org.eclipse.osee.framework.ui.swt.ALayout;
-import org.eclipse.osee.framework.ui.swt.Displays;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.ui.forms.IManagedForm;
-import org.eclipse.ui.forms.IMessageManager;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.events.IHyperlinkListener;
-import org.eclipse.ui.forms.widgets.Hyperlink;
-
-/**
- * <REM2> handled through SMAEditorEventManager
- *
- * @author Donald G. Dunne
- */
-public class ReviewInfoXWidget extends XLabelValueBase {
-
- private final String forStateName;
- private final ArrayList<Label> labelWidgets = new ArrayList<Label>();
- private Composite destroyableComposite = null;
- private final Composite composite;
- private final IManagedForm managedForm;
- private final int horizontalSpan;
- private final XFormToolkit toolkit;
- private final TeamWorkFlowArtifact teamArt;
-
- public ReviewInfoXWidget(IManagedForm managedForm, XFormToolkit toolkit, final TeamWorkFlowArtifact teamArt, final String forStateName, Composite composite, int horizontalSpan) {
- super("\"" + forStateName + "\" State Reviews");
- this.managedForm = managedForm;
- this.toolkit = toolkit;
- this.teamArt = teamArt;
- this.forStateName = forStateName;
- this.composite = composite;
- this.horizontalSpan = horizontalSpan;
- reDisplay();
- }
-
- public void reDisplay() {
- if (composite != null && composite.isDisposed()) {
- return;
- }
- if (destroyableComposite != null) {
- destroyableComposite.dispose();
- }
- destroyableComposite = new Composite(composite, SWT.None);
- destroyableComposite.setLayout(ALayout.getZeroMarginLayout(4, false));
-
- setToolTip("Blocking Reviews must be completed before transtion. Select Review hyperlink to view.");
- createWidgets(managedForm, destroyableComposite, horizontalSpan);
-
- try {
- addAdminRightClickOption();
- Collection<ReviewSMArtifact> revArts = ReviewManager.getReviews(teamArt, forStateName);
- if (revArts.isEmpty()) {
- setValueText("No Reviews Created");
- }
-
- Hyperlink link = toolkit.createHyperlink(destroyableComposite, "[Add Decision Review]", SWT.NONE);
- link.addHyperlinkListener(new IHyperlinkListener() {
-
- @Override
- public void linkEntered(HyperlinkEvent e) {
- // do nothing
- }
-
- @Override
- public void linkExited(HyperlinkEvent e) {
- // do nothing
- }
-
- @Override
- public void linkActivated(HyperlinkEvent e) {
- try {
- StateListAndTitleDialog dialog =
- new StateListAndTitleDialog("Create Decision Review",
- "Select state to that review will be associated with.",
- teamArt.getWorkFlowDefinition().getPageNames());
- dialog.setInitialSelections(new Object[] {forStateName});
- if (dialog.open() == 0) {
- if (!Strings.isValid(dialog.getReviewTitle())) {
- AWorkbench.popup("ERROR", "Must enter review title");
- return;
- }
- NewDecisionReviewJob job =
- new NewDecisionReviewJob(teamArt, null, dialog.getReviewTitle(), dialog.getSelectedState(),
- null, ReviewManager.getDefaultDecisionReviewOptions(), null);
- job.setUser(true);
- job.setPriority(Job.LONG);
- job.schedule();
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- });
-
- link = toolkit.createHyperlink(destroyableComposite, "[Add Peer to Peer Review]", SWT.NONE);
- link.addHyperlinkListener(new IHyperlinkListener() {
-
- @Override
- public void linkEntered(HyperlinkEvent e) {
- // do nothing
- }
-
- @Override
- public void linkExited(HyperlinkEvent e) {
- // do nothing
- }
-
- @Override
- public void linkActivated(HyperlinkEvent e) {
- try {
- StateListAndTitleDialog dialog =
- new StateListAndTitleDialog("Add Peer to Peer Review",
- "Select state to that review will be associated with.",
- teamArt.getWorkFlowDefinition().getPageNames());
- dialog.setInitialSelections(new Object[] {forStateName});
- dialog.setReviewTitle(PeerToPeerReviewArtifact.getDefaultReviewTitle(teamArt));
- if (dialog.open() == 0) {
- if (!Strings.isValid(dialog.getReviewTitle())) {
- AWorkbench.popup("ERROR", "Must enter review title");
- return;
- }
- NewPeerToPeerReviewJob job =
- new NewPeerToPeerReviewJob(teamArt, dialog.getReviewTitle(), dialog.getSelectedState());
- job.setUser(true);
- job.setPriority(Job.LONG);
- job.schedule();
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- });
- if (revArts.size() > 0) {
- Composite workComp = toolkit.createContainer(destroyableComposite, 1);
- workComp.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING));
- GridData gd = new GridData();
- gd.horizontalIndent = 20;
- gd.horizontalSpan = 4;
- workComp.setLayoutData(gd);
-
- for (ReviewSMArtifact revArt : revArts) {
- createReviewHyperlink(workComp, managedForm, toolkit, 2, revArt, forStateName);
- }
- }
-
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
-
- @Override
- public String toString() {
- try {
- return "ReviewInfoXWidget for SMA \"" + teamArt + "\"";
- } catch (Exception ex) {
- return "ReviewInfoXWidget " + ex.getLocalizedMessage();
- }
- }
-
- public static String toHTML(final TeamWorkFlowArtifact teamArt, String forStateName) throws OseeCoreException {
- if (ReviewManager.getReviews(teamArt, forStateName).isEmpty()) {
- return "";
- }
- StringBuffer html = new StringBuffer();
- try {
- html.append(AHTML.addSpace(1) + AHTML.getLabelStr(AHTML.LABEL_FONT, "\"" + forStateName + "\" State Reviews"));
- html.append(AHTML.startBorderTable(100, Overview.normalColor, ""));
- html.append(AHTML.addHeaderRowMultiColumnTable(new String[] {"Review Type", "Title", "ID"}));
- for (ReviewSMArtifact art : ReviewManager.getReviews(teamArt, forStateName)) {
- html.append(AHTML.addRowMultiColumnTable(new String[] {art.getArtifactTypeName(), art.getName(),
- art.getHumanReadableId()}));
- }
- html.append(AHTML.endBorderTable());
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- return "Review Exception - " + ex.getLocalizedMessage();
- }
- return html.toString();
- }
-
- public String toHTML() throws OseeCoreException {
- return ReviewInfoXWidget.toHTML(teamArt, forStateName);
- }
-
- private void createReviewHyperlink(Composite comp, IManagedForm managedForm, XFormToolkit toolkit, final int horizontalSpan, final ReviewSMArtifact revArt, String forStateName) throws OseeCoreException {
-
- Composite workComp = toolkit.createContainer(comp, 1);
- workComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING));
- workComp.setLayout(ALayout.getZeroMarginLayout(3, false));
-
- Label strLabel = new Label(workComp, SWT.NONE);
- labelWidgets.add(strLabel);
- if (revArt.isBlocking() && !revArt.isCancelledOrCompleted()) {
- strLabel.setText("State Blocking [" + revArt.getArtifactTypeName() + "] must be completed: ");
- IMessageManager messageManager = managedForm.getMessageManager();
- if (messageManager != null) {
- messageManager.addMessage(
- "validation.error",
- "\"" + forStateName + "\" State has a blocking [" + revArt.getArtifactTypeName() + "] that must be completed.",
- null, IMessageProvider.ERROR, strLabel);
- }
- } else if (!revArt.isCancelledOrCompleted()) {
- strLabel.setText("Open [" + revArt.getArtifactTypeName() + "] exists: ");
- IMessageManager messageManager = managedForm.getMessageManager();
- if (messageManager != null) {
- messageManager.addMessage("validation.error",
- "\"" + forStateName + "\" State has an open [" + revArt.getArtifactTypeName() + "].", null,
- IMessageProvider.WARNING, strLabel);
- }
- } else {
- strLabel.setText(revArt.getStateMgr().getCurrentStateName() + " [" + revArt.getArtifactTypeName() + "] exists: ");
- }
-
- String str = "[" + revArt.getName() + "]";
- Hyperlink hyperLabel =
- toolkit.createHyperlink(workComp, (str.length() > 300 ? Strings.truncate(str, 300) + "..." : str), SWT.NONE);
- hyperLabel.setToolTipText("Select to open review");
- hyperLabel.addListener(SWT.MouseUp, new Listener() {
- @Override
- public void handleEvent(Event event) {
- SMAEditor.editArtifact(revArt);
- }
- });
- }
-
- public void addAdminRightClickOption() throws OseeCoreException {
- // If ATS Admin, allow right-click to auto-complete tasks
- if (AtsUtil.isAtsAdmin() && !AtsUtil.isProductionDb()) {
- labelWidget.addListener(SWT.MouseUp, new Listener() {
- @Override
- public void handleEvent(Event event) {
- if (event.button == 3) {
- if (!MessageDialog.openConfirm(Displays.getActiveShell(), "Auto Complete Reviews",
- "ATS Admin\n\nAuto Complete Reviews?")) {
- return;
- }
- try {
- SkynetTransaction transaction =
- new SkynetTransaction(AtsUtil.getAtsBranch(), "ATS Auto Complete Reviews");
- for (ReviewSMArtifact revArt : ReviewManager.getReviewsFromCurrentState(teamArt)) {
- if (!revArt.isCancelledOrCompleted()) {
- if (revArt.getStateMgr().isUnAssigned()) {
- revArt.getStateMgr().setAssignee(UserManager.getUser());
- }
- Result result =
- revArt.transitionToCompleted("", transaction,
- TransitionOption.OverrideTransitionValidityCheck, TransitionOption.Persist);
- if (result.isFalse()) {
- result.popup();
- return;
- }
- }
- }
- transaction.execute();
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- }
- });
- }
- }
-}
+/******************************************************************************* + * Copyright (c) 2004, 2007 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.ats.editor.widget; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.logging.Level; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.jface.dialogs.IMessageProvider; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.osee.ats.actions.NewDecisionReviewJob; +import org.eclipse.osee.ats.actions.NewPeerToPeerReviewJob; +import org.eclipse.osee.ats.artifact.PeerToPeerReviewArtifact; +import org.eclipse.osee.ats.artifact.ReviewSMArtifact; +import org.eclipse.osee.ats.artifact.StateMachineArtifact.TransitionOption; +import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact; +import org.eclipse.osee.ats.editor.SMAEditor; +import org.eclipse.osee.ats.internal.AtsPlugin; +import org.eclipse.osee.ats.util.AtsUtil; +import org.eclipse.osee.ats.util.Overview; +import org.eclipse.osee.ats.util.widgets.ReviewManager; +import org.eclipse.osee.ats.util.widgets.dialog.StateListAndTitleDialog; +import org.eclipse.osee.framework.core.exception.OseeCoreException; +import org.eclipse.osee.framework.jdk.core.util.AHTML; +import org.eclipse.osee.framework.jdk.core.util.Strings; +import org.eclipse.osee.framework.logging.OseeLevel; +import org.eclipse.osee.framework.logging.OseeLog; +import org.eclipse.osee.framework.skynet.core.UserManager; +import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction; +import org.eclipse.osee.framework.ui.plugin.util.AWorkbench; +import org.eclipse.osee.framework.ui.plugin.util.Result; +import org.eclipse.osee.framework.ui.skynet.XFormToolkit; +import org.eclipse.osee.framework.ui.skynet.widgets.XLabelValueBase; +import org.eclipse.osee.framework.ui.swt.ALayout; +import org.eclipse.osee.framework.ui.swt.Displays; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.ui.forms.IManagedForm; +import org.eclipse.ui.forms.IMessageManager; +import org.eclipse.ui.forms.events.HyperlinkEvent; +import org.eclipse.ui.forms.events.IHyperlinkListener; +import org.eclipse.ui.forms.widgets.Hyperlink; + +/** + * <REM2> handled through SMAEditorEventManager + * + * @author Donald G. Dunne + */ +public class ReviewInfoXWidget extends XLabelValueBase { + + private final String forStateName; + private final ArrayList<Label> labelWidgets = new ArrayList<Label>(); + private Composite destroyableComposite = null; + private final Composite composite; + private final IManagedForm managedForm; + private final int horizontalSpan; + private final XFormToolkit toolkit; + private final TeamWorkFlowArtifact teamArt; + + public ReviewInfoXWidget(IManagedForm managedForm, XFormToolkit toolkit, final TeamWorkFlowArtifact teamArt, final String forStateName, Composite composite, int horizontalSpan) { + super("\"" + forStateName + "\" State Reviews"); + this.managedForm = managedForm; + this.toolkit = toolkit; + this.teamArt = teamArt; + this.forStateName = forStateName; + this.composite = composite; + this.horizontalSpan = horizontalSpan; + reDisplay(); + } + + public void reDisplay() { + if (composite != null && composite.isDisposed()) { + return; + } + if (destroyableComposite != null) { + destroyableComposite.dispose(); + } + destroyableComposite = new Composite(composite, SWT.None); + destroyableComposite.setLayout(ALayout.getZeroMarginLayout(4, false)); + + setToolTip("Blocking Reviews must be completed before transtion. Select Review hyperlink to view."); + createWidgets(managedForm, destroyableComposite, horizontalSpan); + + try { + addAdminRightClickOption(); + Collection<ReviewSMArtifact> revArts = ReviewManager.getReviews(teamArt, forStateName); + if (revArts.isEmpty()) { + setValueText("No Reviews Created"); + } + + Hyperlink link = toolkit.createHyperlink(destroyableComposite, "[Add Decision Review]", SWT.NONE); + link.addHyperlinkListener(new IHyperlinkListener() { + + @Override + public void linkEntered(HyperlinkEvent e) { + // do nothing + } + + @Override + public void linkExited(HyperlinkEvent e) { + // do nothing + } + + @Override + public void linkActivated(HyperlinkEvent e) { + try { + StateListAndTitleDialog dialog = + new StateListAndTitleDialog("Create Decision Review", + "Select state to that review will be associated with.", + teamArt.getWorkFlowDefinition().getPageNames()); + dialog.setInitialSelections(new Object[] {forStateName}); + if (dialog.open() == 0) { + if (!Strings.isValid(dialog.getReviewTitle())) { + AWorkbench.popup("ERROR", "Must enter review title"); + return; + } + NewDecisionReviewJob job = + new NewDecisionReviewJob(teamArt, null, dialog.getReviewTitle(), dialog.getSelectedState(), + null, ReviewManager.getDefaultDecisionReviewOptions(), null); + job.setUser(true); + job.setPriority(Job.LONG); + job.schedule(); + } + } catch (Exception ex) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + } + } + }); + + link = toolkit.createHyperlink(destroyableComposite, "[Add Peer to Peer Review]", SWT.NONE); + link.addHyperlinkListener(new IHyperlinkListener() { + + @Override + public void linkEntered(HyperlinkEvent e) { + // do nothing + } + + @Override + public void linkExited(HyperlinkEvent e) { + // do nothing + } + + @Override + public void linkActivated(HyperlinkEvent e) { + try { + StateListAndTitleDialog dialog = + new StateListAndTitleDialog("Add Peer to Peer Review", + "Select state to that review will be associated with.", + teamArt.getWorkFlowDefinition().getPageNames()); + dialog.setInitialSelections(new Object[] {forStateName}); + dialog.setReviewTitle(PeerToPeerReviewArtifact.getDefaultReviewTitle(teamArt)); + if (dialog.open() == 0) { + if (!Strings.isValid(dialog.getReviewTitle())) { + AWorkbench.popup("ERROR", "Must enter review title"); + return; + } + NewPeerToPeerReviewJob job = + new NewPeerToPeerReviewJob(teamArt, dialog.getReviewTitle(), dialog.getSelectedState()); + job.setUser(true); + job.setPriority(Job.LONG); + job.schedule(); + } + } catch (Exception ex) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); + } + } + }); + if (revArts.size() > 0) { + Composite workComp = toolkit.createContainer(destroyableComposite, 1); + workComp.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.VERTICAL_ALIGN_BEGINNING)); + GridData gd = new GridData(); + gd.horizontalIndent = 20; + gd.horizontalSpan = 4; + workComp.setLayoutData(gd); + + for (ReviewSMArtifact revArt : revArts) { + createReviewHyperlink(workComp, managedForm, toolkit, 2, revArt, forStateName); + } + } + + } catch (OseeCoreException ex) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); + } + } + + @Override + public String toString() { + try { + return "ReviewInfoXWidget for SMA \"" + teamArt + "\""; + } catch (Exception ex) { + return "ReviewInfoXWidget " + ex.getLocalizedMessage(); + } + } + + public static String toHTML(final TeamWorkFlowArtifact teamArt, String forStateName) throws OseeCoreException { + if (ReviewManager.getReviews(teamArt, forStateName).isEmpty()) { + return ""; + } + StringBuffer html = new StringBuffer(); + try { + html.append(AHTML.addSpace(1) + AHTML.getLabelStr(AHTML.LABEL_FONT, "\"" + forStateName + "\" State Reviews")); + html.append(AHTML.startBorderTable(100, Overview.normalColor, "")); + html.append(AHTML.addHeaderRowMultiColumnTable(new String[] {"Review Type", "Title", "ID"})); + for (ReviewSMArtifact art : ReviewManager.getReviews(teamArt, forStateName)) { + html.append(AHTML.addRowMultiColumnTable(new String[] { + art.getArtifactTypeName(), + art.getName(), + art.getHumanReadableId()})); + } + html.append(AHTML.endBorderTable()); + } catch (Exception ex) { + OseeLog.log(AtsPlugin.class, Level.SEVERE, ex); + return "Review Exception - " + ex.getLocalizedMessage(); + } + return html.toString(); + } + + public String toHTML() throws OseeCoreException { + return ReviewInfoXWidget.toHTML(teamArt, forStateName); + } + + private void createReviewHyperlink(Composite comp, IManagedForm managedForm, XFormToolkit toolkit, final int horizontalSpan, final ReviewSMArtifact revArt, String forStateName) throws OseeCoreException { + + Composite workComp = toolkit.createContainer(comp, 1); + workComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_BEGINNING)); + workComp.setLayout(ALayout.getZeroMarginLayout(3, false)); + + Label strLabel = new Label(workComp, SWT.NONE); + labelWidgets.add(strLabel); + if (revArt.isBlocking() && !revArt.isCancelledOrCompleted()) { + strLabel.setText("State Blocking [" + revArt.getArtifactTypeName() + "] must be completed: "); + IMessageManager messageManager = managedForm.getMessageManager(); + if (messageManager != null) { + messageManager.addMessage( + "validation.error", + "\"" + forStateName + "\" State has a blocking [" + revArt.getArtifactTypeName() + "] that must be completed.", + null, IMessageProvider.ERROR, strLabel); + } + } else if (!revArt.isCancelledOrCompleted()) { + strLabel.setText("Open [" + revArt.getArtifactTypeName() + "] exists: "); + IMessageManager messageManager = managedForm.getMessageManager(); + if (messageManager != null) { + messageManager.addMessage("validation.error", + "\"" + forStateName + "\" State has an open [" + revArt.getArtifactTypeName() + "].", null, + IMessageProvider.WARNING, strLabel); + } + } else { + strLabel.setText(revArt.getStateMgr().getCurrentStateName() + " [" + revArt.getArtifactTypeName() + "] exists: "); + } + + String str = "[" + revArt.getName() + "]"; + Hyperlink hyperLabel = + toolkit.createHyperlink(workComp, (str.length() > 300 ? Strings.truncate(str, 300) + "..." : str), SWT.NONE); + hyperLabel.setToolTipText("Select to open review"); + hyperLabel.addListener(SWT.MouseUp, new Listener() { + @Override + public void handleEvent(Event event) { + SMAEditor.editArtifact(revArt); + } + }); + } + + public void addAdminRightClickOption() throws OseeCoreException { + // If ATS Admin, allow right-click to auto-complete tasks + if (AtsUtil.isAtsAdmin() && !AtsUtil.isProductionDb()) { + labelWidget.addListener(SWT.MouseUp, new Listener() { + @Override + public void handleEvent(Event event) { + if (event.button == 3) { + if (!MessageDialog.openConfirm(Displays.getActiveShell(), "Auto Complete Reviews", + "ATS Admin\n\nAuto Complete Reviews?")) { + return; + } + try { + SkynetTransaction transaction = + new SkynetTransaction(AtsUtil.getAtsBranch(), "ATS Auto Complete Reviews"); + for (ReviewSMArtifact revArt : ReviewManager.getReviewsFromCurrentState(teamArt)) { + if (!revArt.isCancelledOrCompleted()) { + if (revArt.getStateMgr().isUnAssigned()) { + revArt.getStateMgr().setAssignee(UserManager.getUser()); + } + Result result = + revArt.transitionToCompleted("", transaction, + TransitionOption.OverrideTransitionValidityCheck, TransitionOption.Persist); + if (result.isFalse()) { + result.popup(); + return; + } + } + } + transaction.execute(); + } catch (OseeCoreException ex) { + OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex); + } + } + } + }); + } + } +} |