diff options
Diffstat (limited to 'plugins/org.eclipse.jem.ui/beaninfoui/org/eclipse/jem/internal/beaninfo/ui/PackagesWorkbookPage.java')
-rw-r--r-- | plugins/org.eclipse.jem.ui/beaninfoui/org/eclipse/jem/internal/beaninfo/ui/PackagesWorkbookPage.java | 464 |
1 files changed, 0 insertions, 464 deletions
diff --git a/plugins/org.eclipse.jem.ui/beaninfoui/org/eclipse/jem/internal/beaninfo/ui/PackagesWorkbookPage.java b/plugins/org.eclipse.jem.ui/beaninfoui/org/eclipse/jem/internal/beaninfo/ui/PackagesWorkbookPage.java deleted file mode 100644 index 01423c47d..000000000 --- a/plugins/org.eclipse.jem.ui/beaninfoui/org/eclipse/jem/internal/beaninfo/ui/PackagesWorkbookPage.java +++ /dev/null @@ -1,464 +0,0 @@ -/******************************************************************************* - * Copyright (c) 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 - *******************************************************************************/ -/* - * $RCSfile: PackagesWorkbookPage.java,v $ - * $Revision: 1.9 $ $Date: 2005/10/03 23:06:42 $ - */ -package org.eclipse.jem.internal.beaninfo.ui; - -import java.util.*; -import java.util.List; - -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.jdt.core.*; -import org.eclipse.jdt.ui.JavaElementLabelProvider; -import org.eclipse.jface.viewers.*; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.ui.dialogs.*; - -import org.eclipse.jem.internal.beaninfo.core.SearchpathEntry; - -public class PackagesWorkbookPage implements IBuildSearchPage { - - /** - * Validator for this workbook page to verify the selections on Choose page. - * @version 1.0 - * @author - */ - public static class ChoosePackagesSelectionValidator implements ISelectionStatusValidator { - - private IStatus fgErrorStatus = StatusHelper.ERROR_STATUS; //$NON-NLS-1$ - private IStatus fgOKStatus = StatusHelper.OK_STATUS; - - public ChoosePackagesSelectionValidator() { - } - - /* - * @see ISelectionValidator#validate(Object) - */ - public IStatus validate(Object[] selection) { - if (isValid(selection)) { - return fgOKStatus; - } - return fgErrorStatus; - } - - private boolean isValid(Object[] selection) { - if (selection.length == 0) - return false; - - for (int i = 0; i < selection.length; i++) { - if (selection[i] instanceof IPackageFragment) - continue; // Fragments are always valid - return false; - } - - return true; - } - - } - - - private Label label = null; - private Table table = null; - private Composite buttonBar = null; - private Button choosePackagesButton = null; - private Button chooseDefPathsButton = null; - private Label spacer1 = null; - private Button removeButton = null; - // ... ui - - private IJavaProject javaProject = null; - private SearchPathListLabelProvider labelProvider = null; - private BeaninfoPathsBlock beaninfosPathsBlock = null; - private IPackageFragmentRoot[][] rootsPerRawEntry; - private IClasspathEntry[] rawList; - private TableViewer tableViewer; - private List packagesList = null; - private Composite top; - - public PackagesWorkbookPage(IWorkspaceRoot workspaceRoot, BeaninfoPathsBlock beaninfosPathsBlock) { - this.beaninfosPathsBlock = beaninfosPathsBlock; - this.packagesList = new ArrayList(); - this.labelProvider = new SearchPathListLabelProvider(); - } - - public Control createControl(Composite parent){ - top = new Composite(parent, SWT.NONE); - GridData gridData = new org.eclipse.swt.layout.GridData(); - gridData.horizontalSpan = 2; - GridLayout gridLayout = new GridLayout(); - gridLayout.numColumns = 2; - top.setLayout(gridLayout); - label = new Label(top, SWT.NONE); - label.setText(BeanInfoUIMessages.PackagesWorkbook_LabelText); - label.setLayoutData(gridData); - createTable(); - createButtonBar(); - top.setSize(new Point(300, 200)); - updateEnabledStates(); - if(spacer1==null){ - //TODO: - } - return top; - } - - /** - * This method initializes table - * - */ - private void createTable() { - GridData gridData1 = new org.eclipse.swt.layout.GridData(); - gridData1.grabExcessVerticalSpace = true; - gridData1.verticalAlignment = org.eclipse.swt.layout.GridData.FILL; - gridData1.grabExcessHorizontalSpace = true; - gridData1.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; - table = new Table(top, SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); - table.setLayoutData(gridData1); - table.addSelectionListener(new org.eclipse.swt.events.SelectionListener() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - updateButtons(); - } - public void widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent e) { - widgetSelected(e); - } - }); - tableViewer = new TableViewer(table); - tableViewer.setLabelProvider(labelProvider); - tableViewer.setSorter(new SPListElementSorter()); - tableViewer.setContentProvider(new ArrayContentProvider()); - tableViewer.setInput(packagesList); - } - - /** - * This method initializes buttonBar - * - */ - private void createButtonBar() { - RowLayout rowLayout = new RowLayout(); - rowLayout.type = org.eclipse.swt.SWT.VERTICAL; - rowLayout.fill = true; - GridData gridData2 = new org.eclipse.swt.layout.GridData(); - gridData2.grabExcessVerticalSpace = true; - gridData2.verticalAlignment = org.eclipse.swt.layout.GridData.FILL; - gridData2.horizontalAlignment = org.eclipse.swt.layout.GridData.BEGINNING; - buttonBar = new Composite(top, SWT.NONE); - buttonBar.setLayoutData(gridData2); - buttonBar.setLayout(rowLayout); - choosePackagesButton = new Button(buttonBar, SWT.NONE); - choosePackagesButton.setText(BeanInfoUIMessages.PackagesWorkbook_ChoosePackages); - choosePackagesButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - final List elementsToAdd = choosePackages(); - addToPackagesList(elementsToAdd); - } - }); - chooseDefPathsButton = new Button(buttonBar, SWT.NONE); - chooseDefPathsButton.setText(BeanInfoUIMessages.PackagesWorkbook_ChooseDefinedPaths); - chooseDefPathsButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - List elementsToAdd = chooseDefined(); - addToPackagesList(elementsToAdd); - } - }); - spacer1 = new Label(buttonBar, SWT.NONE); - removeButton = new Button(buttonBar, SWT.NONE); - removeButton.setText(BeanInfoUIMessages.PackagesWorkbook_Remove); - removeButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - List selected = BeaninfoPathsBlock.getSelectedList(tableViewer.getSelection()); - packagesList.removeAll(selected); - tableViewer.refresh(); - pageChanged(); - } - }); - } - - private void addToPackagesList(final List toAdd){ - if (toAdd != null && !toAdd.isEmpty()) { - packagesList.addAll(toAdd); - tableViewer.refresh(); - table.getDisplay().asyncExec(new Runnable(){ - public void run() { - tableViewer.setSelection(new StructuredSelection(toAdd)); - } - }); - pageChanged(); - } - } - - public void init(IJavaProject jproject) { - javaProject = jproject; - labelProvider.setJavaProject(jproject); - try { - rawList = javaProject.getRawClasspath(); - rootsPerRawEntry = new IPackageFragmentRoot[rawList.length][]; - for (int i = 0; i < rawList.length; i++) { - rootsPerRawEntry[i] = javaProject.findPackageFragmentRoots(rawList[i]); - } - } catch (JavaModelException e) { - rawList = new IClasspathEntry[0]; - rootsPerRawEntry = new IPackageFragmentRoot[0][]; - } - updatePackagesList(); - } - - public List getSelection() { - return BeaninfoPathsBlock.getSelectedList(tableViewer.getSelection()); - } - - public void setSelection(List selection) { - tableViewer.setSelection(new StructuredSelection(selection)); - } - - private void updatePackagesList() { - List spelements = beaninfosPathsBlock.getSearchpathOrderingPage().getElements(); - - List packageElements = new ArrayList(spelements.size()); - for (int i = 0; i < spelements.size(); i++) { - BPListElement spe = (BPListElement) spelements.get(i); - if (spe instanceof BPSearchListElement) { - packageElements.add(spe); - } - } - packagesList.clear(); - packagesList.addAll(packageElements); - if(tableViewer!=null && !table.isDisposed()) - tableViewer.refresh(); - } - - /** - * Choose the packages that should be in the search path. - */ - private List choosePackages() { - - ISelectionStatusValidator validator = new ChoosePackagesSelectionValidator(); - - // Show up to the package fragment, don't show any contents of it. - Class[] acceptedClasses = - new Class[] { IJavaProject.class, IPackageFragmentRoot.class, IPackageFragment.class }; - Object[] rejectedFragments = getFilteredExistingEntries(); - - // Only show package fragments that have children (i.e. there classes in it, not interested - // in intermediate ones that have no classes defined in them. Those are filtered out. - TypedViewerFilter filter = new TypedViewerFilter(acceptedClasses, rejectedFragments) { - public boolean select(Viewer viewer, Object parentElement, Object element) { - if (super.select(viewer, parentElement, element)) { - if (element instanceof IPackageFragment) { - IPackageFragment pkg = (IPackageFragment) element; - try { - return pkg.hasChildren(); - } catch (JavaModelException e) { - } - return false; - } else - return true; - } - return false; - } - }; - - ITreeContentProvider provider = new PackageOnlyContentProvider(); - - ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT); - ElementTreeSelectionDialog dialog = - new ElementTreeSelectionDialog(top.getShell(), labelProvider, provider); - dialog.setTitle(BeanInfoUIMessages.BeaninfoPathsBlock_UI__addsearchpath_title); - - dialog.setValidator(validator); - dialog.setMessage(BeanInfoUIMessages.BeaninfoPathsBlock_UI__addsearchpath_description); - dialog.addFilter(filter); - dialog.setInput(javaProject); - - if (dialog.open() == Window.OK) { - Object[] elements = dialog.getResult(); - List newElements = new ArrayList(elements.length); - for (int i = 0; i < elements.length; i++) { - BPListElement newGuy = newBPListElement(elements[i]); - if (newGuy != null) - newElements.add(newGuy); - } - return newElements; - } - return Collections.EMPTY_LIST; - } - - /** - * Create a new BPListElement for the given object. - */ - protected BPListElement newBPListElement(Object element) { - SearchpathEntry se = null; - boolean isExported = false; - IPackageFragment frag = (IPackageFragment) element; - // Need to find corresponding raw class path entry. - IPackageFragmentRoot root = (IPackageFragmentRoot) frag.getParent(); // Get frag root. - for (int i = 0; i < rootsPerRawEntry.length; i++) { - for (int j = 0; j < rootsPerRawEntry[i].length; j++) { - if (rootsPerRawEntry[i][j].equals(root)) { - isExported = rawList[i].isExported() || rawList[i].getEntryKind() == IClasspathEntry.CPE_SOURCE; - se = new SearchpathEntry(rawList[i].getEntryKind(), rawList[i].getPath(), frag.getElementName()); - break; - } - } - } - - return new BPSearchListElement(se, false, false, isExported); - } - - /** - * Return the list of entries that already are in the search path - * so that they don't show up in the list. - */ - protected Object[] getFilteredExistingEntries() { - try { - IPackageFragmentRoot[] roots = javaProject.getPackageFragmentRoots(); - List entries = packagesList; - List fragments = new ArrayList(entries.size()); - Iterator itr = entries.iterator(); - while (itr.hasNext()) { - BPListElement elem = (BPListElement) itr.next(); - if (elem instanceof BPSearchListElement) { - BPSearchListElement bse = (BPSearchListElement) elem; - fragments.addAll(getPackages(bse, roots)); - } - } - return fragments.toArray(); - } catch (JavaModelException e) { - } - return new Object[0]; - } - - /** - * Find the package fragments for this package entry. - */ - protected List getPackages(BPSearchListElement element, IPackageFragmentRoot[] roots) { - String packageName = ((SearchpathEntry) element.getEntry()).getPackage(); - if (packageName == null) - return Collections.EMPTY_LIST; - - try { - List packages = new ArrayList(10); - for (int i = 0; i < roots.length; i++) { - IJavaElement[] pfs = roots[i].getChildren(); - for (int j = 0; j < pfs.length; j++) - if (pfs[j].getElementType() == IJavaElement.PACKAGE_FRAGMENT - && pfs[j].getElementName().equals(packageName)) { - packages.add(pfs[j]); - break; - } - } - return packages; - } catch (JavaModelException e) { - } - return Collections.EMPTY_LIST; - } - /** - * Choose the pre-defined search paths that should be in the search path. - */ - private List chooseDefined() { - - // Current pre-defined ones are only pre-reqed projects. - // The list of inputs will not contain any already in the path. - // We will create them here and if not selected they will thrown away. - // The assumption is that there are not very many and our SearchPathListLabelProvider does - // a good job of showing them. Otherwise we would need to come up with one that can show - // IJavaProjects when we get them. - List inputs = new ArrayList(); - List currentList = packagesList; - for (int i = 0; i < rawList.length; i++) { - if (rawList[i].getEntryKind() == IClasspathEntry.CPE_PROJECT) { - boolean exists = false; - for (int j = 0; j < currentList.size(); j++) { - BPSearchListElement bse = (BPSearchListElement) currentList.get(j); - if (bse.getEntry().getKind() == IClasspathEntry.CPE_PROJECT && rawList[i].getPath().equals(bse.getEntry().getPath())) { - exists = true; - break; - } - } - - if (!exists) - inputs.add(new BPSearchListElement(new SearchpathEntry(IClasspathEntry.CPE_PROJECT, rawList[i].getPath(), null), false, false, rawList[i].isExported())); - } - } - - ILabelProvider labelProvider1 = new SearchPathListLabelProvider(javaProject); - ElementListSelectionDialog dialog = - new ElementListSelectionDialog(top.getShell(), labelProvider1); - dialog.setTitle(BeanInfoUIMessages.PackagesWorkbook_SelectionDialog_DefinedPaths_Title); - - dialog.setMessage(BeanInfoUIMessages.PackagesWorkbook_SelectionDialog_DefinedPaths_Message); - dialog.setElements(inputs.toArray()); - - if (dialog.open() == Window.OK) - return Arrays.asList(dialog.getResult()); - else - return Collections.EMPTY_LIST; - } - - protected void updateButtons(){ - chooseDefPathsButton.setEnabled(beaninfosPathsBlock.isBeaninfoEnabled()); - choosePackagesButton.setEnabled(beaninfosPathsBlock.isBeaninfoEnabled()); - - List selected = BeaninfoPathsBlock.getSelectedList(tableViewer.getSelection()); - removeButton.setEnabled(selected!=null && selected.size()>0 && beaninfosPathsBlock.isBeaninfoEnabled()); - } - - /** - * Something important about the page changed - perform update. - * - * @since 1.2.0 - */ - protected void pageChanged(){ - updateSearchpathList(); - } - - private void updateSearchpathList() { - List searchelements = beaninfosPathsBlock.getSearchpathOrderingPage().getElements(); - - List packageelements = packagesList; - - boolean changeDone = false; - // First go through the search path and remove any SearchListElements that are - // not in the search packages list from this page. - for (ListIterator spitr = searchelements.listIterator(searchelements.size()); - spitr.hasPrevious(); - ) { - BPListElement element = (BPListElement) spitr.previous(); - if (element instanceof BPSearchListElement && !packageelements.remove(element)) { - // Search element and not found in packages list so remove it from searchpath list. - spitr.remove(); - changeDone = true; - } - } - // Any left over in packages list are new and need to be added. - searchelements.addAll(packageelements); - changeDone = changeDone || !packageelements.isEmpty(); - - if (changeDone) - beaninfosPathsBlock.setSearchOrderElements(searchelements); - } - - protected void updateEnabledStates(){ - updateButtons(); - table.setEnabled(beaninfosPathsBlock.isBeaninfoEnabled()); - label.setEnabled(beaninfosPathsBlock.isBeaninfoEnabled()); - } - - public void setBeaninfoEnabled(boolean enable) { - if(top!=null && !top.isDisposed()) - updateEnabledStates(); - } -} |