blob: 67dc6da81be97c00d64afb9d288aece5a0b1656a [file] [log] [blame]
package org.eclipse.update.internal.ui.manager;
/*
* (c) Copyright IBM Corp. 2000, 2001.
* All Rights Reserved.
*/
import org.eclipse.swt.widgets.Composite;
import org.eclipse.update.internal.ui.parts.*;
import org.eclipse.update.ui.forms.FormWidgetFactory;
import org.eclipse.update.core.*;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.update.ui.forms.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
import org.eclipse.update.internal.ui.UpdateUIPlugin;
public class ActivitySection extends UpdateSection {
// NL resource keys
private static final String KEY_TITLE = "SnapshotPage.ActivitySection.title";
private static final String KEY_DESC = "SnapshotPage.ActivitySection.desc";
private static final String KEY_DATE = "SnapshotPage.ActivitySection.headers.date";
private static final String KEY_TARGET = "SnapshotPage.ActivitySection.headers.target";
private static final String KEY_ACTION = "SnapshotPage.ActivitySection.headers.action";
private static final String KEY_STATUS = "SnapshotPage.ActivitySection.headers.status";
private static final String KEY_CONFIGURE = "SnapshotPage.ActivitySection.action.configure";
private static final String KEY_FEATURE_INSTALL = "SnapshotPage.ActivitySection.action.featureInstall";
private static final String KEY_FEATURE_REMOVE = "SnapshotPage.ActivitySection.action.featureRemove";
private static final String KEY_SITE_INSTALL = "SnapshotPage.ActivitySection.action.siteInstall";
private static final String KEY_SITE_REMOVE = "SnapshotPage.ActivitySection.action.siteRemove";
private static final String KEY_UNCONFIGURE = "SnapshotPage.ActivitySection.action.unconfigure";
private static final String KEY_UNKNOWN = "SnapshotPage.ActivitySection.action.unknown";
private static final String KEY_OK = "SnapshotPage.ActivitySection.status.ok";
private static final String KEY_NOK = "SnapshotPage.ActivitySection.status.nok";
private static final String KEY_REVERT = "SnapshotPage.ActivitySection.action.revert";
private Composite container;
private FormWidgetFactory factory;
private Control [] headers;
public ActivitySection(UpdateFormPage page) {
super(page);
setAddSeparator(false);
setHeaderText(UpdateUIPlugin.getResourceString(KEY_TITLE));
setDescription(UpdateUIPlugin.getResourceString(KEY_DESC));
}
public Composite createClient(Composite parent, FormWidgetFactory factory) {
GridLayout layout = new GridLayout();
this.factory = factory;
header.setForeground(factory.getColor(factory.COLOR_COMPOSITE_SEPARATOR));
layout.marginWidth = 0;
layout.horizontalSpacing = 10;
container = factory.createComposite(parent);
container.setLayout(layout);
layout.numColumns = 4;
headers = new Control [5];
headers[0] = createHeader(container, factory, UpdateUIPlugin.getResourceString(KEY_DATE));
headers[1] = createHeader(container, factory, UpdateUIPlugin.getResourceString(KEY_TARGET));
headers[2] = createHeader(container, factory, UpdateUIPlugin.getResourceString(KEY_ACTION));
headers[3] = createHeader(container, factory, UpdateUIPlugin.getResourceString(KEY_STATUS));
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
headers[3].setLayoutData(gd);
Composite separator = factory.createCompositeSeparator(container);
headers[4] = separator;
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.heightHint = 1;
gd.horizontalSpan = 4;
separator.setLayoutData(gd);
separator.setBackground(factory.getBorderColor());
return container;
}
private boolean isHeader(Control c) {
for (int i=0; i<headers.length; i++) {
if (c.equals(headers[i])) return true;
}
return false;
}
public void configurationChanged(IInstallConfiguration config) {
Control [] children = container.getChildren();
for (int i=0; i<children.length; i++) {
Control child = children[i];
if (!isHeader(child))
children[i].dispose();
}
IActivity [] activities = config.getActivities();
for (int i=0; i<activities.length; i++) {
IActivity activity = activities[i];
factory.createLabel(container, activity.getDate().toString());
factory.createLabel(container, activity.getLabel());
factory.createLabel(container, getActionLabel(activity));
factory.createLabel(container, getStatusLabel(activity));
}
Composite separator = factory.createCompositeSeparator(container);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.heightHint = 1;
gd.horizontalSpan = 4;
separator.setLayoutData(gd);
separator.setBackground(factory.getBorderColor());
factory.createLabel(container, null);
container.layout(true);
container.getParent().layout(true);
}
private Label createHeader(Composite parent, FormWidgetFactory factory, String text) {
Label label = factory.createLabel(parent, text);
label.setFont(JFaceResources.getBannerFont());
return label;
}
private String getActionLabel(IActivity activity) {
int action = activity.getAction();
switch (action) {
case IActivity.ACTION_CONFIGURE:
return UpdateUIPlugin.getResourceString(KEY_CONFIGURE);
case IActivity.ACTION_FEATURE_INSTALL:
return UpdateUIPlugin.getResourceString(KEY_FEATURE_INSTALL);
case IActivity.ACTION_FEATURE_REMOVE:
return UpdateUIPlugin.getResourceString(KEY_FEATURE_REMOVE);
case IActivity.ACTION_SITE_INSTALL:
return UpdateUIPlugin.getResourceString(KEY_SITE_INSTALL);
case IActivity.ACTION_SITE_REMOVE:
return UpdateUIPlugin.getResourceString(KEY_SITE_REMOVE);
case IActivity.ACTION_UNCONFIGURE:
return UpdateUIPlugin.getResourceString(KEY_UNCONFIGURE);
default:
return UpdateUIPlugin.getResourceString(KEY_UNKNOWN);
}
}
private String getStatusLabel(IActivity activity) {
switch (activity.getStatus()) {
case IActivity.STATUS_OK:
return UpdateUIPlugin.getResourceString(KEY_OK);
case IActivity.STATUS_NOK:
return UpdateUIPlugin.getResourceString(KEY_NOK);
case IActivity.STATUS_REVERT:
return UpdateUIPlugin.getResourceString(KEY_REVERT);
}
return UpdateUIPlugin.getResourceString(KEY_UNKNOWN);
}
}