Skip to content
Snippets Groups Projects
Commit e2fcbcd1 authored by Alexander Diewald's avatar Alexander Diewald
Browse files

Dev Objectives: Fix layout in toolbar

parent fd43e59c
No related branches found
No related tags found
1 merge request!7Dev Objectives: Fix layout in toolbar
ApplicationActionBarAdvisor.java 3e7c0fd992586e6ca7724b871eb0b2cf59244028 GREEN
ApplicationWorkbenchAdvisor.java ef25d5783a4f75e88334fd679834a6e0421f8c2f GREEN
ApplicationWorkbenchWindowAdvisor.java da5cb38300b384579532c678fbc9faa961c2ca6b GREEN
CurrentObjectiveContributionItem.java 11ae1b21ece08cbd04bd7b798f0e0349ee14a61b RED
UpcomingObjectiveContributionItem.java c07438463c4d359ea2f5de40ba90b5ac6991ba9c RED
CurrentObjectiveContributionItem.java 30b220758a01e1ac6b6b67bdcfce76ade789ed4e RED
UpcomingObjectiveContributionItem.java 61822c03cec6f5a00434153e101f4762d112e4ae RED
......@@ -23,9 +23,6 @@ import static org.eclipse.wb.swt.SWTResourceManager.getColor;
import static org.fortiss.tooling.base.ui.utils.ConstraintsBaseUIUtils.activateConfiguration;
import static org.fortiss.tooling.base.ui.utils.ConstraintsBaseUIUtils.deactivateConfiguration;
import static org.fortiss.tooling.base.utils.ConstraintsBaseUtils.getActiveConfigurationsTransitively;
import static org.fortiss.tooling.base.utils.SystemUtils.isLinuxPlatform;
import static org.fortiss.tooling.base.utils.SystemUtils.isMacOSXPlatform;
import static org.fortiss.tooling.base.utils.SystemUtils.isWindowsPlatform;
import static org.fortiss.tooling.kernel.utils.EcoreUtils.getFirstParentWithType;
import java.text.DecimalFormat;
......@@ -35,12 +32,9 @@ import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.ContributionItem;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ITreeSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.events.ControlListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.RGB;
......@@ -51,12 +45,11 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.ISelectionService;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
import org.fortiss.af3.project.model.FileProject;
import org.fortiss.af3.project.model.IProjectConfigurationElement;
import org.fortiss.af3.project.model.configuration.DevelopmentProcessConfiguration;
......@@ -79,7 +72,7 @@ import org.fortiss.tooling.kernel.ui.service.IConstraintUIService;
* @author rahman
*
*/
class CurrentObjectiveContributionItem extends ContributionItem
class CurrentObjectiveContributionItem extends WorkbenchWindowControlContribution
implements ISelectionListener, IResourceChangeListener {
/** The initial objectives. */
......@@ -92,7 +85,7 @@ class CurrentObjectiveContributionItem extends ContributionItem
private Combo currentObjectiveCombo;
/** The control object holding the combo. */
private ToolItem toolitem;
// private ToolItem toolitem;
/** Composite instance to hold several controls */
private Composite composite;
......@@ -102,6 +95,7 @@ class CurrentObjectiveContributionItem extends ContributionItem
/** Constructor. */
public CurrentObjectiveContributionItem() {
super("CurrentObjectiveContributionItem");
// TODO (SB, 12): See
// org.fortiss.tooling.kernel.ui.util.EObjectSelectionUtils.getSelectionService()
ISelectionService ss =
......@@ -111,53 +105,31 @@ class CurrentObjectiveContributionItem extends ContributionItem
getWorkspace().addResourceChangeListener(this);
}
/** Creates the control holding list of objectives for the selected project. */
/** {@inheritDoc} */
@Override
public void fill(ToolBar parent, int index) {
toolitem = new ToolItem(parent, SWT.SEPARATOR, index);
public boolean isDynamic() {
return true;
}
/** {@inheritDoc} */
@Override
protected Control createControl(Composite parent) {
composite = new Composite(parent, SWT.NONE);
composite.addControlListener(new ControlListener() {
@Override
public void controlResized(ControlEvent e) {
composite.getParent().pack(true);
}
@Override
public void controlMoved(ControlEvent e) {
// Do not do anything
}
});
GridLayout layout = new GridLayout(2, false);
layout.marginWidth = 0;
layout.verticalSpacing = 0;
// TODO(SB, 9): Why is an OS-specific case distinction required to position the ComboBox?
// Either, this is an attempt to address #3216, or it is its root cause...!
GridData gridData = new GridData();
gridData.verticalAlignment = GridData.CENTER;
composite.setLayout(layout);
GridData gridData = new GridData(SWT.NONE, SWT.FILL, false, false, 2, 1);
composite.setLayoutData(gridData);
Label label = new Label(composite, SWT.TRANSPARENT);
label.setText("Current Objective");
if(isLinuxPlatform()) {
gridData.verticalIndent = -10;
} else if(isMacOSXPlatform()) {
gridData.verticalIndent = 0;
} else if(isWindowsPlatform()) {
gridData.verticalIndent = -20;
gridData.grabExcessVerticalSpace = true;
GridData data = new GridData(0, SWT.FILL, false, false);
data.verticalIndent = -10;
label.setLayoutData(data);
}
// Objective Combo
currentObjectiveCombo = new Combo(composite, SWT.DROP_DOWN);
currentObjectiveCombo.setLayoutData(gridData);
currentObjectiveCombo.setItems(initialSetOfObjectives);
currentObjectiveCombo.setText(initialObjective);
currentObjectiveCombo.setToolTipText("Set the next modelling objective.");
currentObjectiveCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
......@@ -168,14 +140,12 @@ class CurrentObjectiveContributionItem extends ContributionItem
}
});
currentObjectiveCombo.setItems(initialSetOfObjectives);
currentObjectiveCombo.setText(initialObjective);
currentObjectiveCombo.setToolTipText("Set the next modelling objective.");
toolitem.setWidth(computeWidth(composite));
toolitem.setControl(composite);
parent.setSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
return composite;
}
/** Compute Combo width. */
@Override
protected int computeWidth(Control control) {
return control.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x;
}
......@@ -372,7 +342,7 @@ class CurrentObjectiveContributionItem extends ContributionItem
String currentObjectiveNewName =
currentDevelopmentProcess.getCurrentObjective().getName();
currentObjectiveCombo.setText(currentObjectiveNewName);
toolitem.setWidth(computeWidth(composite));
// toolitem.setWidth(computeWidth(composite));
}
}
......
......@@ -20,9 +20,6 @@ import static org.fortiss.tooling.base.ui.utils.ConstraintsBaseUIUtils.activateC
import static org.fortiss.tooling.base.ui.utils.ConstraintsBaseUIUtils.activateOneConfiguration;
import static org.fortiss.tooling.base.ui.utils.ConstraintsBaseUIUtils.deactivateConfiguration;
import static org.fortiss.tooling.base.ui.utils.ConstraintsBaseUIUtils.deactivateOneConfiguration;
import static org.fortiss.tooling.base.utils.SystemUtils.isLinuxPlatform;
import static org.fortiss.tooling.base.utils.SystemUtils.isMacOSXPlatform;
import static org.fortiss.tooling.base.utils.SystemUtils.isWindowsPlatform;
import java.util.ArrayList;
import java.util.List;
......@@ -32,7 +29,6 @@ import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.action.ContributionItem;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ITreeSelection;
import org.eclipse.swt.SWT;
......@@ -41,15 +37,16 @@ import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.ISelectionListener;
import org.eclipse.ui.ISelectionService;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.menus.WorkbenchWindowControlContribution;
import org.fortiss.af3.project.model.IProjectConfigurationElement;
import org.fortiss.af3.project.model.configuration.DevelopmentProcessConfiguration;
import org.fortiss.af3.project.model.development.ConstraintBasedDevelopmentProcess;
......@@ -72,7 +69,7 @@ import org.fortiss.tooling.kernel.utils.EcoreUtils;
/**
* @author levilucio
*/
public class UpcomingObjectiveContributionItem extends ContributionItem
public class UpcomingObjectiveContributionItem extends WorkbenchWindowControlContribution
implements ISelectionListener, IResourceChangeListener {
/** The initial upcoming objectives. */
......@@ -84,9 +81,6 @@ public class UpcomingObjectiveContributionItem extends ContributionItem
/** The Combo holding the upcoming objectives. */
private Combo upcomingObjectiveCombo;
/** The control object holding the combo. */
private ToolItem toolitem;
/** Configuration of the current project selected in the combo box. */
private ConstraintBasedDevelopmentProcess currentDevelopmentProcess = null;
......@@ -105,44 +99,35 @@ public class UpcomingObjectiveContributionItem extends ContributionItem
workspace.addResourceChangeListener(this);
}
/** Creates the control holding the step length combo. */
/** {@inheritDoc} */
@Override
public void fill(ToolBar parent, int index) {
public boolean isDynamic() {
return true;
}
toolitem = new org.eclipse.swt.widgets.ToolItem(parent, SWT.SEPARATOR, index);
/** {@inheritDoc} */
@Override
protected Control createControl(Composite parent) {
composite = new Composite(parent, SWT.NONE);
org.eclipse.swt.layout.GridLayout layout = new org.eclipse.swt.layout.GridLayout(2, false);
layout.marginWidth = 0; // <-- HERE
GridLayout layout = new GridLayout(3, false);
layout.marginWidth = 0;
layout.verticalSpacing = 0;
composite.setLayout(layout);
GridData gridData = new GridData(SWT.NONE, SWT.FILL, false, false, 3, 1);
composite.setLayoutData(gridData);
org.eclipse.swt.widgets.Label label =
new org.eclipse.swt.widgets.Label(composite, SWT.TRANSPARENT);
label.setText(" Upcoming Objective");
org.eclipse.swt.layout.GridData gridData = new org.eclipse.swt.layout.GridData();
gridData.verticalAlignment = GridData.CENTER;
gridData.widthHint = 200;
if(isLinuxPlatform()) {
gridData.verticalIndent = -10;
} else if(isMacOSXPlatform()) {
gridData.verticalIndent = 0;
} else if(isWindowsPlatform()) {
gridData.verticalIndent = -20;
gridData.grabExcessVerticalSpace = true;
GridData data = new GridData(0, SWT.FILL, false, false);
data.verticalIndent = -10;
label.setLayoutData(data);
}
// Add a separator to the current objective combo.
new Label(composite, SWT.HORIZONTAL);
upcomingObjectiveCombo = new org.eclipse.swt.widgets.Combo(composite, SWT.DROP_DOWN);
upcomingObjectiveCombo.setLayoutData(gridData);
Label label = new Label(composite, SWT.TRANSPARENT);
label.setText("Upcoming Objective");
// Objective Combo
upcomingObjectiveCombo = new Combo(composite, SWT.DROP_DOWN);
upcomingObjectiveCombo.setItems(initialSetOfObjectives);
upcomingObjectiveCombo.setText(initialObjective);
upcomingObjectiveCombo.setToolTipText("Set the next modelling objective.");
upcomingObjectiveCombo.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
currentObjective.updateObjectiveByName(((Combo)e.getSource()).getText());
......@@ -155,7 +140,6 @@ public class UpcomingObjectiveContributionItem extends ContributionItem
});
upcomingObjectiveCombo.addFocusListener(new FocusListener() {
@Override
public void focusGained(FocusEvent e) {
if(currentDevelopmentProcess != null) {
......@@ -185,15 +169,12 @@ public class UpcomingObjectiveContributionItem extends ContributionItem
}
});
upcomingObjectiveCombo.setItems(initialSetOfObjectives);
upcomingObjectiveCombo.setText(initialObjective);
upcomingObjectiveCombo.setToolTipText("Set the next modelling objective.");
toolitem.setWidth(computeWidth(composite));
toolitem.setControl(composite);
parent.setSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
return composite;
}
/** Compute Combo Width */
@Override
protected int computeWidth(Control control) {
return control.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x;
}
......@@ -395,13 +376,12 @@ public class UpcomingObjectiveContributionItem extends ContributionItem
*/
private void setUpcomingComboBasedOnCrieterion() {
if(getUpcomingObjectives().isEmpty() && composite != null) {
composite.setVisible(false);
composite.redraw();
upcomingObjectiveCombo.setEnabled(false);
} else {
composite.setVisible(true);
composite.setFocus();
upcomingObjectiveCombo.setEnabled(true);
upcomingObjectiveCombo.setFocus();
}
composite.redraw();
upcomingObjectiveCombo.redraw();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment