blob: 0e3880cf06a6663a09dee9e769b09b5bc9fb19e9 [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.ote.ui.test.manager.pages;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.logging.Level;
import org.eclipse.osee.framework.jdk.core.type.IPropertyStore;
import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.framework.ui.plugin.OseeUiActivator;
import org.eclipse.osee.framework.ui.plugin.util.HelpUtil;
import org.eclipse.osee.framework.ui.plugin.widgets.IPropertyStoreBasedControl;
import org.eclipse.osee.framework.ui.plugin.widgets.PropertyStoreControlContributions;
import org.eclipse.osee.ote.service.ConnectionEvent;
import org.eclipse.osee.ote.ui.test.manager.core.TestManagerEditor;
import org.eclipse.osee.ote.ui.test.manager.internal.TestManagerPlugin;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
public class AdvancedPage extends TestManagerPage {
public static final OseeUiActivator plugin = TestManagerPlugin.getInstance();
private static final String pageName = "Advanced";
private final List<IPropertyStoreBasedControl> contributions;
private volatile boolean contributionsInitialized;
public AdvancedPage(Composite parent, int style, TestManagerEditor parentTestManager) {
super(parent, style, parentTestManager);
this.contributions = new ArrayList<>();
contributionsInitialized = false;
}
private synchronized List<IPropertyStoreBasedControl> getContributions() {
if (!contributionsInitialized) {
contributionsInitialized = true;
contributions.addAll(PropertyStoreControlContributions.getContributions(TestManagerPlugin.PLUGIN_ID));
}
return contributions;
}
@Override
public void createPage() {
super.createPage();
Composite parent = (Composite) getContent();
Composite extensionPanel = new Composite(parent, SWT.NONE);
GridLayout gL = new GridLayout();
gL.marginWidth = 0;
gL.marginHeight = 0;
extensionPanel.setLayout(gL);
extensionPanel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
Collections.sort(getContributions(), new Comparator<IPropertyStoreBasedControl>() {
@Override
public int compare(IPropertyStoreBasedControl o1, IPropertyStoreBasedControl o2) {
return Integer.valueOf(o1.getPriority()).compareTo(Integer.valueOf(o2.getPriority()));
}
});
for (IPropertyStoreBasedControl widget : getContributions()) {
try {
widget.createControl(extensionPanel);
} catch (Throwable e) {
TestManagerPlugin.log(Level.SEVERE, "problem creating advance page contribution", e);
}
}
createBlankArea(parent, 0, true);
computeScrollSize();
// TODO: Change to use OteHelpContext
HelpUtil.setHelp(this, "test_manager_advanced_page", "org.eclipse.osee.ote.help.ui");
}
@Override
public String getPageName() {
return pageName;
}
private Control createBlankArea(Composite parent, int height, boolean allVertical) {
Composite blank = new Composite(parent, SWT.NONE);
GridLayout gridLayout = new GridLayout();
GridData gd = new GridData();
gd.minimumHeight = height;
gd.grabExcessHorizontalSpace = true;
gd.grabExcessVerticalSpace = allVertical;
blank.setLayout(gridLayout);
blank.setLayoutData(gd);
return parent;
}
protected void createAreaDefaultLayout(Composite parent, boolean allHorizontal, boolean allVertical) {
GridLayout layout = new GridLayout();
GridData data = new GridData(GridData.FILL_BOTH);
data.grabExcessHorizontalSpace = allHorizontal;
data.grabExcessVerticalSpace = allVertical;
parent.setLayout(layout);
parent.setLayoutData(data);
}
@Override
public void saveData() {
IPropertyStore propertyStore = getTestManager().getPropertyStore();
for (IPropertyStoreBasedControl contribution : getContributions()) {
contribution.save(propertyStore);
}
}
@Override
public void restoreData() {
IPropertyStore propertyStore = getTestManager().getPropertyStore();
for (IPropertyStoreBasedControl contribution : getContributions()) {
contribution.load(propertyStore);
}
}
@Override
public boolean areSettingsValidForRun() {
boolean result = true;
for (IPropertyStoreBasedControl contribution : getContributions()) {
result &= contribution.areSettingsValid();
}
return result;
}
@Override
public String getErrorMessage() {
StringBuilder builder = new StringBuilder();
for (IPropertyStoreBasedControl contribution : getContributions()) {
String message = contribution.getErrorMessage();
if (Strings.isValid(message)) {
if (builder.length() > 0) {
builder.append("\n");
}
builder.append(message);
}
}
return builder.toString();
}
@Override
public boolean onConnection(ConnectionEvent event) {
return false;
}
@Override
public boolean onDisconnect(ConnectionEvent event) {
return false;
}
@Override
public boolean onConnectionLost() {
return false;
}
}