/******************************************************************************* * Copyright (c) 2003, 2006 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 * David Schneider, david.schneider@unisys.com - [142500] WTP properties pages fonts don't follow Eclipse preferences *******************************************************************************/ package org.eclipse.jst.j2ee.internal.wizard; import java.util.ArrayList; import org.eclipse.jem.util.emf.workbench.ProjectUtilities; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jst.j2ee.datamodel.properties.IJ2EEComponentImportDataModelProperties; import org.eclipse.jst.j2ee.internal.plugin.J2EEUIMessages; import org.eclipse.jst.j2ee.internal.plugin.J2EEUIPlugin; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.wst.common.componentcore.datamodel.properties.IFacetProjectCreationDataModelProperties; import org.eclipse.wst.common.frameworks.datamodel.DataModelPropertyDescriptor; import org.eclipse.wst.common.frameworks.datamodel.IDataModel; import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage; import org.eclipse.wst.server.ui.ServerUIUtil; import org.eclipse.wst.web.ui.internal.wizards.DataModelFacetCreationWizardPage; public abstract class J2EEImportPage extends DataModelWizardPage { private Combo componentCombo; private Combo fileNameCombo; private static final String STORE_LABEL = "J2EE_IMPORT_"; //$NON-NLS-1$ private static final int SIZING_TEXT_FIELD_WIDTH = 305; protected static final String defBrowseButtonLabel = J2EEUIMessages.getResourceString(J2EEUIMessages.BROWSE_LABEL); /** * @param model * @param pageName */ public J2EEImportPage(IDataModel model, String pageName) { super(model, pageName); } /* * (non-Javadoc) * * @see org.eclipse.wst.common.frameworks.internal.ui.wizard.WTPWizardPage#getValidationPropertyNames() */ @Override protected String[] getValidationPropertyNames() { return null; } /* * (non-Javadoc) * * @see org.eclipse.wst.common.frameworks.internal.ui.wizard.WTPWizardPage#createTopLevelComposite(org.eclipse.swt.widgets.Composite) */ @Override protected Composite createTopLevelComposite(Composite parent) { Composite composite = new Composite(parent, SWT.NULL); GridLayout layout = new GridLayout(3, false); composite.setLayout(layout); createFileNameComposite(composite); createProjectNameComposite(composite); restoreWidgetValues(); Dialog.applyDialogFont(parent); return composite; } /** * @param composite */ protected void createProjectNameComposite(Composite parent) { // if (FlexibleJavaProjectPreferenceUtil.getMultipleModulesPerProjectProp()) { // new NewModuleDataModelGroup(parent, getDataModel(), synchHelper); // } else { Label componentLabel = new Label(parent, SWT.NONE); componentLabel.setText(getProjectImportLabel()); componentLabel.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING)); // setting up combo componentCombo = new Combo(parent, SWT.SINGLE | SWT.BORDER); GridData data = new GridData(GridData.FILL_HORIZONTAL); data.widthHint = SIZING_TEXT_FIELD_WIDTH; componentCombo.setLayoutData(data); // // setting up button // Button newProjectButton = new Button(parent, SWT.PUSH); // newProjectButton.setText(defNewButtonLabel); //$NON-NLS-1$ // newProjectButton.setLayoutData((new GridData(GridData.FILL_HORIZONTAL))); // newProjectButton.addSelectionListener(new SelectionAdapter() { // public void widgetSelected(SelectionEvent e) { // // handleNewProjectButtonPressed(); // } // }); // newProjectButton.setEnabled(true); synchHelper.synchCombo(componentCombo, IJ2EEComponentImportDataModelProperties.PROJECT_NAME, new Control[]{componentLabel}); new Label(parent, SWT.NULL); createServerTargetComposite(parent); //} } protected void createServerTargetComposite(Composite parent) { Label label = new Label(parent, SWT.NONE); label.setText(J2EEUIMessages.getResourceString(J2EEUIMessages.TARGET_RUNTIME_LBL)); Combo serverTargetCombo = new Combo(parent, SWT.BORDER | SWT.READ_ONLY); serverTargetCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Button newServerTargetButton = new Button(parent, SWT.NONE); newServerTargetButton.setText(J2EEUIMessages.getResourceString(J2EEUIMessages.NEW_THREE_DOTS_E)); newServerTargetButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); newServerTargetButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { //FlexibleProjectCreationWizardPage.launchNewRuntimeWizard(getShell(), model); launchNewRuntimeWizard(getShell(), model); } }); Control[] deps = new Control[]{label, newServerTargetButton}; synchHelper.synchCombo(serverTargetCombo, IFacetProjectCreationDataModelProperties.FACET_RUNTIME, deps); } @Override protected IDialogSettings getDialogSettings() { return J2EEUIPlugin.getDefault().getDialogSettings(); } protected String getProjectImportLabel() { return null; } /** * @param composite */ protected void createFileNameComposite(Composite parent) { Label fileLabel = new Label(parent, SWT.NONE); fileLabel.setText(getFileImportLabel()); // setup combo fileNameCombo = new Combo(parent, SWT.SINGLE | SWT.BORDER); fileNameCombo.setLayoutData((new GridData(GridData.FILL_HORIZONTAL))); // setup browse button Button browseButton = new Button(parent, SWT.PUSH); browseButton.setText(defBrowseButtonLabel); browseButton.setLayoutData((new GridData(GridData.HORIZONTAL_ALIGN_END))); browseButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { handleFileBrowseButtonPressed(); } }); browseButton.setEnabled(true); synchHelper.synchCombo(fileNameCombo, IJ2EEComponentImportDataModelProperties.FILE_NAME, new Control[]{fileLabel, browseButton}); } /** * */ protected void handleFileBrowseButtonPressed() { FileDialog dialog = new FileDialog(fileNameCombo.getShell()); dialog.setFilterExtensions(getFilterExpression()); String filename = dialog.open(); if (filename != null) model.setProperty(IJ2EEComponentImportDataModelProperties.FILE_NAME, filename); } /** * @return */ protected String[] getFilterExpression() { return new String[0]; } protected void restoreWidgetValues() { IDialogSettings settings = getDialogSettings(); if (settings != null) { String[] sourceNames = settings.getArray(STORE_LABEL + getFileNamesStoreID()); if (sourceNames == null) return; // ie.- no settings stored for (int i = 0; i < sourceNames.length; i++) { if (sourceNames[i] == null) sourceNames[i] = ""; //$NON-NLS-1$ } fileNameCombo.setItems(sourceNames); } } @Override public void storeDefaultSettings() { IDialogSettings settings = getDialogSettings(); if (settings != null) { // update source names history String[] sourceNames = settings.getArray(STORE_LABEL + getFileNamesStoreID()); if (sourceNames == null) { sourceNames = new String[0]; } // rip out any empty filenames and trim length to 5 ArrayList newNames = new ArrayList(); for (int i = 0; i < sourceNames.length && i < 5; i++) { if (sourceNames[i].trim().length() > 0) { newNames.add(sourceNames[i]); } } String text = fileNameCombo.getText(); newNames.remove(text); newNames.add(0, text); sourceNames = new String[newNames.size()]; newNames.toArray(sourceNames); // sourceNames = addToHistory(sourceNames, // getJ2EEImportDataModel().getStringProperty(J2EEImportDataModel.FILE_NAME)); settings.put(STORE_LABEL + getFileNamesStoreID(), sourceNames); DataModelFacetCreationWizardPage.saveRuntimeSettings(settings, model); } } @Override public void restoreDefaultSettings() { IDialogSettings settings = getDialogSettings(); DataModelFacetCreationWizardPage.restoreRuntimeSettings(settings, model); } /** * @return */ protected String getFileNamesStoreID() { return null; } /** * Must override */ protected String getFileImportLabel() { return null; } /* * (non-Javadoc) * * @see org.eclipse.wst.common.frameworks.internal.ui.wizard.WTPWizardPage#enter() */ @Override protected void enter() { super.enter(); } private boolean launchNewRuntimeWizard(Shell shell, IDataModel model) { DataModelPropertyDescriptor[] preAdditionDescriptors = model.getValidPropertyDescriptors(IFacetProjectCreationDataModelProperties.FACET_RUNTIME); boolean isOK = ServerUIUtil.showNewRuntimeWizard(shell, "", ""); //$NON-NLS-1$ //$NON-NLS-2$ if (isOK) { DataModelPropertyDescriptor[] postAdditionDescriptors = model.getValidPropertyDescriptors(IFacetProjectCreationDataModelProperties.FACET_RUNTIME); Object[] preAddition = new Object[preAdditionDescriptors.length]; for (int i = 0; i < preAddition.length; i++) { preAddition[i] = preAdditionDescriptors[i].getPropertyValue(); } Object[] postAddition = new Object[postAdditionDescriptors.length]; for (int i = 0; i < postAddition.length; i++) { postAddition[i] = postAdditionDescriptors[i].getPropertyValue(); } Object newAddition = ProjectUtilities.getNewObject(preAddition, postAddition); model.notifyPropertyChange(IFacetProjectCreationDataModelProperties.FACET_RUNTIME, IDataModel.VALID_VALUES_CHG); if (newAddition != null) model.setProperty(IFacetProjectCreationDataModelProperties.FACET_RUNTIME, newAddition); } return isOK; } }