| /******************************************************************************* |
| * Copyright (c) 2000, 2015 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.jdt.internal.ui.macbundler; |
| |
| import org.eclipse.jface.util.PropertyChangeEvent; |
| 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.widgets.Button; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.DirectoryDialog; |
| import org.eclipse.swt.widgets.FileDialog; |
| import org.eclipse.swt.widgets.Group; |
| import org.eclipse.swt.widgets.Table; |
| import org.eclipse.swt.widgets.TableItem; |
| import org.eclipse.swt.widgets.Text; |
| |
| |
| public class BundleWizardPage2 extends BundleWizardBasePage { |
| |
| Text fWorkingDir; |
| Table fClassPath; |
| Table fResources; |
| |
| |
| protected BundleWizardPage2(BundleDescription bd) { |
| super("page2", bd); //$NON-NLS-1$ |
| } |
| |
| @Override |
| public void createContents(Composite parent) { |
| |
| Composite c= createComposite(parent, 2); |
| createLabel(c, Util.getString("page2.workingDirectory.label"), GridData.VERTICAL_ALIGN_CENTER); //$NON-NLS-1$ |
| fWorkingDir= createText(c, WORKINGDIR, 1); |
| |
| fClassPath= createTableGroup(parent, Util.getString("page2.addToClasspath.group.label"), true); //$NON-NLS-1$ |
| fResources= createTableGroup(parent, Util.getString("page2.addToBundle.group.label"), false); //$NON-NLS-1$ |
| } |
| |
| Table createTableGroup(Composite parent, String groupName, final boolean onClasspath) { |
| Group g1= createGroup(parent, groupName, 1); |
| final Table table= new Table(g1, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION); |
| setHeightHint(table, 80); |
| Composite c1= createComposite(g1, 3); |
| final Button addButton1= createButton(c1, SWT.NONE, Util.getString("page2.addFile.button.label")); //$NON-NLS-1$ |
| addButton1.addSelectionListener(new SelectionAdapter() { |
| @Override |
| public void widgetSelected(SelectionEvent e) { |
| FileDialog fd= new FileDialog(addButton1.getShell(), SWT.OPEN); |
| fd.setText(Util.getString("page2.chooseFileDialog.title")); //$NON-NLS-1$ |
| String path= fd.open(); |
| if (path != null) { |
| ResourceInfo ri= new ResourceInfo(path); |
| fBundleDescription.addResource(ri, onClasspath); |
| add(table, ri); |
| } |
| } |
| }); |
| final Button addButton2= createButton(c1, SWT.NONE, Util.getString("page2.addFolder.button.label")); //$NON-NLS-1$ |
| addButton2.addSelectionListener(new SelectionAdapter() { |
| @Override |
| public void widgetSelected(SelectionEvent e) { |
| DirectoryDialog fd= new DirectoryDialog(addButton2.getShell(), SWT.OPEN); |
| fd.setText(Util.getString("page2.chooseFolder.dialog.title")); //$NON-NLS-1$ |
| String path= fd.open(); |
| if (path != null) { |
| ResourceInfo ri= new ResourceInfo(path); |
| fBundleDescription.addResource(ri, onClasspath); |
| add(table, ri); |
| } |
| } |
| }); |
| final Button removeButton= createButton(c1, SWT.NONE, Util.getString("page2.remove.button.label")); //$NON-NLS-1$ |
| removeButton.setEnabled(false); |
| removeButton.addSelectionListener(new SelectionAdapter() { |
| @Override |
| public void widgetSelected(SelectionEvent e) { |
| remove(table, onClasspath, removeButton); |
| } |
| }); |
| table.addSelectionListener(new SelectionAdapter() { |
| @Override |
| public void widgetSelected(SelectionEvent e) { |
| removeButton.setEnabled(table.getSelectionCount() > 0); |
| } |
| }); |
| return table; |
| } |
| |
| private void add(Table t, ResourceInfo ri) { |
| TableItem ti= new TableItem(t, SWT.NONE); |
| ti.setData(ri); |
| ti.setText(ri.fPath); |
| } |
| |
| private void remove(Table table, boolean b, Button removeButton) { |
| TableItem[] selection= table.getSelection(); |
| for (int i= 0; i < selection.length; i++) { |
| TableItem ti= selection[i]; |
| ResourceInfo ri= (ResourceInfo) ti.getData(); |
| if (fBundleDescription.removeResource(ri, b)) { |
| int ix= table.indexOf(ti); |
| if (ix >= 0) { |
| table.remove(ix); |
| } |
| } |
| } |
| removeButton.setEnabled(table.getSelectionCount() > 0); |
| } |
| |
| @Override |
| public void propertyChange(PropertyChangeEvent event) { |
| if (fWorkingDir != null) |
| { |
| fWorkingDir.setText(fBundleDescription.get(WORKINGDIR, "")); //$NON-NLS-1$ |
| } |
| |
| if (fClassPath != null) { |
| fClassPath.removeAll(); |
| ResourceInfo[] ris= fBundleDescription.getResources(true); |
| for (int i= 0; i < ris.length; i++) { |
| add(fClassPath, ris[i]); |
| } |
| } |
| |
| if (fResources != null) { |
| fResources.removeAll(); |
| ResourceInfo[] ris= fBundleDescription.getResources(false); |
| for (int i= 0; i < ris.length; i++) { |
| add(fResources, ris[i]); |
| } |
| } |
| } |
| |
| @Override |
| public boolean isPageComplete() { |
| return true; |
| } |
| } |