/***************************************************************************** * This file is part of Rinzo * * Author: Claudio Cancinos * WWW: https://sourceforge.net/projects/editorxml * Copyright (C): 2008, Claudio Cancinos * * This program 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 * of the License, or (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this program; If not, see <http://www.gnu.org/licenses/> ****************************************************************************/ package ar.com.tadp.xml.rinzo.jdt.wizards; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; import org.eclipse.jdt.internal.ui.viewsupport.FilteredElementTreeSelectionDialog; import org.eclipse.jdt.internal.ui.wizards.buildpaths.ArchiveFileFilter; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ListViewer; import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.FillLayout; 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.ui.internal.ide.dialogs.ResourceComparator; import org.eclipse.ui.model.WorkbenchContentProvider; import org.eclipse.ui.model.WorkbenchLabelProvider; import ar.com.tadp.xml.rinzo.jdt.preferences.TableViewerSupport; /** * Wizard page used to select a list of files containing binding information * * @author ccancinos * */ public class BindingFilesWizardPage extends WizardPage { private ListViewer listViewer; private List<String> files = new ArrayList<String>(); public BindingFilesWizardPage(String pageName, String description) { super(pageName); this.setTitle(pageName); this.setDescription(description); } public void createControl(Composite root) { Composite parent = new Composite(root, NONE); GridLayout gridLayout = new GridLayout(2, false); parent.setLayout(gridLayout); parent.setLayoutData(new GridData(GridData.FILL_BOTH)); this.listViewer = new ListViewer(parent); GridData layoutData = new GridData(GridData.FILL_BOTH); layoutData.grabExcessHorizontalSpace = true; this.listViewer.getControl().setLayoutData(layoutData); this.listViewer.setContentProvider(new TableViewerSupport.ListContentProvider()); this.listViewer.setInput(this.files); Composite buttonParent = new Composite(parent, SWT.NULL); FillLayout fillLayout = new FillLayout(SWT.VERTICAL); fillLayout.spacing = 2; buttonParent.setLayout(fillLayout); Button buttonAdd = new Button(buttonParent, SWT.PUSH); buttonAdd.setText("Add"); Button buttonRemove = new Button(buttonParent, SWT.PUSH); buttonRemove.setText("Remove"); buttonAdd.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { // ElementTreeSelectionDialog selectionDialog = new // ElementTreeSelectionDialog(null, new // WorkbenchLabelProvider(), new WorkbenchContentProvider()); // selectionDialog.setInput(ResourcesPlugin.getWorkspace().getRoot()); // selectionDialog.open(); FilteredElementTreeSelectionDialog dialog = new FilteredElementTreeSelectionDialog(null, new WorkbenchLabelProvider(), new WorkbenchContentProvider()); dialog.setTitle("Binding files selection"); dialog.setMessage("Select the files to be used as JAXB binding files."); dialog.setInitialFilter("*.xjb"); dialog.setComparator(new ResourceComparator(ResourceComparator.NAME)); dialog.setInput(ResourcesPlugin.getWorkspace().getRoot()); ArrayList<IResource> usedJars = new ArrayList<IResource>(); dialog.addFilter(new ArchiveFileFilter(usedJars, true, true)); if (dialog.open() == Window.OK) { Object[] elements = dialog.getResult(); IPath[] res = new IPath[elements.length]; for (int i = 0; i < res.length; i++) { IResource elem = (IResource) elements[i]; files.add(elem.getLocation().toOSString()); } } listViewer.refresh(false); } }); buttonRemove.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { IStructuredSelection selection = (IStructuredSelection) listViewer.getSelection(); for (Iterator iterator = selection.iterator(); iterator.hasNext();) { String element = (String) iterator.next(); files.remove(element); } listViewer.refresh(false); } }); this.setControl(parent); } public List<String> getFiles() { return files; } }