Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorddunne2009-08-03 18:24:50 +0000
committerddunne2009-08-03 18:24:50 +0000
commitcdeb12f903672b69f96ac03bcbaa51b08d9f083c (patch)
treedc736035417e46202f1e97f3195fcb5dce3454b4
parent935cbbb041b0f63a5a1543f2a16e1459a80a425d (diff)
downloadorg.eclipse.osee-cdeb12f903672b69f96ac03bcbaa51b08d9f083c.tar.gz
org.eclipse.osee-cdeb12f903672b69f96ac03bcbaa51b08d9f083c.tar.xz
org.eclipse.osee-cdeb12f903672b69f96ac03bcbaa51b08d9f083c.zip
Estimated hours refresh fix
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAStateMetricsHeader.java111
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowSection.java57
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowTab.java31
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/service/StateEstimatedHoursStat.java149
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/service/StateHoursSpentStat.java135
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/service/StatePercentCompleteStat.java127
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/EstimatedHoursXWidget.java41
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StateHoursSpentXWidget.java108
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StatePercentCompleteXWidget.java107
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/TargetVersionXWidget.java99
-rw-r--r--org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XHyperlabelTeamDefinitionSelection.java4
-rw-r--r--org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelGroupSelection.java2
-rw-r--r--org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelMemberSelection.java2
-rw-r--r--org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelCmdValueSelection.java (renamed from org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelSelection.java)18
-rw-r--r--org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelection.java142
-rw-r--r--org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XWidget.java7
16 files changed, 565 insertions, 575 deletions
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAStateMetricsHeader.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAStateMetricsHeader.java
deleted file mode 100644
index 82d778c1bfa..00000000000
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAStateMetricsHeader.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * 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;
-
-import java.util.logging.Level;
-import org.eclipse.osee.ats.AtsPlugin;
-import org.eclipse.osee.ats.editor.service.StateEstimatedHoursStat;
-import org.eclipse.osee.ats.editor.service.StateHoursSpentStat;
-import org.eclipse.osee.ats.editor.service.StatePercentCompleteStat;
-import org.eclipse.osee.ats.editor.stateItem.AtsLogWorkPage;
-import org.eclipse.osee.ats.util.AtsUtil;
-import org.eclipse.osee.ats.workflow.AtsWorkPage;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData;
-import org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener;
-import org.eclipse.osee.framework.skynet.core.event.OseeEventManager;
-import org.eclipse.osee.framework.skynet.core.event.Sender;
-import org.eclipse.osee.framework.ui.plugin.util.Displays;
-import org.eclipse.osee.framework.ui.skynet.FontManager;
-import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
-import org.eclipse.osee.framework.ui.swt.ALayout;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-
-/**
- * @author Donald G. Dunne
- */
-public class SMAStateMetricsHeader extends Composite implements IFrameworkTransactionEventListener {
-
- private final SMAManager smaMgr;
- private StateEstimatedHoursStat estHoursStat;
- private StatePercentCompleteStat percentComp;
- private StateHoursSpentStat hoursSpent;
-
- public SMAStateMetricsHeader(Composite parent, XFormToolkit toolkit, final SMAManager smaMgr, final AtsWorkPage page) throws OseeCoreException {
- super(parent, SWT.NONE);
- this.smaMgr = smaMgr;
- setLayout(ALayout.getZeroMarginLayout(3, false));
- setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- try {
-
- if (page.isCurrentNonCompleteCancelledState(smaMgr)) {
- percentComp = new StatePercentCompleteStat(smaMgr);
- percentComp.createSidebarService(this, page, toolkit, this);
- }
- if (!page.getId().equals(AtsLogWorkPage.PAGE_ID) && !page.isCompleteCancelledState()) {
- estHoursStat = new StateEstimatedHoursStat(smaMgr);
- estHoursStat.createSidebarService(this, page, toolkit, this);
- }
- if (!page.getId().equals(AtsLogWorkPage.PAGE_ID) && !page.isCompleteCancelledState()) {
- hoursSpent = new StateHoursSpentStat(smaMgr);
- hoursSpent.createSidebarService(this, page, toolkit, this);
- }
-
- SMAEditor.setLabelFonts(this, FontManager.getDefaultLabelFont());
- refresh();
-
- OseeEventManager.addListener(this);
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- public void refresh() throws OseeCoreException {
- if (isDisposed())
- return;
- if (percentComp != null)
- percentComp.refresh();
- if (estHoursStat != null)
- estHoursStat.refresh();
- if (hoursSpent != null)
- hoursSpent.refresh();
- smaMgr.getEditor().onDirtied();
- layout();
- }
-
- @Override
- public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData transData) throws OseeCoreException {
- if (smaMgr.isInTransition())
- return;
- if (transData.branchId != AtsUtil.getAtsBranch().getBranchId())
- return;
- Displays.ensureInDisplayThread(new Runnable() {
- @Override
- public void run() {
- try {
- refresh();
- } catch (OseeCoreException ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- });
- }
-
- @Override
- public void dispose() {
- OseeEventManager.removeListener(this);
- super.dispose();
- }
-}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowSection.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowSection.java
index c73bed8d8f3..8173bad7ded 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowSection.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowSection.java
@@ -31,6 +31,10 @@ import org.eclipse.osee.ats.artifact.ReviewSMArtifact.ReviewBlockType;
import org.eclipse.osee.ats.artifact.TeamWorkFlowArtifact.DefaultTeamState;
import org.eclipse.osee.ats.editor.SMAManager.TransitionOption;
import org.eclipse.osee.ats.editor.service.ServicesArea;
+import org.eclipse.osee.ats.editor.widget.EstimatedHoursXWidget;
+import org.eclipse.osee.ats.editor.widget.StateHoursSpentXWidget;
+import org.eclipse.osee.ats.editor.widget.StatePercentCompleteXWidget;
+import org.eclipse.osee.ats.editor.widget.TargetVersionXWidget;
import org.eclipse.osee.ats.util.AtsUtil;
import org.eclipse.osee.ats.util.widgets.dialog.SMAStatusDialog;
import org.eclipse.osee.ats.workflow.AtsWorkPage;
@@ -67,6 +71,7 @@ import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
@@ -96,9 +101,9 @@ public class SMAWorkFlowSection extends SectionPart {
private final XFormToolkit toolkit;
public static String TRANSITION_TO_STATE_COMBO = "Transition To State Combo";
private Composite mainComp;
- private DynamicXWidgetLayout dynamicXWidgetLayout;
private SMAReviewInfoComposite reviewInfoComposite;
private SMATargetVersionInfoComposite targetVersionInfoComposite;
+ private final List<XWidget> allXWidgets = new ArrayList<XWidget>();
public SMAWorkFlowSection(Composite parent, XFormToolkit toolkit, int style, AtsWorkPage page, SMAManager smaMgr) throws OseeCoreException {
super(parent, toolkit, style | Section.TWISTIE | Section.TITLE_BAR);
@@ -112,6 +117,9 @@ public class SMAWorkFlowSection extends SectionPart {
// parent.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_CYAN));
}
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.forms.AbstractFormPart#initialize(org.eclipse.ui.forms.IManagedForm)
+ */
@Override
public void initialize(final IManagedForm form) {
super.initialize(form);
@@ -161,10 +169,6 @@ public class SMAWorkFlowSection extends SectionPart {
createCurrentPageHeader(workComp, atsWorkPage, toolkit);
- if (!atsWorkPage.isCompleteCancelledState()) {
- new SMAStateMetricsHeader(workComp, toolkit, smaMgr, atsWorkPage);
- }
-
// Add static layoutDatas to atsWorkPage
List<DynamicXWidgetLayoutData> staticDatas = new ArrayList<DynamicXWidgetLayoutData>();
for (WorkItemDefinition workItemDefinition : atsWorkPage.getWorkPageDefinition().getWorkItems(true)) {
@@ -190,11 +194,15 @@ public class SMAWorkFlowSection extends SectionPart {
atsWorkPage.setSmaMgr(smaMgr);
- dynamicXWidgetLayout =
+ // createTargetVersionAndAssigneesHeader(workComp);
+ createMetricsHeader(workComp);
+
+ DynamicXWidgetLayout dynamicXWidgetLayout =
atsWorkPage.createBody(getManagedForm(), workComp, smaMgr.getSma(), xModListener,
isEditable || isGlobalEditable);
+ allXWidgets.addAll(dynamicXWidgetLayout.getXWidgets());
- for (XWidget xWidget : dynamicXWidgetLayout.getXWidgets()) {
+ for (XWidget xWidget : allXWidgets) {
if (xWidget.getLabelWidget() != null) {
SMAEditor.setLabelFonts(xWidget.getLabelWidget(), FontManager.getDefaultLabelFont());
}
@@ -222,6 +230,24 @@ public class SMAWorkFlowSection extends SectionPart {
return workComp;
}
+ private void createTargetVersionAndAssigneesHeader(Composite parent) throws OseeCoreException {
+ Composite comp = new Composite(parent, SWT.None);
+ comp.setLayout(new GridLayout(6, false));
+ comp.setLayoutData(new GridData(GridData.FILL_BOTH));
+ allXWidgets.add(new TargetVersionXWidget(smaMgr, comp, 2, xModListener));
+ }
+
+ private void createMetricsHeader(Composite parent) throws OseeCoreException {
+ if (!atsWorkPage.isCompleteCancelledState()) {
+ Composite comp = new Composite(parent, SWT.None);
+ comp.setLayout(new GridLayout(6, false));
+ comp.setLayoutData(new GridData(GridData.FILL_BOTH));
+ allXWidgets.add(new StatePercentCompleteXWidget(getManagedForm(), atsWorkPage, smaMgr, comp, 2, xModListener));
+ allXWidgets.add(new StateHoursSpentXWidget(getManagedForm(), atsWorkPage, smaMgr, comp, 2, xModListener));
+ allXWidgets.add(new EstimatedHoursXWidget(smaMgr, comp, 2, xModListener));
+ }
+ }
+
protected boolean isShowTaskInfo() throws OseeCoreException {
return smaMgr.isTaskable();
}
@@ -235,10 +261,7 @@ public class SMAWorkFlowSection extends SectionPart {
}
public Result isXWidgetSavable() throws OseeCoreException {
- if (dynamicXWidgetLayout == null) {
- return Result.TrueResult;
- }
- for (XWidget widget : dynamicXWidgetLayout.getXWidgets()) {
+ for (XWidget widget : allXWidgets) {
if (widget instanceof IArtifactWidget) {
IStatus status = widget.isValid();
if (!status.isOK()) {
@@ -255,10 +278,7 @@ public class SMAWorkFlowSection extends SectionPart {
}
public Result isXWidgetDirty() throws OseeCoreException {
- if (dynamicXWidgetLayout == null) {
- return Result.FalseResult;
- }
- for (XWidget widget : dynamicXWidgetLayout.getXWidgets()) {
+ for (XWidget widget : allXWidgets) {
if (widget instanceof IArtifactWidget) {
Result result = ((IArtifactWidget) widget).isDirty();
if (result.isTrue()) {
@@ -270,7 +290,7 @@ public class SMAWorkFlowSection extends SectionPart {
}
public void getDirtyIArtifactWidgets(List<IArtifactWidget> widgets) throws OseeCoreException {
- for (XWidget widget : dynamicXWidgetLayout.getXWidgets()) {
+ for (XWidget widget : allXWidgets) {
if (widget instanceof IArtifactWidget) {
if (((IArtifactWidget) widget).isDirty().isTrue()) {
widgets.add((IArtifactWidget) widget);
@@ -381,6 +401,9 @@ public class SMAWorkFlowSection extends SectionPart {
OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
}
refreshStateServices();
+ for (XWidget xWidget : allXWidgets) {
+ xWidget.refresh();
+ }
}
private void createCurrentPageHeader(Composite parent, AtsWorkPage page, XFormToolkit toolkit) throws OseeCoreException {
@@ -862,7 +885,7 @@ public class SMAWorkFlowSection extends SectionPart {
public List<XWidget> getXWidgets(Class<?> clazz) {
List<XWidget> widgets = new ArrayList<XWidget>();
- for (XWidget widget : dynamicXWidgetLayout.getXWidgets()) {
+ for (XWidget widget : allXWidgets) {
if (clazz.isInstance(widget)) {
widgets.add(widget);
}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowTab.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowTab.java
index eb5bb33a46f..785b2b60011 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowTab.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/SMAWorkFlowTab.java
@@ -96,7 +96,6 @@ public class SMAWorkFlowTab extends FormPage implements IActionable {
private SMADetailsSection smaDetailsSection;
private SMARelationsSection smaRelationsSection;
private SMAGoalMembersSection smaGoalMembersSection;
- private SMAGoalMembersSection smaGoalMembers2Section;
public SMAWorkFlowTab(SMAManager smaMgr) {
super(smaMgr.getEditor(), "overview", "Workflow");
@@ -143,14 +142,11 @@ public class SMAWorkFlowTab extends FormPage implements IActionable {
AtsWorkPage atsWorkPage =
new AtsWorkPage(smaMgr.getWorkFlowDefinition(), workPageDefinition, null,
ATSXWidgetOptionResolver.getInstance());
- if (smaMgr.isCurrentState(atsWorkPage.getName()))
- currentAtsWorkPage = atsWorkPage;
+ if (smaMgr.isCurrentState(atsWorkPage.getName())) currentAtsWorkPage = atsWorkPage;
if (smaMgr.isCurrentState(atsWorkPage.getName()) || smaMgr.getStateMgr().isStateVisited(atsWorkPage.getName())) {
// Don't show completed or cancelled state if not currently those state
- if (atsWorkPage.isCompletePage() && !smaMgr.isCompleted())
- continue;
- if (atsWorkPage.isCancelledPage() && !smaMgr.isCancelled())
- continue;
+ if (atsWorkPage.isCompletePage() && !smaMgr.isCompleted()) continue;
+ if (atsWorkPage.isCancelledPage() && !smaMgr.isCancelled()) continue;
SMAWorkFlowSection section = new SMAWorkFlowSection(atsBody, toolkit, SWT.NONE, atsWorkPage, smaMgr);
managedForm.addPart(section);
control = section.getMainComp();
@@ -159,8 +155,8 @@ public class SMAWorkFlowTab extends FormPage implements IActionable {
}
}
if (smaMgr.getSma() instanceof GoalArtifact) {
- smaGoalMembers2Section = new SMAGoalMembersSection(smaMgr.getEditor(), atsBody, toolkit, SWT.NONE);
- managedForm.addPart(smaGoalMembers2Section);
+ smaGoalMembersSection = new SMAGoalMembersSection(smaMgr.getEditor(), atsBody, toolkit, SWT.NONE);
+ managedForm.addPart(smaGoalMembersSection);
}
smaRelationsSection = new SMARelationsSection(smaMgr.getEditor(), atsBody, toolkit, SWT.NONE);
@@ -204,9 +200,8 @@ public class SMAWorkFlowTab extends FormPage implements IActionable {
refreshToolbar();
- if (smaMgr.getSma().getHelpContext() != null)
- AtsPlugin.getInstance().setHelp(scrolledForm, smaMgr.getSma().getHelpContext(),
- "org.eclipse.osee.ats.help.ui");
+ if (smaMgr.getSma().getHelpContext() != null) AtsPlugin.getInstance().setHelp(scrolledForm,
+ smaMgr.getSma().getHelpContext(), "org.eclipse.osee.ats.help.ui");
} catch (Exception ex) {
OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
@@ -251,8 +246,7 @@ public class SMAWorkFlowTab extends FormPage implements IActionable {
public Result isXWidgetDirty() throws OseeCoreException {
for (SMAWorkFlowSection section : sections) {
Result result = section.isXWidgetDirty();
- if (result.isTrue())
- return result;
+ if (result.isTrue()) return result;
}
return Result.FalseResult;
}
@@ -260,8 +254,7 @@ public class SMAWorkFlowTab extends FormPage implements IActionable {
public Result isXWidgetSavable() throws OseeCoreException {
for (SMAWorkFlowSection section : sections) {
Result result = section.isXWidgetSavable();
- if (result.isFalse())
- return result;
+ if (result.isFalse()) return result;
}
return Result.TrueResult;
}
@@ -291,9 +284,6 @@ public class SMAWorkFlowTab extends FormPage implements IActionable {
if (smaRelationsSection != null) {
smaRelationsSection.dispose();
}
- if (smaGoalMembers2Section != null) {
- smaGoalMembers2Section.dispose();
- }
if (smaGoalMembersSection != null) {
smaGoalMembersSection.dispose();
}
@@ -368,8 +358,7 @@ public class SMAWorkFlowTab extends FormPage implements IActionable {
// Find the ScrolledComposite operating on the control.
ScrolledComposite sComp = null;
- if (control == null || control.isDisposed())
- return;
+ if (control == null || control.isDisposed()) return;
Composite parent = control.getParent();
while (parent != null) {
if (parent instanceof ScrolledComposite) {
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/service/StateEstimatedHoursStat.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/service/StateEstimatedHoursStat.java
deleted file mode 100644
index b338e90e1ef..00000000000
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/service/StateEstimatedHoursStat.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * 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.service;
-
-import java.util.logging.Level;
-import org.eclipse.osee.ats.AtsPlugin;
-import org.eclipse.osee.ats.artifact.ATSAttributes;
-import org.eclipse.osee.ats.editor.SMAManager;
-import org.eclipse.osee.ats.editor.SMAStateMetricsHeader;
-import org.eclipse.osee.ats.workflow.AtsWorkPage;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.events.IHyperlinkListener;
-import org.eclipse.ui.forms.widgets.Hyperlink;
-
-/**
- * @author Donald G. Dunne
- */
-public class StateEstimatedHoursStat {
-
- private Hyperlink link;
- private Label label;
- private AtsWorkPage page;
- private final SMAManager smaMgr;
-
- public StateEstimatedHoursStat(SMAManager smaMgr) {
- this.smaMgr = smaMgr;
- }
-
- public void createSidebarService(Composite workGroup, AtsWorkPage page, XFormToolkit toolkit, final SMAStateMetricsHeader header) throws OseeCoreException {
- this.page = page;
- if (!page.isCompleteCancelledState() && smaMgr.isCurrentState(page.getName())) {
- link = toolkit.createHyperlink(workGroup, "", SWT.NONE);
- if (smaMgr.getSma().isReadOnly())
- link.addHyperlinkListener(new ReadOnlyHyperlinkListener(smaMgr));
- else
- link.addHyperlinkListener(new IHyperlinkListener() {
-
- public void linkEntered(HyperlinkEvent e) {
- }
-
- public void linkExited(HyperlinkEvent e) {
- }
-
- public void linkActivated(HyperlinkEvent e) {
- try {
- smaMgr.promptChangeFloatAttribute(ATSAttributes.ESTIMATED_HOURS_ATTRIBUTE, true);
- header.refresh();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- });
- link.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- link.setToolTipText(TOOLTIP);
- } else {
- label = toolkit.createLabel(workGroup, "", SWT.NONE);
- label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- label.setToolTipText(TOOLTIP);
- }
- refresh();
- }
-
- public String getName() {
- return "Estimated Hours";
- }
-
- public void refresh() {
- if (page == null && link != null && !link.isDisposed()) {
- link.setText("Estimated Hours Error: page == null");
- link.update();
- return;
- } else if (page == null && label != null && !label.isDisposed()) {
- label.setText("Estimated Hours Error: page == null");
- label.update();
- return;
- } else if (page == null) return;
- try {
- StringBuffer sb =
- new StringBuffer(String.format(" State Est Hours: %5.2f",
- smaMgr.getSma().getEstimatedHoursFromArtifact()));
- boolean breakoutNeeded = false;
- if (smaMgr.getTaskMgr().hasTaskArtifacts()) {
- sb.append(String.format("\n Task Est Hours: %5.2f", smaMgr.getSma().getEstimatedHoursFromTasks(
- page.getName())));
- breakoutNeeded = true;
- }
- if (smaMgr.getReviewManager().hasReviews()) {
- sb.append(String.format("\n Review Est Hours: %5.2f", smaMgr.getSma().getEstimatedHoursFromReviews(
- page.getName())));
- breakoutNeeded = true;
- }
- if (breakoutNeeded) {
- setString(String.format("Total State Est Hours: %5.2f", smaMgr.getSma().getEstimatedHoursTotal(
- page.getName())));
- if (link != null && !link.isDisposed()) {
- link.setToolTipText(sb.toString());
- }
- if (label != null && !label.isDisposed()) {
- label.setToolTipText(sb.toString());
- }
- } else {
- setString(String.format("State Estimated Hours: %5.2f", smaMgr.getSma().getEstimatedHoursTotal()));
- }
-
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
- public static String TOOLTIP = "Calculation: \n Workflow Estimated Hours: amount entered for workflow\n" +
- //
- " Task Estimated Hours: total estimated hours for tasks related to this state\n" +
- //
- " Review Estimated Hours: total estimated hours of all reviews related to this state\n" +
- //
- "Total Estimated Hours: Sum of all these values.";
-
- private void setString(String str) {
- if (page != null && link != null && !link.isDisposed()) {
- link.setText(str);
- link.update();
- } else if (page != null && label != null && !label.isDisposed()) {
- label.setText(str);
- label.update();
- } else if (label != null && !label.isDisposed()) {
- label.setText("State Hours Spent Error: page == null");
- label.update();
- } else if (link != null && !link.isDisposed()) {
- link.setText("Estimated Hours Spent Error: page == null");
- link.update();
- }
- }
-}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/service/StateHoursSpentStat.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/service/StateHoursSpentStat.java
deleted file mode 100644
index 95650cf4f8f..00000000000
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/service/StateHoursSpentStat.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*******************************************************************************
- * 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.service;
-
-import java.util.Arrays;
-import java.util.logging.Level;
-import org.eclipse.osee.ats.AtsPlugin;
-import org.eclipse.osee.ats.editor.SMAManager;
-import org.eclipse.osee.ats.editor.SMAPromptChangeStatus;
-import org.eclipse.osee.ats.editor.SMAStateMetricsHeader;
-import org.eclipse.osee.ats.workflow.AtsWorkPage;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.events.IHyperlinkListener;
-import org.eclipse.ui.forms.widgets.Hyperlink;
-
-/**
- * @author Donald G. Dunne
- */
-public class StateHoursSpentStat {
-
- private Hyperlink link;
- private Label label;
- private AtsWorkPage page;
- private final SMAManager smaMgr;
-
- public StateHoursSpentStat(SMAManager smaMgr) {
- this.smaMgr = smaMgr;
- }
-
- public void createSidebarService(Composite workGroup, AtsWorkPage page, XFormToolkit toolkit, final SMAStateMetricsHeader header) throws OseeCoreException {
- this.page = page;
- if (!page.isCompleteCancelledState() && smaMgr.isCurrentState(page.getName())) {
- link = toolkit.createHyperlink(workGroup, "", SWT.NONE);
- if (smaMgr.getSma().isReadOnly())
- link.addHyperlinkListener(new ReadOnlyHyperlinkListener(smaMgr));
- else
- link.addHyperlinkListener(new IHyperlinkListener() {
-
- public void linkEntered(HyperlinkEvent e) {
- }
-
- public void linkExited(HyperlinkEvent e) {
- }
-
- public void linkActivated(HyperlinkEvent e) {
- try {
- SMAPromptChangeStatus.promptChangeStatus(Arrays.asList(smaMgr.getSma()), false);
- header.refresh();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- });
- link.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- } else {
- label = toolkit.createLabel(workGroup, "", SWT.NONE);
- label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- }
- refresh();
- }
-
- public String getName() {
- return "Hours Spent";
- }
-
- public void refresh() {
- if (page == null && link != null && !link.isDisposed()) {
- link.setText("State Hours Error: page == null");
- return;
- } else if (page == null && label != null && !label.isDisposed()) {
- label.setText("State Hours Error: page == null");
- return;
- } else if (page == null) return;
- try {
- StringBuffer sb =
- new StringBuffer(String.format(" State Hours: %5.2f", smaMgr.getStateMgr().getHoursSpent(
- page.getName())));
- boolean breakoutNeeded = false;
- if (smaMgr.getTaskMgr().hasTaskArtifacts()) {
- sb.append(String.format("\n Task Hours: %5.2f", smaMgr.getTaskMgr().getHoursSpent(page.getName())));
- breakoutNeeded = true;
- }
- if (smaMgr.getReviewManager().hasReviews()) {
- sb.append(String.format("\n Review Hours: %5.2f", smaMgr.getReviewManager().getHoursSpent(
- page.getName())));
- breakoutNeeded = true;
- }
- if (breakoutNeeded) {
- setString(String.format("Total State Hours: %5.2f", smaMgr.getSma().getHoursSpentSMAStateTotal(
- page.getName())));
- if (link != null && !link.isDisposed()) {
- link.setToolTipText(sb.toString());
- }
- if (label != null && !label.isDisposed()) {
- label.setToolTipText(sb.toString());
- }
- } else {
- setString(String.format("State Hours Spent: %5.2f", smaMgr.getStateMgr().getHoursSpent(page.getName())));
- }
-
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- private void setString(String str) {
- if (page != null && link != null && !link.isDisposed()) {
- link.setText(str);
- link.update();
- } else if (page != null && label != null && !label.isDisposed()) {
- label.setText(str);
- label.update();
- } else if (label != null && !label.isDisposed()) {
- label.setText("State Hours Spent Error: page == null");
- label.update();
- } else if (link != null && !link.isDisposed()) link.setText("State Hours Spent Error: page == null");
- }
-}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/service/StatePercentCompleteStat.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/service/StatePercentCompleteStat.java
deleted file mode 100644
index e462734718f..00000000000
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/service/StatePercentCompleteStat.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*******************************************************************************
- * 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.service;
-
-import java.util.Arrays;
-import java.util.logging.Level;
-import org.eclipse.osee.ats.AtsPlugin;
-import org.eclipse.osee.ats.editor.SMAManager;
-import org.eclipse.osee.ats.editor.SMAPromptChangeStatus;
-import org.eclipse.osee.ats.editor.SMAStateMetricsHeader;
-import org.eclipse.osee.ats.workflow.AtsWorkPage;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
-import org.eclipse.osee.framework.logging.OseeLevel;
-import org.eclipse.osee.framework.logging.OseeLog;
-import org.eclipse.osee.framework.ui.skynet.XFormToolkit;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.ui.forms.events.HyperlinkEvent;
-import org.eclipse.ui.forms.events.IHyperlinkListener;
-import org.eclipse.ui.forms.widgets.Hyperlink;
-
-/**
- * @author Donald G. Dunne
- */
-public class StatePercentCompleteStat {
-
- private Hyperlink link;
- private AtsWorkPage page;
- private final SMAManager smaMgr;
-
- public StatePercentCompleteStat(SMAManager smaMgr) {
- this.smaMgr = smaMgr;
- }
-
- public void createSidebarService(Composite composite, AtsWorkPage page, XFormToolkit toolkit, final SMAStateMetricsHeader header) throws OseeCoreException {
- this.page = page;
- link = toolkit.createHyperlink(composite, "", SWT.NONE);
- if (smaMgr.getSma().isReadOnly())
- link.addHyperlinkListener(new ReadOnlyHyperlinkListener(smaMgr));
- else
- link.addHyperlinkListener(new IHyperlinkListener() {
-
- public void linkEntered(HyperlinkEvent e) {
- }
-
- public void linkExited(HyperlinkEvent e) {
- }
-
- public void linkActivated(HyperlinkEvent e) {
- try {
- SMAPromptChangeStatus.promptChangeStatus(Arrays.asList(smaMgr.getSma()), false);
- header.refresh();
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
- }
- }
- });
- link.setToolTipText(TOOLTIP);
- link.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
- refresh();
- }
- public static String TOOLTIP = "Calculation: \n State Percent: amount entered by user\n" +
- //
- " Task Percent: total percent of all tasks related to state / number of tasks related to state\n" +
- //
- " Review Percent: total percent of all reviews related to state / number of reviews related to state\n" +
- //
- "Total State Percent: state percent + all task percents + all review percents / 1 + num tasks + num reviews";
-
- public void refresh() {
- if (page == null && link != null && !link.isDisposed()) {
- link.setText("State Percent Error: page == null");
- return;
- } else if (page == null) return;
-
- try {
- StringBuffer sb =
- new StringBuffer(String.format(" State Percent: %d", smaMgr.getStateMgr().getPercentComplete(
- page.getName())));
- boolean breakoutNeeded = false;
- if (smaMgr.getTaskMgr().hasTaskArtifacts()) {
- sb.append(String.format("\n Task Percent: %d", smaMgr.getTaskMgr().getPercentComplete(
- page.getName())));
- breakoutNeeded = true;
- }
- if (smaMgr.getReviewManager().hasReviews()) {
- sb.append(String.format("\n Review Percent: %d", smaMgr.getReviewManager().getPercentComplete(
- page.getName())));
- breakoutNeeded = true;
- }
- if (breakoutNeeded) {
- setString(String.format("Total State Percent: %d", smaMgr.getSma().getPercentCompleteSMAStateTotal(
- page.getName())));
- if (link != null && !link.isDisposed()) {
- link.setToolTipText(sb.toString() + "\n" + TOOLTIP);
- }
- } else {
- setString(String.format("State Percent Complete: %d", smaMgr.getStateMgr().getPercentComplete(
- page.getName())));
- }
- } catch (Exception ex) {
- OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
- }
- }
-
- private void setString(String str) {
- if (page != null && link != null && !link.isDisposed()) {
- link.setText(str);
- link.update();
- } else if (link != null && !link.isDisposed()) link.setText("State Hours Spent Error: page == null");
- }
-
- public String getName() {
- return "Percent Complete";
- }
-
-}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/EstimatedHoursXWidget.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/EstimatedHoursXWidget.java
new file mode 100644
index 00000000000..519383e51e1
--- /dev/null
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/EstimatedHoursXWidget.java
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * 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 org.eclipse.osee.ats.AtsPlugin;
+import org.eclipse.osee.ats.artifact.ATSAttributes;
+import org.eclipse.osee.ats.editor.SMAManager;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.widgets.XFloatDam;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class EstimatedHoursXWidget extends XFloatDam {
+
+ public EstimatedHoursXWidget(SMAManager smaMgr, Composite composite, int horizontalSpan, XModifiedListener xModListener) {
+ super(ATSAttributes.ESTIMATED_HOURS_ATTRIBUTE.getDisplayName());
+ try {
+ if (xModListener != null) {
+ addXModifiedListener(xModListener);
+ }
+ setArtifact(smaMgr.getSma(), ATSAttributes.ESTIMATED_HOURS_ATTRIBUTE.getStoreName());
+ createWidgets(composite, horizontalSpan);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE, ex);
+ }
+ }
+
+}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StateHoursSpentXWidget.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StateHoursSpentXWidget.java
new file mode 100644
index 00000000000..951fa05896a
--- /dev/null
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StateHoursSpentXWidget.java
@@ -0,0 +1,108 @@
+/*******************************************************************************
+ * 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.Collections;
+import java.util.logging.Level;
+import org.eclipse.osee.ats.AtsPlugin;
+import org.eclipse.osee.ats.editor.SMAManager;
+import org.eclipse.osee.ats.editor.SMAPromptChangeStatus;
+import org.eclipse.osee.ats.workflow.AtsWorkPage;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.widgets.XHyperlinkLabelValueSelection;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.IManagedForm;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class StateHoursSpentXWidget extends XHyperlinkLabelValueSelection {
+
+ private final SMAManager smaMgr;
+ private final AtsWorkPage page;
+
+ public StateHoursSpentXWidget(IManagedForm managedForm, AtsWorkPage page, final SMAManager smaMgr, Composite composite, int horizontalSpan, XModifiedListener xModListener) {
+ super("State Hours Spent");
+ this.page = page;
+ this.smaMgr = smaMgr;
+ if (xModListener != null) {
+ addXModifiedListener(xModListener);
+ }
+ setEditable(!smaMgr.getSma().isReadOnly());
+ addXModifiedListener(new XModifiedListener() {
+
+ @Override
+ public void widgetModified(XWidget widget) {
+ try {
+ SMAPromptChangeStatus.promptChangeStatus(Collections.singleton(smaMgr.getSma()), false);
+ refresh();
+ smaMgr.getEditor().onDirtied();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+ });
+ setToolTip(TOOLTIP);
+ super.createWidgets(managedForm, composite, horizontalSpan);
+ }
+
+ public static String TOOLTIP = "Calculation: \n State Hours Spent: amount entered by user\n" +
+ //
+ " Task Hours Spent: total hours spent of all tasks related to state\n" +
+ //
+ " Review Hours Spent: total hours spent of all reviews related to state\n" +
+ //
+ "Total State Hours Spent: state hours + all task hours + all review hours";
+
+ @Override
+ public void refresh() {
+ super.refresh();
+ if (getControl().isDisposed()) {
+ setValueLabel("State Percent Error: page == null");
+ return;
+ } else if (page == null) return;
+
+ if (page == null) {
+ setValueLabel("page == null");
+ return;
+ } else if (page == null) return;
+ try {
+ StringBuffer sb =
+ new StringBuffer(String.format(" State Hours: %5.2f", smaMgr.getStateMgr().getHoursSpent(
+ page.getName())));
+ boolean breakoutNeeded = false;
+ if (smaMgr.getTaskMgr().hasTaskArtifacts()) {
+ sb.append(String.format("\n Task Hours: %5.2f", smaMgr.getTaskMgr().getHoursSpent(page.getName())));
+ breakoutNeeded = true;
+ }
+ if (smaMgr.getReviewManager().hasReviews()) {
+ sb.append(String.format("\n Review Hours: %5.2f", smaMgr.getReviewManager().getHoursSpent(
+ page.getName())));
+ breakoutNeeded = true;
+ }
+ if (breakoutNeeded) {
+ setLabel("Total State Hours");
+ setValueLabel(String.format("%5.2f", smaMgr.getSma().getHoursSpentSMAStateTotal(page.getName())));
+ setToolTip(sb.toString());
+ } else {
+ setLabel("State Hours Spent");
+ setValueLabel(String.format("%5.2f", smaMgr.getStateMgr().getHoursSpent(page.getName())));
+ }
+
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StatePercentCompleteXWidget.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StatePercentCompleteXWidget.java
new file mode 100644
index 00000000000..864f7c6bb64
--- /dev/null
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/StatePercentCompleteXWidget.java
@@ -0,0 +1,107 @@
+/*******************************************************************************
+ * 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.Collections;
+import java.util.logging.Level;
+import org.eclipse.osee.ats.AtsPlugin;
+import org.eclipse.osee.ats.editor.SMAManager;
+import org.eclipse.osee.ats.editor.SMAPromptChangeStatus;
+import org.eclipse.osee.ats.workflow.AtsWorkPage;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.widgets.XHyperlinkLabelValueSelection;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.IManagedForm;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class StatePercentCompleteXWidget extends XHyperlinkLabelValueSelection {
+
+ private final SMAManager smaMgr;
+ private final AtsWorkPage page;
+
+ public StatePercentCompleteXWidget(IManagedForm managedForm, AtsWorkPage page, final SMAManager smaMgr, Composite composite, int horizontalSpan, XModifiedListener xModListener) {
+ super("State Percent Complete");
+ this.page = page;
+ this.smaMgr = smaMgr;
+ if (xModListener != null) {
+ addXModifiedListener(xModListener);
+ }
+ setEditable(!smaMgr.getSma().isReadOnly());
+ addXModifiedListener(new XModifiedListener() {
+
+ @Override
+ public void widgetModified(XWidget widget) {
+ try {
+ SMAPromptChangeStatus.promptChangeStatus(Collections.singleton(smaMgr.getSma()), false);
+ refresh();
+ smaMgr.getEditor().onDirtied();
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+ });
+ setToolTip(TOOLTIP);
+ super.createWidgets(managedForm, composite, horizontalSpan);
+ }
+
+ public static String TOOLTIP = "Calculation: \n State Percent: amount entered by user\n" +
+ //
+ " Task Percent: total percent of all tasks related to state / number of tasks related to state\n" +
+ //
+ " Review Percent: total percent of all reviews related to state / number of reviews related to state\n" +
+ //
+ "Total State Percent: state percent + all task percents + all review percents / 1 + num tasks + num reviews";
+
+ @Override
+ public void refresh() {
+ super.refresh();
+ if (getControl().isDisposed()) {
+ setValueLabel("State Percent Error: page == null");
+ return;
+ } else if (page == null) return;
+
+ try {
+ StringBuffer sb =
+ new StringBuffer(String.format(" State Percent: %d", smaMgr.getStateMgr().getPercentComplete(
+ page.getName())));
+ boolean breakoutNeeded = false;
+ if (smaMgr.getTaskMgr().hasTaskArtifacts()) {
+ sb.append(String.format("\n Task Percent: %d", smaMgr.getTaskMgr().getPercentComplete(
+ page.getName())));
+ breakoutNeeded = true;
+ }
+ if (smaMgr.getReviewManager().hasReviews()) {
+ sb.append(String.format("\n Review Percent: %d", smaMgr.getReviewManager().getPercentComplete(
+ page.getName())));
+ breakoutNeeded = true;
+ }
+ if (breakoutNeeded) {
+ setLabel("Total State Percent:");
+ setValueLabel(String.valueOf(smaMgr.getSma().getPercentCompleteSMAStateTotal(page.getName())));
+ if (!getControl().isDisposed()) {
+ setToolTip(sb.toString() + "\n" + TOOLTIP);
+ }
+ } else {
+ setLabel("State Percent Complete:");
+ setValueLabel(String.valueOf(smaMgr.getStateMgr().getPercentComplete(page.getName())));
+ }
+ setEditable(!smaMgr.getSma().isReadOnly());
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+ }
+
+}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/TargetVersionXWidget.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/TargetVersionXWidget.java
new file mode 100644
index 00000000000..51e1bf2ace1
--- /dev/null
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/editor/widget/TargetVersionXWidget.java
@@ -0,0 +1,99 @@
+/*
+ * Created on Aug 2, 2009
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.ats.editor.widget;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.osee.ats.AtsPlugin;
+import org.eclipse.osee.ats.artifact.VersionArtifact.VersionReleaseType;
+import org.eclipse.osee.ats.editor.SMAManager;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.ui.skynet.widgets.XHyperlinkLabelCmdValueSelection;
+import org.eclipse.osee.framework.ui.skynet.widgets.XModifiedListener;
+import org.eclipse.osee.framework.ui.skynet.widgets.XWidget;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author Donald G. Dunne
+ */
+public class TargetVersionXWidget extends XHyperlinkLabelCmdValueSelection {
+
+ private final SMAManager smaMgr;
+
+ /**
+ * @param label
+ */
+ public TargetVersionXWidget(SMAManager smaMgr, Composite composite, int horizontalSpan, XModifiedListener xModListener) {
+ super("Target Version", false);
+ this.smaMgr = smaMgr;
+ if (xModListener != null) {
+ addXModifiedListener(xModListener);
+ }
+ final SMAManager fSmaMgr = smaMgr;
+ addXModifiedListener(new XModifiedListener() {
+
+ @Override
+ public void widgetModified(XWidget widget) {
+ try {
+ if (fSmaMgr.promptChangeVersion(
+ AtsUtil.isAtsAdmin() ? VersionReleaseType.Both : VersionReleaseType.UnReleased, false)) {
+ refresh();
+ }
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ }
+ });
+ super.createControls(composite, horizontalSpan);
+
+ }
+
+ @Override
+ public void refresh() {
+ super.refresh();
+ if (getControl().isDisposed()) {
+ return;
+ }
+ try {
+ String str = "";
+ if (smaMgr.getTargetedForVersion() != null) {
+ str = smaMgr.getTargetedForVersion() + "";
+ } else {
+ str = "<edit>";
+ }
+ setValueLabel(str);
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.osee.framework.ui.skynet.widgets.XText#isValid()
+ */
+ @Override
+ public IStatus isValid() {
+ IStatus status = super.isValid();
+ // Don't transition without targeted version if so configured
+ try {
+ boolean required =
+ smaMgr.teamDefHasWorkRule(AtsWorkDefinitions.RuleWorkItemId.atsRequireTargetedVersion.name()) || smaMgr.getWorkPageDefinition().hasWorkRule(
+ AtsWorkDefinitions.RuleWorkItemId.atsRequireTargetedVersion.name());
+
+ if (required && smaMgr.getTargetedForVersion() == null) {
+ status = new Status(IStatus.ERROR, AtsPlugin.PLUGIN_ID, "Workflow must be targeted for a version.");
+ }
+ } catch (OseeCoreException ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
+ }
+ return status;
+ }
+
+}
diff --git a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XHyperlabelTeamDefinitionSelection.java b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XHyperlabelTeamDefinitionSelection.java
index 8c34f291b88..7af48e67b54 100644
--- a/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XHyperlabelTeamDefinitionSelection.java
+++ b/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/widgets/XHyperlabelTeamDefinitionSelection.java
@@ -20,12 +20,12 @@ import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.search.Active;
import org.eclipse.osee.framework.skynet.core.utility.Artifacts;
import org.eclipse.osee.framework.ui.skynet.SkynetGuiPlugin;
-import org.eclipse.osee.framework.ui.skynet.widgets.XHyperlinkLabelSelection;
+import org.eclipse.osee.framework.ui.skynet.widgets.XHyperlinkLabelCmdValueSelection;
/**
* @author Donald G. Dunne
*/
-public class XHyperlabelTeamDefinitionSelection extends XHyperlinkLabelSelection {
+public class XHyperlabelTeamDefinitionSelection extends XHyperlinkLabelCmdValueSelection {
public static final String WIDGET_ID = XHyperlabelTeamDefinitionSelection.class.getSimpleName();
Set<TeamDefinitionArtifact> selectedTeamDefs = new HashSet<TeamDefinitionArtifact>();
diff --git a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelGroupSelection.java b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelGroupSelection.java
index 00db03a968a..e2d598088f9 100644
--- a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelGroupSelection.java
+++ b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelGroupSelection.java
@@ -23,7 +23,7 @@ import org.eclipse.swt.widgets.Display;
/**
* @author Donald G. Dunne
*/
-public class XHyperlabelGroupSelection extends XHyperlinkLabelSelection {
+public class XHyperlabelGroupSelection extends XHyperlinkLabelCmdValueSelection {
public static final String WIDGET_ID = XHyperlabelGroupSelection.class.getSimpleName();
Set<Artifact> selectedGroups = new HashSet<Artifact>();
diff --git a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelMemberSelection.java b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelMemberSelection.java
index ecede3f2162..c72f3bd0fe6 100644
--- a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelMemberSelection.java
+++ b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlabelMemberSelection.java
@@ -23,7 +23,7 @@ import org.eclipse.swt.widgets.Display;
/**
* @author Donald G. Dunne
*/
-public class XHyperlabelMemberSelection extends XHyperlinkLabelSelection {
+public class XHyperlabelMemberSelection extends XHyperlinkLabelCmdValueSelection {
Set<User> selectedUsers = new HashSet<User>();
diff --git a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelSelection.java b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelCmdValueSelection.java
index 9b5fdf74f49..ea664110647 100644
--- a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelSelection.java
+++ b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelCmdValueSelection.java
@@ -13,6 +13,7 @@ package org.eclipse.osee.framework.ui.skynet.widgets;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.framework.ui.swt.ALayout;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
@@ -27,20 +28,17 @@ import org.eclipse.ui.forms.widgets.FormToolkit;
/**
* @author Donald G. Dunne
*/
-public abstract class XHyperlinkLabelSelection extends XWidget {
+public abstract class XHyperlinkLabelCmdValueSelection extends XWidget {
Label valueLabel;
HyperLinkLabel selectHyperLinkLabel, clearHyperLinkLabel;
private final boolean supportClear;
- /**
- * @param label
- */
- public XHyperlinkLabelSelection(String label) {
+ public XHyperlinkLabelCmdValueSelection(String label) {
this(label, false);
}
- public XHyperlinkLabelSelection(String label, boolean supportClear) {
+ public XHyperlinkLabelCmdValueSelection(String label, boolean supportClear) {
super(label);
this.supportClear = supportClear;
}
@@ -65,9 +63,6 @@ public abstract class XHyperlinkLabelSelection extends XWidget {
return false;
}
- /**
- * @return the supportClear
- */
public boolean isSupportClear() {
return supportClear;
}
@@ -89,7 +84,7 @@ public abstract class XHyperlinkLabelSelection extends XWidget {
}
selectHyperLinkLabel = new HyperLinkLabel(comp, SWT.NONE);
- selectHyperLinkLabel.setToolTipText("Select to Modify");
+ selectHyperLinkLabel.setToolTipText(Strings.isValid(getToolTip()) ? getToolTip() : "Select to Modify");
selectHyperLinkLabel.addListener(SWT.MouseUp, new Listener() {
public void handleEvent(Event event) {
if (handleSelection()) {
@@ -184,4 +179,7 @@ public abstract class XHyperlinkLabelSelection extends XWidget {
public void setXmlData(String str) {
}
+ public void setValueLabel(String str) {
+ valueLabel.setText(str);
+ }
}
diff --git a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelection.java b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelection.java
new file mode 100644
index 00000000000..4ff1d72378e
--- /dev/null
+++ b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XHyperlinkLabelValueSelection.java
@@ -0,0 +1,142 @@
+/*******************************************************************************
+ * 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.framework.ui.skynet.widgets;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.osee.framework.jdk.core.util.AHTML;
+import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.framework.ui.swt.ALayout;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Hyperlink;
+
+/**
+ * @author Donald G. Dunne
+ */
+public abstract class XHyperlinkLabelValueSelection extends XWidget {
+
+ Hyperlink valueHyperlinkLabel;
+
+ public XHyperlinkLabelValueSelection(String label) {
+ super(label);
+ }
+
+ public String getCurrentValue() {
+ return "";
+ }
+
+ @Override
+ protected void createControls(Composite parent, int horizontalSpan) {
+
+ Composite comp = new Composite(parent, SWT.NONE);
+ comp.setLayout(ALayout.getZeroMarginLayout(5, false));
+ comp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+ // Create Text Widgets
+ if (isDisplayLabel() && !getLabel().equals("")) {
+ labelWidget = new Label(comp, SWT.NONE);
+ labelWidget.setText(getLabel() + ":");
+ if (getToolTip() != null) {
+ labelWidget.setToolTipText(getToolTip());
+ }
+ }
+
+ if (toolkit == null) {
+ valueHyperlinkLabel = new Hyperlink(comp, SWT.NONE);
+ } else {
+ valueHyperlinkLabel = toolkit.createHyperlink(comp, "<edit>", SWT.NONE);
+ }
+ valueHyperlinkLabel.setToolTipText(Strings.isValid(getToolTip()) ? getToolTip() : "Select to Modify");
+ valueHyperlinkLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ valueHyperlinkLabel.addListener(SWT.MouseUp, new Listener() {
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event)
+ */
+ public void handleEvent(Event event) {
+ refresh();
+ notifyXModifiedListeners();
+ }
+ });
+
+ refresh();
+ }
+
+ @Override
+ public void refresh() {
+ valueHyperlinkLabel.setText(getCurrentValue());
+ valueHyperlinkLabel.update();
+ valueHyperlinkLabel.getParent().update();
+ validate();
+
+ }
+
+ @Override
+ public Control getControl() {
+ return valueHyperlinkLabel;
+ }
+
+ @Override
+ public void adaptControls(FormToolkit toolkit) {
+ super.adaptControls(toolkit);
+ toolkit.adapt(valueHyperlinkLabel, true, true);
+ valueHyperlinkLabel.update();
+ }
+
+ @Override
+ public String toHTML(String labelFont) {
+ return AHTML.getLabelValueStr(AHTML.LABEL_FONT, getLabel(), getCurrentValue());
+ }
+
+ @Override
+ public void dispose() {
+ }
+
+ @Override
+ public Object getData() {
+ return null;
+ }
+
+ @Override
+ public String getReportData() {
+ return null;
+ }
+
+ @Override
+ public String getXmlData() {
+ return null;
+ }
+
+ @Override
+ public IStatus isValid() {
+ return Status.OK_STATUS;
+ }
+
+ @Override
+ public void setFocus() {
+ }
+
+ @Override
+ public void setXmlData(String str) {
+ }
+
+ public void setValueLabel(String str) {
+ valueHyperlinkLabel.setText(str);
+ }
+}
diff --git a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XWidget.java b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XWidget.java
index 2b35f4b0e43..73b8af09ce3 100644
--- a/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XWidget.java
+++ b/org.eclipse.osee.framework.ui.skynet/src/org/eclipse/osee/framework/ui/skynet/widgets/XWidget.java
@@ -83,7 +83,9 @@ public abstract class XWidget {
public void setToolTip(String toolTip) {
this.toolTip = toolTip;
- if (this.labelWidget != null && !labelWidget.isDisposed()) this.labelWidget.setToolTipText(toolTip);
+ if (this.labelWidget != null && !labelWidget.isDisposed()) {
+ this.labelWidget.setToolTipText(toolTip);
+ }
}
public void addXModifiedListener(XModifiedListener listener) {
@@ -384,6 +386,9 @@ public abstract class XWidget {
public void setLabel(String label) {
this.label = label;
+ if (labelWidget != null && !labelWidget.isDisposed()) {
+ labelWidget.setText(label);
+ }
}
public Label getLabelWidget() {

Back to the top