/* * JBoss, Home of Professional Open Source * Copyright 2005, JBoss Inc., and individual contributors as indicated * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.jbpm.gd.jpdl.deployment; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jdt.core.IClassFile; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.ui.JavaElementLabelProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.events.ModifyEvent; import org.eclipse.swt.events.ModifyListener; import org.eclipse.swt.events.SelectionAdapter; 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.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.dialogs.ElementTreeSelectionDialog; import org.eclipse.ui.dialogs.ISelectionStatusValidator; import org.eclipse.ui.forms.IFormColors; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.model.WorkbenchContentProvider; import org.eclipse.ui.model.WorkbenchLabelProvider; import org.jbpm.gd.jpdl.Plugin; import org.jbpm.gd.jpdl.editor.JpdlEditor; public class DeploymentForm { private static ILabelProvider LABELPROVIDER = new WorkbenchLabelProvider(); private FormToolkit toolkit; private Composite composite; private JpdlEditor editor; private DeploymentInfo deploymentInfo; private ScrolledForm form; private Button includeProcessInfoFileButton; private Text processInfoFileText; private Button includeGraphicalInfoFileButton; private Text graphicalInfoFileText; private Button browseGraphicalInfoFileButton; private Button includeImageFileButton; private Text imageFileText; private Button browseImageFileButton; private Button additionalFilesAddButton; private Button additionalFilesRemoveButton; private Table additionalFilesList; private Button classesAndResourcesAddButton; private Button classesAndResourcesRemoveButton; private Table classesAndResourcesList; private Text serverNameText; private Text serverPortText; private Text serverDeployerText; private Button useCredentialsButton; private Text userNameText; private Text passwordText; public DeploymentForm(FormToolkit toolkit, Composite composite, JpdlEditor editor) { this.toolkit = toolkit; this.composite = composite; this.editor = editor; deploymentInfo = editor.getDeploymentInfo(); } public void create() { createMainForm(); createMainFilesSection(); createAdditionalFilesSection(); createClassesAndResourcesSection(); createUserCredentialsSection(); createServerInfoSection(); } private void createMainForm() { form = toolkit.createScrolledForm(composite); GridData layoutData = new GridData(GridData.FILL_BOTH); form.setLayoutData(layoutData); GridLayout layout = new GridLayout(); layout.numColumns = 2; layout.makeColumnsEqualWidth = true; form.getBody().setLayout(layout); form.getBody().setLayoutData(new GridData(GridData.FILL_BOTH)); } private void createMainFilesSection() { Section mainFilesSection = toolkit.createSection(form.getBody(), Section.TITLE_BAR | Section.DESCRIPTION); mainFilesSection.marginWidth = 5; mainFilesSection.setText("Main Process Files"); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); gridData.verticalAlignment = GridData.BEGINNING; gridData.horizontalSpan = 2; mainFilesSection.setLayoutData(gridData); Composite mainFilesClient = toolkit.createComposite(mainFilesSection); mainFilesSection.setClient(mainFilesClient); mainFilesSection.setDescription("Check and select the files to be included in the deployment."); toolkit.paintBordersFor(mainFilesClient); GridLayout layout = new GridLayout(); layout.marginWidth = 2; layout.marginHeight = 2; layout.numColumns = 3; mainFilesClient.setLayout(layout); createProcessInfoFileField(mainFilesClient); createGraphicalInfoFileField(mainFilesClient); createImageFileField(mainFilesClient); } private void createProcessInfoFileField(Composite parent) { includeProcessInfoFileButton = toolkit.createButton(parent, "Process Info File:", SWT.CHECK); includeProcessInfoFileButton.setSelection(true); includeProcessInfoFileButton.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); processInfoFileText = toolkit.createText(parent, ""); processInfoFileText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); processInfoFileText.setEditable(false); toolkit.createLabel(parent, ""); } private void createGraphicalInfoFileField(Composite parent) { includeGraphicalInfoFileButton = toolkit.createButton(parent, "Graphical Info File:", SWT.CHECK); includeGraphicalInfoFileButton.setSelection(true); includeGraphicalInfoFileButton.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); graphicalInfoFileText = toolkit.createText(parent, ""); graphicalInfoFileText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); graphicalInfoFileText.setEditable(false); browseGraphicalInfoFileButton = toolkit.createButton(parent, "Browse...", SWT.NONE); } private void createImageFileField(Composite parent) { includeImageFileButton = toolkit.createButton(parent, "Image File:", SWT.CHECK); includeImageFileButton.setSelection(true); includeImageFileButton.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); imageFileText = toolkit.createText(parent, ""); imageFileText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); imageFileText.setEditable(false); browseImageFileButton = toolkit.createButton(parent, "Browse...", SWT.NONE); } private void createAdditionalFilesSection() { Section additionalFilesSection = toolkit.createSection(form.getBody(), Section.TITLE_BAR | Section.DESCRIPTION); additionalFilesSection.marginWidth = 5; additionalFilesSection.setText("Additional Files"); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); additionalFilesSection.setLayoutData(gridData); Composite additionalFilesClient = toolkit.createComposite(additionalFilesSection); additionalFilesSection.setClient(additionalFilesClient); additionalFilesSection.setDescription("Add additional files such as forms that need to be included in the deployment."); toolkit.paintBordersFor(additionalFilesClient); GridLayout layout = new GridLayout(); layout.numColumns = 2; additionalFilesClient.setLayout(layout); createAdditionalFilesList(additionalFilesClient); createAdditionalFilesButtons(additionalFilesClient); } private void createAdditionalFilesList(Composite parent) { additionalFilesList = toolkit.createTable(parent, SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL); GridData gridData = new GridData(GridData.FILL_BOTH); gridData.heightHint = 70; gridData.widthHint = 100; additionalFilesList.setLayoutData(gridData); } private void createAdditionalFilesButtons(Composite parent) { Composite composite = toolkit.createComposite(parent); composite.setLayoutData(new GridData(GridData.FILL_VERTICAL)); GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 1; composite.setLayout(gridLayout); additionalFilesAddButton = toolkit.createButton(composite, "Add...", SWT.NONE); additionalFilesAddButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); additionalFilesRemoveButton = toolkit.createButton(composite, "Remove", SWT.NONE); additionalFilesRemoveButton.setEnabled(false); } private void createClassesAndResourcesSection() { Section classesAndResourcesSection = toolkit.createSection(form.getBody(), Section.TITLE_BAR | Section.DESCRIPTION); classesAndResourcesSection.marginWidth = 5; classesAndResourcesSection.setText("Classes and Resources"); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); classesAndResourcesSection.setLayoutData(gridData); Composite classesAndResourcesClient = toolkit.createComposite(classesAndResourcesSection); classesAndResourcesSection.setClient(classesAndResourcesClient); classesAndResourcesSection.setDescription("Add classes and/or resources that need to be included in the deployment."); toolkit.paintBordersFor(classesAndResourcesClient); GridLayout layout = new GridLayout(); layout.numColumns = 2; classesAndResourcesClient.setLayout(layout); createClassesAndResourcesList(classesAndResourcesClient); createClassesAndResourcesButtons(classesAndResourcesClient); } private void createClassesAndResourcesList(Composite parent) { classesAndResourcesList = toolkit.createTable(parent, SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL); GridData gridData = new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL); gridData.heightHint = 70; gridData.widthHint = 100; classesAndResourcesList.setLayoutData(gridData); } private void createClassesAndResourcesButtons(Composite parent) { Composite composite = toolkit.createComposite(parent); composite.setLayoutData(new GridData(GridData.FILL_VERTICAL)); GridLayout gridLayout = new GridLayout(); gridLayout.numColumns = 1; composite.setLayout(gridLayout); classesAndResourcesAddButton = toolkit.createButton(composite, "Add", SWT.NONE); classesAndResourcesAddButton.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); classesAndResourcesRemoveButton = toolkit.createButton(composite, "Remove", SWT.NONE); classesAndResourcesRemoveButton.setEnabled(false); } private void createUserCredentialsSection() { Section userCredentialsSection = toolkit.createSection(form.getBody(), Section.TITLE_BAR | Section.DESCRIPTION); userCredentialsSection.marginWidth = 5; userCredentialsSection.setText("User Credentials"); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); userCredentialsSection.setLayoutData(gridData); Composite userCredentialsClient = toolkit.createComposite(userCredentialsSection); userCredentialsSection.setClient(userCredentialsClient); userCredentialsSection.setDescription("Specify the user credentials for the chosen server."); toolkit.paintBordersFor(userCredentialsClient); GridLayout layout = new GridLayout(); layout.numColumns = 2; userCredentialsClient.setLayout(layout); useCredentialsButton = toolkit.createButton(userCredentialsClient, "Use credentials", SWT.CHECK); useCredentialsButton.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); GridData buttonData = new GridData(); buttonData.horizontalSpan = 2; useCredentialsButton.setLayoutData(buttonData); Label userNameLabel = toolkit.createLabel(userCredentialsClient, "Username:"); userNameLabel.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); userNameText = toolkit.createText(userCredentialsClient, ""); userNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Label passwordLabel = toolkit.createLabel(userCredentialsClient, "Password:"); passwordLabel.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); passwordText = toolkit.createText(userCredentialsClient, "", SWT.PASSWORD); passwordText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); } private void createServerInfoSection() { Section serverInfoSection = toolkit.createSection(form.getBody(), Section.TITLE_BAR | Section.DESCRIPTION); serverInfoSection.marginWidth = 5; serverInfoSection.setText("Server Settings"); GridData gridData = new GridData(GridData.FILL_HORIZONTAL); serverInfoSection.setLayoutData(gridData); Composite serverInfoClient = toolkit.createComposite(serverInfoSection); serverInfoSection.setClient(serverInfoClient); serverInfoSection.setDescription("Specify the settings of the server you wish to deploy to."); toolkit.paintBordersFor(serverInfoClient); GridLayout layout = new GridLayout(); layout.numColumns = 2; serverInfoClient.setLayout(layout); Label serverNameLabel = toolkit.createLabel(serverInfoClient, "Server Name:"); serverNameLabel.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); serverNameText = toolkit.createText(serverInfoClient, ""); serverNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Label serverPortLabel = toolkit.createLabel(serverInfoClient, "Server Port:"); serverPortLabel.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); serverPortText = toolkit.createText(serverInfoClient, ""); serverPortText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Label serverDeployerLabel = toolkit.createLabel(serverInfoClient, "Server Deployer:"); serverDeployerLabel.setForeground(toolkit.getColors().getColor(IFormColors.TITLE)); serverDeployerText = toolkit.createText(serverInfoClient, ""); serverDeployerText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); } public void refresh() { unhookListeners(); updateControls(); hookListeners(); } private void unhookListeners() { includeGraphicalInfoFileButton.removeSelectionListener(includeGraphicalInfoFileButtonSelectionListener); browseGraphicalInfoFileButton.removeSelectionListener(browseGraphicalInfoFileButtonSelectionListener); includeImageFileButton.removeSelectionListener(includeImageFileButtonSelectionListener); browseImageFileButton.removeSelectionListener(browseImageFileButtonSelectionListener); additionalFilesList.removeSelectionListener(additionalFilesListSelectionListener); additionalFilesAddButton.removeSelectionListener(additionaFilesAddButtonSelectionListener); additionalFilesRemoveButton.removeSelectionListener(additionaFilesRemoveButtonSelectionListener); classesAndResourcesList.removeSelectionListener(classesAndResourcesListSelectionListener); classesAndResourcesAddButton.removeSelectionListener(classesAndResourcesAddButtonSelectionListener); classesAndResourcesRemoveButton.removeSelectionListener(classesAndResourcesRemoveButtonSelectionListener); serverNameText.removeModifyListener(serverNameTextListener); serverPortText.removeModifyListener(serverPortTextListener); serverDeployerText.removeModifyListener(serverDeployerTextListener); useCredentialsButton.removeSelectionListener(useCredentialsButtonSelectionListener); userNameText.removeModifyListener(userNameTextListener); passwordText.removeModifyListener(passwordTextListener); } private void updateControls() { updateProcessInfoFileControls(); updateGraphicalInfoFileControls(); updateImageFileControls(); updateAdditionalFilesControls(); updateClassesAndResourcesControls(); updateUseCredentialsControls(); updateServerInfoControls(); } private void updateProcessInfoFileControls() { IFile processInfoFile = deploymentInfo.getProcessInfoFile(); String value = ""; if (processInfoFile != null) { value = processInfoFile.getFullPath().toString(); } includeProcessInfoFileButton.setSelection(!"".equals(value)); includeProcessInfoFileButton.setEnabled(false); processInfoFileText.setText(value); } private void updateGraphicalInfoFileControls() { IFile graphicalInfoFile = deploymentInfo.getGraphicalInfoFile(); String value = ""; if (graphicalInfoFile != null) { value = graphicalInfoFile.getFullPath().toString(); } includeGraphicalInfoFileButton.setSelection(graphicalInfoFile != null); graphicalInfoFileText.setText(value); browseGraphicalInfoFileButton.setEnabled(graphicalInfoFile != null); } private void updateImageFileControls() { IFile imageFile = deploymentInfo.getImageFile(); String value = ""; if (imageFile != null) { value = imageFile.getFullPath().toString(); } includeImageFileButton.setSelection(imageFile != null); imageFileText.setText(value); browseImageFileButton.setEnabled(imageFile != null); } private void updateAdditionalFilesControls() { Object[] additionalFiles = deploymentInfo.getAdditionalFiles(); for (Object object : additionalFiles) { if (object instanceof IFile) { IFile file = (IFile)object; TableItem tableItem = new TableItem(additionalFilesList, SWT.NULL); tableItem.setText(LABELPROVIDER.getText(file) + " (" + file.getFullPath() + ")"); tableItem.setImage(LABELPROVIDER.getImage(file)); tableItem.setData(object); } } } private void updateClassesAndResourcesControls() { Object[] classesAndResources = deploymentInfo.getClassesAndResources(); for (Object object : classesAndResources) { IPath path = null; if (object instanceof IFile) { path = ((IFile)object).getFullPath(); } else if (object instanceof ICompilationUnit) { path = ((ICompilationUnit)object).getPath(); } else if (object instanceof IClassFile) { path = ((IClassFile)object).getPath(); } if (path != null) { TableItem tableItem = new TableItem(classesAndResourcesList, SWT.NULL); tableItem.setData(object); tableItem.setText(LABELPROVIDER.getText(object) + " (" + path + ")"); tableItem.setImage(LABELPROVIDER.getImage(object)); } } } private void updateUseCredentialsControls() { boolean useCredentials = deploymentInfo.getUseCredentials(); useCredentialsButton.setSelection(useCredentials); String userName = deploymentInfo.getUserName(); if (userName != null) { userNameText.setText(userName); } userNameText.setEnabled(useCredentials); String password = deploymentInfo.getPassword(); if (password != null) { passwordText.setText(password); } passwordText.setEnabled(useCredentials); } private void updateServerInfoControls() { String serverName = deploymentInfo.getServerName(); if (serverName != null) { serverNameText.setText(serverName); } String serverPort = deploymentInfo.getServerPort(); if (serverPort != null) { serverPortText.setText(serverPort); } String serverDeployer = deploymentInfo.getServerDeployer(); if (serverDeployer != null) { serverDeployerText.setText(serverDeployer); } } private void hookListeners() { includeGraphicalInfoFileButton.addSelectionListener(includeGraphicalInfoFileButtonSelectionListener); browseGraphicalInfoFileButton.addSelectionListener(browseGraphicalInfoFileButtonSelectionListener); includeImageFileButton.addSelectionListener(includeImageFileButtonSelectionListener); browseImageFileButton.addSelectionListener(browseImageFileButtonSelectionListener); additionalFilesList.addSelectionListener(additionalFilesListSelectionListener); additionalFilesAddButton.addSelectionListener(additionaFilesAddButtonSelectionListener); additionalFilesRemoveButton.addSelectionListener(additionaFilesRemoveButtonSelectionListener); classesAndResourcesList.addSelectionListener(classesAndResourcesListSelectionListener); classesAndResourcesAddButton.addSelectionListener(classesAndResourcesAddButtonSelectionListener); classesAndResourcesRemoveButton.addSelectionListener(classesAndResourcesRemoveButtonSelectionListener); serverNameText.addModifyListener(serverNameTextListener); serverPortText.addModifyListener(serverPortTextListener); serverDeployerText.addModifyListener(serverDeployerTextListener); useCredentialsButton.addSelectionListener(useCredentialsButtonSelectionListener); userNameText.addModifyListener(userNameTextListener); passwordText.addModifyListener(passwordTextListener); } private SelectionListener useCredentialsButtonSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { userNameText.setEnabled(useCredentialsButton.getSelection()); passwordText.setEnabled(useCredentialsButton.getSelection()); deploymentInfo.setUseCredentials(useCredentialsButton.getSelection()); } }; private ModifyListener userNameTextListener = new ModifyListener() { public void modifyText(ModifyEvent event) { deploymentInfo.setUserName(userNameText.getText()); } }; private ModifyListener passwordTextListener = new ModifyListener() { public void modifyText(ModifyEvent event) { deploymentInfo.setPassword(passwordText.getText()); } }; private ModifyListener serverNameTextListener = new ModifyListener() { public void modifyText(ModifyEvent event) { deploymentInfo.setServerName(serverNameText.getText()); editor.setDirty(true); } }; private ModifyListener serverPortTextListener = new ModifyListener() { public void modifyText(ModifyEvent event) { deploymentInfo.setServerPort(serverPortText.getText()); editor.setDirty(true); } }; private ModifyListener serverDeployerTextListener = new ModifyListener() { public void modifyText(ModifyEvent event) { deploymentInfo.setServerDeployer(serverDeployerText.getText()); editor.setDirty(true); } }; private SelectionListener includeGraphicalInfoFileButtonSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { boolean include = includeGraphicalInfoFileButton.getSelection(); browseGraphicalInfoFileButton.setEnabled(include); if (include && graphicalInfoFileText.getData() != null) { deploymentInfo.setGraphicalInfoFile((IFile)graphicalInfoFileText.getData()); } else { deploymentInfo.setGraphicalInfoFile(null); } editor.setDirty(true); } }; private SelectionListener includeImageFileButtonSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { boolean include = includeImageFileButton.getSelection(); browseImageFileButton.setEnabled(include); if (include && imageFileText.getData() != null) { deploymentInfo.setImageFile((IFile)imageFileText.getData()); } else { deploymentInfo.setImageFile(null); } editor.setDirty(true); } }; private SelectionListener browseGraphicalInfoFileButtonSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(null, new WorkbenchLabelProvider(), new WorkbenchContentProvider()); dialog.setTitle("Graphical Info File Selection"); dialog.setMessage("Select the graphical info file."); dialog.setInput(ResourcesPlugin.getWorkspace().getRoot()); dialog.setValidator(fileSelectionStatusValidator); dialog.open(); if (dialog.getFirstResult() != null && dialog.getFirstResult() instanceof IFile) { IFile file = (IFile)dialog.getFirstResult(); graphicalInfoFileText.setText(file.getFullPath().toString()); graphicalInfoFileText.setData(file); deploymentInfo.setGraphicalInfoFile(file); editor.setDirty(true); } } }; private SelectionListener browseImageFileButtonSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(null, new WorkbenchLabelProvider(), new WorkbenchContentProvider()); dialog.setTitle("Image File Selection"); dialog.setMessage("Select the image file."); dialog.setInput(ResourcesPlugin.getWorkspace().getRoot()); dialog.setValidator(fileSelectionStatusValidator); dialog.open(); if (dialog.getFirstResult() != null && dialog.getFirstResult() instanceof IFile) { IFile file = (IFile)dialog.getFirstResult(); imageFileText.setText(file.getFullPath().toString()); imageFileText.setData(file); deploymentInfo.setImageFile(file); editor.setDirty(true); } } }; private SelectionListener additionalFilesListSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { additionalFilesRemoveButton.setEnabled(additionalFilesList.getSelectionCount() > 0); } }; private SelectionListener additionaFilesAddButtonSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(null, new WorkbenchLabelProvider(), new WorkbenchContentProvider()); dialog.setTitle("Additional File Selection"); dialog.setMessage("Select the additional file."); dialog.setAllowMultiple(false); dialog.setInput(ResourcesPlugin.getWorkspace().getRoot()); dialog.setValidator(fileSelectionStatusValidator); dialog.open(); if (dialog.getFirstResult() != null && dialog.getFirstResult() instanceof IFile) { IFile file = (IFile)dialog.getFirstResult(); TableItem tableItem = new TableItem(additionalFilesList, SWT.NULL); tableItem.setText(LABELPROVIDER.getText(file) + " (" + file.getFullPath() + ")"); tableItem.setImage(LABELPROVIDER.getImage(file)); deploymentInfo.addToAdditionalFiles(file); editor.setDirty(true); } } }; private ISelectionStatusValidator fileSelectionStatusValidator = new ISelectionStatusValidator() { public IStatus validate(Object[] arg0) { if (arg0.length == 1 && arg0[0] instanceof IFile) { return new Status(IStatus.OK, Plugin.getDefault().getBundle().getSymbolicName(), "Press OK to confirm."); } else { return new Status(IStatus.ERROR, Plugin.getDefault().getBundle().getSymbolicName(), "Select a single file."); } } }; private SelectionListener additionaFilesRemoveButtonSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { int[] indices = additionalFilesList.getSelectionIndices(); if (indices.length > 0) { TableItem tableItem = additionalFilesList.getItem(indices[0]); Object object = tableItem.getData(); deploymentInfo.removeFromAdditionalFiles(object); additionalFilesList.remove(indices[0]); editor.setDirty(true); } } }; private SelectionListener classesAndResourcesListSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { classesAndResourcesRemoveButton.setEnabled(classesAndResourcesList.getSelectionCount() > 0); } }; private SelectionListener classesAndResourcesAddButtonSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(null, new JavaElementLabelProvider(), new ClassesAndResourcesContentProvider()); dialog.setTitle("Classes and Resources Selection"); dialog.setAllowMultiple(false); dialog.setMessage("Select a class or resouce."); dialog.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot())); dialog.setValidator(classesAndResourcesSelectionStatusValidator); dialog.open(); if (dialog.getFirstResult() != null) { //&& dialog.getFirstResult() instanceof IFile) { IPath path = null; if (dialog.getFirstResult() instanceof IFile) { path = ((IFile)dialog.getFirstResult()).getFullPath(); } else if (dialog.getFirstResult() instanceof ICompilationUnit) { path = ((ICompilationUnit)dialog.getFirstResult()).getPath(); } else if (dialog.getFirstResult() instanceof IClassFile) { path = ((IClassFile)dialog.getFirstResult()).getPath(); } if (path != null) { TableItem tableItem = new TableItem(classesAndResourcesList, SWT.NULL); tableItem.setData(dialog.getFirstResult()); tableItem.setText(LABELPROVIDER.getText(dialog.getFirstResult()) + " (" + path + ")"); tableItem.setImage(LABELPROVIDER.getImage(dialog.getFirstResult())); deploymentInfo.addToClassesAndResources(dialog.getFirstResult()); editor.setDirty(true); } } } }; private ISelectionStatusValidator classesAndResourcesSelectionStatusValidator = new ISelectionStatusValidator() { public IStatus validate(Object[] arg0) { if (arg0.length == 1 && (arg0[0] instanceof IFile || arg0[0] instanceof ICompilationUnit || arg0[0] instanceof IClassFile)) { return new Status(IStatus.OK, Plugin.getDefault().getBundle().getSymbolicName(), "Press OK to confirm."); } else { return new Status(IStatus.ERROR, Plugin.getDefault().getBundle().getSymbolicName(), "Select a single file."); } } }; private SelectionListener classesAndResourcesRemoveButtonSelectionListener = new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { int[] indices = classesAndResourcesList.getSelectionIndices(); if (indices.length > 0) { TableItem tableItem = classesAndResourcesList.getItem(indices[0]); Object object = tableItem.getData(); deploymentInfo.removeFromClassesAndResources(object); classesAndResourcesList.remove(indices[0]); } } }; }