blob: e951e1162b745919743cf922a6e91b998f345c2b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2005 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.j2ee.internal.wizard;
import java.util.List;
import org.eclipse.jface.viewers.CheckStateChangedEvent;
import org.eclipse.jface.viewers.CheckboxTableViewer;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.ICheckStateListener;
import org.eclipse.jface.viewers.TableLayout;
import org.eclipse.jst.j2ee.application.internal.operations.ClassPathSelection;
import org.eclipse.jst.j2ee.application.internal.operations.ClasspathElement;
import org.eclipse.jst.j2ee.application.internal.operations.UpdateManifestDataModelProperties;
import org.eclipse.jst.j2ee.datamodel.properties.IJ2EEComponentCreationDataModelProperties;
import org.eclipse.jst.j2ee.internal.actions.IJ2EEUIContextIds;
import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ControlAdapter;
import org.eclipse.swt.events.ControlEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.internal.WorkbenchMessages;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.eclipse.wst.common.frameworks.internal.DoNotUseMeThisWillBeDeletedPost15;
import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage;
/*
* Created on Nov 13, 2003
*
* To change the template for this generated file go to Window>Preferences>Java>Code Generation>Code and
* Comments
*/
/**
* This has been slated for removal post WTP 1.5. Do not use this class/interface
*
* @deprecated
*/
public class J2EEModulesDependencyPage extends DataModelWizardPage implements IJ2EEComponentCreationDataModelProperties, DoNotUseMeThisWillBeDeletedPost15{
private CheckboxTableViewer availableJarsViewer;
public J2EEModulesDependencyPage(IDataModel model, String pageName) {
super(model, pageName);
setTitle(J2EEUIMessages.getResourceString(J2EEUIMessages.MODULES_DEPENDENCY_PAGE_TITLE));
setDescription(J2EEUIMessages.getResourceString(J2EEUIMessages.MODULES_DEPENDENCY_PAGE_DESC));
}
protected void enter() {
super.enter();
updateJarViewer();
}
private void updateJarViewer() {
ClassPathSelection classPathSelection = (ClassPathSelection)getDataModel().getProperty(CLASSPATH_SELECTION);
if (availableJarsViewer.getInput() != classPathSelection) {
availableJarsViewer.setInput(classPathSelection);
}
}
protected String[] getValidationPropertyNames() {
return null;
}
protected Composite createTopLevelComposite(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout(2, false);
composite.setLayout(layout);
setInfopopID(IJ2EEUIContextIds.NEW_EJB_WIZARD_P3);
Label projectLabel = new Label(composite, SWT.NONE);
projectLabel.setText(WorkbenchMessages.NewProject_title); //$NON-NLS-1$
Text projectText = new Text(composite, SWT.BORDER | SWT.READ_ONLY);
synchHelper.synchText(projectText, PROJECT_NAME, null);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
projectText.setLayoutData(gd);
Label earLabel = new Label(composite, SWT.NONE);
earLabel.setText(J2EEUIMessages.getResourceString(J2EEUIMessages.EAR_PROJECT_FOR_MODULE_CREATION));
Text earText = new Text(composite, SWT.BORDER | SWT.READ_ONLY);
synchHelper.synchText(earText, EAR_COMPONENT_NAME, null);
gd = new GridData(GridData.FILL_HORIZONTAL);
earText.setLayoutData(gd);
Label spacerLabel = new Label(composite, SWT.NONE);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
spacerLabel.setLayoutData(gd);
Label jarsLabel = new Label(composite, SWT.NONE);
jarsLabel.setText(J2EEUIMessages.getResourceString(J2EEUIMessages.MODULES_DEPENDENCY_PAGE_AVAILABLE_JARS));
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
jarsLabel.setLayoutData(gd);
Composite tableComposite = new Composite(composite, SWT.NONE);
gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 2;
gd.horizontalIndent = 0;
gd.heightHint = 60;
gd.widthHint = 200;
tableComposite.setLayoutData(gd);
GridLayout tableLayout = new GridLayout();
tableLayout.marginWidth = 0;
tableComposite.setLayout(tableLayout);
createAvailableJarsList(tableComposite);
spacerLabel = new Label(composite, SWT.NONE);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
spacerLabel.setLayoutData(gd);
Label classpathLabel = new Label(composite, SWT.NONE);
classpathLabel.setText(J2EEUIMessages.getResourceString(J2EEUIMessages.MODULES_DEPENDENCY_PAGE_CLASSPATH));
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
classpathLabel.setLayoutData(gd);
Text classpathText = new Text(composite, SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.READ_ONLY);
//TODO synchhelper work with flexible project
//synchHelper.synchText(classpathText, FlexibleJ2EEModuleCreationDataModel.JAR_LIST_TEXT_UI, null);
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 2;
gd.heightHint = 30;
classpathText.setLayoutData(gd);
return composite;
}
protected void createAvailableJarsList(Composite listGroup) {
availableJarsViewer = CheckboxTableViewer.newCheckList(listGroup, SWT.CHECK | SWT.FULL_SELECTION | SWT.BORDER);
addResizeListenerToTable();
AvailableJarsProvider provider = new AvailableJarsProvider();
availableJarsViewer.setContentProvider(provider);
availableJarsViewer.setLabelProvider(provider);
availableJarsViewer.addCheckStateListener(new ICheckStateListener() {
public void checkStateChanged(CheckStateChangedEvent event) {
availableJARCheckStateChanged(event);
}
});
Table table = availableJarsViewer.getTable();
// set up table layout
TableLayout tableLayout = new org.eclipse.jface.viewers.TableLayout();
tableLayout.addColumnData(new ColumnWeightData(200, true));
tableLayout.addColumnData(new ColumnWeightData(200, true));
table.setLayout(tableLayout);
table.setHeaderVisible(true);
table.setLinesVisible(true);
availableJarsViewer.setSorter(null);
GridData gd = new GridData(GridData.FILL_BOTH);
table.setLayoutData(gd);
// table columns
TableColumn fileNameColumn = new TableColumn(table, SWT.NONE);
fileNameColumn.setText(J2EEUIMessages.getResourceString(J2EEUIMessages.MODULES_DEPENDENCY_PAGE_TABLE_MODULE));
fileNameColumn.setResizable(true);
TableColumn projectColumn = new TableColumn(table, SWT.NONE);
projectColumn.setText(J2EEUIMessages.getResourceString(J2EEUIMessages.MODULES_DEPENDENCY_PAGE_TABLE_PROJECT));
projectColumn.setResizable(true);
updateJarViewer();
}
public void availableJARCheckStateChanged(CheckStateChangedEvent event) {
ClasspathElement element = (ClasspathElement) event.getElement();
element.setSelected(event.getChecked());
String classEntry = element.getText();
IDataModel updateManifest = (IDataModel) model.getProperty(NESTED_UPDATE_MANIFEST_DM);
List classpathList = (List) updateManifest.getProperty(UpdateManifestDataModelProperties.JAR_LIST);
if (event.getChecked()) {
if (!classpathList.contains(classEntry)) {
classpathList.add(classEntry);
}
} else if (classpathList.contains(classEntry)) {
classpathList.remove(classEntry);
}
updateManifest.setProperty(UpdateManifestDataModelProperties.JAR_LIST, classpathList);
// updateManifest.propertyChanged(new WTPOperationDataModelEvent(updateManifest, UpdateManifestDataModel.JAR_LIST, WTPOperationDataModelEvent.PROPERTY_CHG));
}
protected void addResizeListenerToTable() {
Table aTable = availableJarsViewer.getTable();
aTable.addControlListener(new ControlAdapter() {
boolean fResized = false;
public void controlResized(ControlEvent e) {
if (e.widget instanceof Table && !fResized) {
final Table table = (Table) e.widget;
Display.getDefault().asyncExec(new Runnable() {
public void run() {
if (table.isDisposed() || fResized)
return;
Point size = table.getSize();
if (size.x > 4) {
setResized(table);
int newSize = size.x / 2 - 2;
TableColumn column = table.getColumn(0);
if (column != null && !column.isDisposed())
column.setWidth(newSize);
column = table.getColumn(1);
if (column != null && !column.isDisposed())
column.setWidth(newSize);
}
}
});
}
}
public void setResized(Table table) {
fResized = true;
table.removeControlListener(this);
}
});
}
}