blob: 69cb780922a354783230202d82b8afa49e5e7159 [file] [log] [blame]
/*********************************************************************
* Copyright (c) 2010 Boeing
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Boeing - initial API and implementation
**********************************************************************/
package org.eclipse.osee.ats.ide.editor.tab.workflow.header;
import org.eclipse.osee.ats.api.IAtsWorkItem;
import org.eclipse.osee.ats.api.user.AtsCoreUsers;
import org.eclipse.osee.ats.ide.column.AssigneeColumnUI;
import org.eclipse.osee.ats.ide.editor.WorkflowEditor;
import org.eclipse.osee.ats.ide.internal.Activator;
import org.eclipse.osee.ats.ide.internal.AtsApiService;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
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.ui.plugin.util.AWorkbench;
import org.eclipse.osee.framework.ui.swt.ALayout;
import org.eclipse.osee.framework.ui.swt.Widgets;
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 WfeAssigneesHeader extends Composite {
private final static String LABEL = "Assignee(s):";
Label valueLabel;
private final IAtsWorkItem workItem;
public WfeAssigneesHeader(Composite parent, int style, final IAtsWorkItem workItem, final boolean isEditable, final WorkflowEditor editor) {
super(parent, style);
this.workItem = workItem;
setLayoutData(new GridData());
setLayout(ALayout.getZeroMarginLayout(2, false));
editor.getToolkit().adapt(this);
if (!workItem.isCancelled() && !workItem.isCompleted()) {
Hyperlink link = editor.getToolkit().createHyperlink(this, LABEL, 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 {
if (editor.isDirty()) {
editor.doSave(null);
}
if (!isEditable && !workItem.getStateMgr().getAssignees().contains(
AtsCoreUsers.UNASSIGNED_USER) && !workItem.getStateMgr().getAssignees().contains(
AtsApiService.get().getUserService().getCurrentUser())) {
AWorkbench.popup("ERROR", "You must be assigned to modify assignees.\nContact current Assignee.");
return;
}
if (AssigneeColumnUI.promptChangeAssignees(workItem, false)) {
editor.doSave(null);
}
} catch (Exception ex) {
OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex);
}
}
});
} else {
Label origLabel = editor.getToolkit().createLabel(this, LABEL);
origLabel.setLayoutData(new GridData());
}
valueLabel = editor.getToolkit().createLabel(this, "Not Set");
valueLabel.setLayoutData(new GridData());
refresh();
}
public void refresh() {
if (Widgets.isAccessible(valueLabel)) {
String value = "";
try {
if (workItem.isCompletedOrCancelled()) {
value = "N/A";
} else if (workItem.getStateMgr().getAssignees().isEmpty()) {
value = "Error: State has no assignees";
} else {
valueLabel.setToolTipText(workItem.getStateMgr().getAssigneesStr());
value = workItem.getStateMgr().getAssigneesStr();
}
} catch (OseeCoreException ex) {
OseeLog.log(Activator.class, OseeLevel.SEVERE_POPUP, ex);
value = ex.getLocalizedMessage();
valueLabel.setToolTipText(value);
}
valueLabel.setText(Strings.truncate(value, 150, true));
valueLabel.getParent().layout(true);
valueLabel.getParent().getParent().layout(true);
}
}
}