blob: 0efc313d189709969ed40a167587c4b1a185c66d [file] [log] [blame]
/*******************************************************************************
* 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.AtsDebugWorkPage;
import org.eclipse.osee.ats.editor.stateItem.AtsLogWorkPage;
import org.eclipse.osee.ats.workflow.AtsWorkPage;
import org.eclipse.osee.framework.db.connection.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.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.getId().equals(AtsDebugWorkPage.PAGE_ID) && !page.isCompleteCancelledState()) {
estHoursStat = new StateEstimatedHoursStat(smaMgr);
estHoursStat.createSidebarService(this, page, toolkit, this);
}
if (!page.getId().equals(AtsLogWorkPage.PAGE_ID) && !page.getId().equals(AtsDebugWorkPage.PAGE_ID) && !page.isCompleteCancelledState()) {
hoursSpent = new StateHoursSpentStat(smaMgr);
hoursSpent.createSidebarService(this, page, toolkit, this);
}
SMAEditor.setLabelFonts(this, SMAEditor.getBoldLabelFont());
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();
}
/* (non-Javadoc)
* @see org.eclipse.osee.framework.skynet.core.event.IFrameworkTransactionEventListener#handleFrameworkTransactionEvent(org.eclipse.osee.framework.skynet.core.event.Sender, org.eclipse.osee.framework.skynet.core.event.FrameworkTransactionData)
*/
@Override
public void handleFrameworkTransactionEvent(Sender sender, FrameworkTransactionData transData) throws OseeCoreException {
if (smaMgr.isInTransition()) return;
if (transData.branchId != AtsPlugin.getAtsBranch().getBranchId()) return;
Displays.ensureInDisplayThread(new Runnable() {
@Override
public void run() {
try {
refresh();
} catch (OseeCoreException ex) {
OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, ex);
}
}
});
}
/* (non-Javadoc)
* @see org.eclipse.swt.widgets.Widget#dispose()
*/
@Override
public void dispose() {
OseeEventManager.removeListener(this);
super.dispose();
}
}