diff options
Diffstat (limited to 'plugins/org.eclipse.jem.ui/beaninfoui/org/eclipse/jem/internal/beaninfo/ui/BeaninfoEntrySearchpathDialog.java')
-rw-r--r-- | plugins/org.eclipse.jem.ui/beaninfoui/org/eclipse/jem/internal/beaninfo/ui/BeaninfoEntrySearchpathDialog.java | 448 |
1 files changed, 0 insertions, 448 deletions
diff --git a/plugins/org.eclipse.jem.ui/beaninfoui/org/eclipse/jem/internal/beaninfo/ui/BeaninfoEntrySearchpathDialog.java b/plugins/org.eclipse.jem.ui/beaninfoui/org/eclipse/jem/internal/beaninfo/ui/BeaninfoEntrySearchpathDialog.java deleted file mode 100644 index bcbc14353..000000000 --- a/plugins/org.eclipse.jem.ui/beaninfoui/org/eclipse/jem/internal/beaninfo/ui/BeaninfoEntrySearchpathDialog.java +++ /dev/null @@ -1,448 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2001, 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 - *******************************************************************************/ -package org.eclipse.jem.internal.beaninfo.ui; -/* - - - */ - -import java.text.MessageFormat; -import java.util.*; -import java.util.List; - -import org.eclipse.core.resources.*; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.jdt.core.*; -import org.eclipse.jdt.ui.JavaElementLabelProvider; -import org.eclipse.jface.dialogs.*; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.viewers.*; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.*; -import org.eclipse.swt.layout.*; -import org.eclipse.swt.widgets.*; -import org.eclipse.ui.dialogs.ElementTreeSelectionDialog; -import org.eclipse.ui.dialogs.ISelectionStatusValidator; - -import org.eclipse.jem.internal.beaninfo.core.BeaninfoEntry; -import org.eclipse.jem.internal.beaninfo.core.SearchpathEntry; - -/** - * This dialog is used to display and modify the search path - * within a BeaninfoEntry. - * @version 1.0 - * @author - */ -public class BeaninfoEntrySearchpathDialog extends Dialog { - protected BPBeaninfoListElement infoElement; - protected IJavaProject jProject; - //protected ListDialogField listField; - - private Composite top; - private Table table; - private TableViewer tableViewer; - private Label label; - private Composite buttonsBar; - private Button upbutton; - private Button downButton; - private Button choosePackagesButton; - private Button removeButton; - private List tableElements; - private boolean enabled = true; - - public BeaninfoEntrySearchpathDialog( - Shell parentShell, - BPBeaninfoListElement infoElement, - IJavaProject jProject) { - super(parentShell); - - this.infoElement = infoElement; - this.jProject = jProject; - this.tableElements = new ArrayList(); - } - - protected void configureShell(Shell newShell) { - super.configureShell(newShell); - newShell.setText( - MessageFormat.format( - BeanInfoUIMessages.SearchPathDialog_ModifySearchPaths, - new Object[] { infoElement.getEntry().getPath().toString()})); - } - - protected Control createDialogArea(Composite parent) { - top = new Composite(parent, SWT.NONE); - top.setLayoutData(new GridData(GridData.FILL_BOTH)); - top.setLayout(new GridLayout(2, false)); - - label = new Label(top, SWT.NONE); - label.setText(BeanInfoUIMessages.SearchPathDialog_Desc_Label); - GridData gd = new GridData(GridData.FILL_HORIZONTAL); - gd.horizontalSpan = 2; - label.setLayoutData(gd); - - createTable(); - createButtonsBar(); - - updatePackagesList(); - - updateButtons(); - - return top; - } - - /** - * This method initializes table - * - */ - private void createTable() { - GridData gridData1 = new org.eclipse.swt.layout.GridData(); - gridData1.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL; - gridData1.grabExcessHorizontalSpace = true; - gridData1.grabExcessVerticalSpace = true; - gridData1.verticalAlignment = 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 SelectionListener(){ - public void widgetSelected(SelectionEvent e) { - updateButtons(); - } - public void widgetDefaultSelected(SelectionEvent e) { - widgetSelected(e); - } - }); - tableViewer = new TableViewer(table); - //tableViewer.setSorter(new BIListElementSorter()); - tableViewer.setContentProvider(new ArrayContentProvider()); - tableViewer.setLabelProvider(new SearchPathListLabelProvider(jProject)); - tableViewer.setInput(tableElements); - } - - /** - * This method initializes buttonsBar - * - */ - private void createButtonsBar() { - RowLayout rowLayout = new RowLayout(); - rowLayout.type = org.eclipse.swt.SWT.VERTICAL; - rowLayout.marginLeft = 3; - 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; - buttonsBar = new Composite(top, SWT.NONE); - buttonsBar.setLayoutData(gridData2); - buttonsBar.setLayout(rowLayout); - upbutton = new Button(buttonsBar, SWT.NONE); - upbutton.setText(BeanInfoUIMessages.BeaninfoPathsBlock_UI__searchpath_up_button); - upbutton.addSelectionListener(new SelectionAdapter(){ - public void widgetSelected(SelectionEvent e) { - List selected = BeaninfoPathsBlock.getSelectedList(tableViewer.getSelection()); - Iterator selItr = selected.iterator(); - while (selItr.hasNext()) { - Object element = selItr.next(); - int oldIndex = tableElements.indexOf(element); - if(oldIndex>0){ - tableElements.remove(element); - tableElements.add(--oldIndex, element); - } - } - tableViewer.refresh(); - pageChanged(); - } - }); - downButton = new Button(buttonsBar, SWT.NONE); - downButton.setText(BeanInfoUIMessages.BeaninfoPathsBlock_UI__searchpath_down_button); - downButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - List selected = BeaninfoPathsBlock.getSelectedList(tableViewer.getSelection()); - Iterator selItr = selected.iterator(); - while (selItr.hasNext()) { - Object element = selItr.next(); - int oldIndex = tableElements.indexOf(element); - if(oldIndex<(tableElements.size()-1)){ - tableElements.remove(element); - tableElements.add(++oldIndex, element); - } - } - tableViewer.refresh(); - pageChanged(); - } - }); - new Label(buttonsBar, SWT.NONE); - choosePackagesButton = new Button(buttonsBar, SWT.NONE); - choosePackagesButton.setText(BeanInfoUIMessages.SearchPathDialog_ChoosePackages); - choosePackagesButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - final List elementsToAdd = choosePackages(); - if (elementsToAdd != null && !elementsToAdd.isEmpty()) { - tableElements.addAll(elementsToAdd); - tableViewer.refresh(); - table.getDisplay().asyncExec(new Runnable(){ - public void run() { - tableViewer.setSelection(new StructuredSelection(elementsToAdd)); - }; - }); - } - } - }); - new Label(buttonsBar, SWT.NONE); - removeButton = new Button(buttonsBar, SWT.NONE); - removeButton.setText(BeanInfoUIMessages.SearchPathDialog_Remove); - removeButton.addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { - public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) { - List selected = BeaninfoPathsBlock.getSelectedList(tableViewer.getSelection()); - tableElements.removeAll(selected); - tableViewer.refresh(); - pageChanged(); - } - }); - } - - - protected void pageChanged() { - // TODO Auto-generated method stub - - } - - protected void updateButtons() { - if(top!=null && !top.isDisposed()){ - upbutton.setEnabled(enabled && canMoveUp()); - downButton.setEnabled(enabled && canMoveDown()); - removeButton.setEnabled(enabled && !tableViewer.getSelection().isEmpty()); - choosePackagesButton.setEnabled(enabled); - } - } - - private boolean canMoveDown() { - int[] indc= table.getSelectionIndices(); - int k= tableElements.size() - 1; - for (int i= indc.length - 1; i >= 0 ; i--, k--) { - if (indc[i] != k) { - return true; - } - } - return false; - } - - private boolean canMoveUp() { - int[] indc= table.getSelectionIndices(); - for (int i= 0; i < indc.length; i++) { - if (indc[i] != i) { - return true; - } - } - return false; - } - - private void updatePackagesList() { - if (infoElement.getEntry().getKind() == BeaninfoEntry.BIE_PLUGIN) { - // We don't allow these to be updated. They should only be used through - // registered mechanisms and we won't be showing them here normally. - label.setText(BeanInfoUIMessages.SearchPathDialog_NotEditable_INFO_); - updateEnabledState(false); - return; - } - tableElements.clear(); - tableElements.addAll(Arrays.asList(infoElement.getSearchpaths())); - tableViewer.refresh(); - } - - private void updateEnabledState(boolean b) { - enabled = b; - if(top!=null && !top.isDisposed()){ - label.setEnabled(enabled); - table.setEnabled(enabled); - updateButtons(); - } - } - - protected void okPressed() { - if (table.isEnabled()) { - // If the field is not enabled, then there is no update to perform. We don't - // want to accidentially wipe out the search paths in this case. - - // Override to put the list of elements back into the BPBeaninfoListElement - // Until then they aren't actually updated. - infoElement.setSearchpaths( - (BPSearchListElement[]) tableElements.toArray(new BPSearchListElement[tableElements.size()])); - } - super.okPressed(); - } - - /** - * Choose the packages that should be in the search path. - */ - private List choosePackages() { - - IPackageFragmentRoot[] roots = getBeaninfoRoots(); - List newPackageNames = new ArrayList(); - if (roots != null) { - // It's within the workspace, so we can get the roots and packages. - ISelectionStatusValidator validator = new PackagesWorkbookPage.ChoosePackagesSelectionValidator(); - - // Show up to the package fragment, don't show any contents of it. - Class[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IPackageFragment.class }; - Object[] rejectedFragments = getFilteredExistingEntries(roots); - - // 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(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(Arrays.asList(getBeaninfoRoots())); - - if (dialog.open() == Window.OK) { - Object[] elements = dialog.getResult(); - for (int i = 0; i < elements.length; i++) { - newPackageNames.add(((IPackageFragment) elements[i]).getElementName()); - } - } - } else { - // It's not within the workspace - final List existingPackagenames = getFilteredExistingEntries(); - IInputValidator validator = new IInputValidator() { - public String isValid(String newText) { - if (existingPackagenames.contains(newText)) - return BeanInfoUIMessages.SearchPathDialog_PackagePresent_INFO_; - - IStatus status = JavaConventions.validatePackageName(newText); - return status.getSeverity() == IStatus.OK ? null : status.getMessage(); - } - }; - InputDialog dialog = new InputDialog(getShell(), BeanInfoUIMessages.SearchPathDialog_InputDialog_Title, BeanInfoUIMessages.SearchPathDialog_InputDialog_Message, null, validator); - if (dialog.open() == Window.OK) - newPackageNames.add(dialog.getValue()); - } - - if (newPackageNames.size() == 0) - return Collections.EMPTY_LIST; - - List newElements = new ArrayList(newPackageNames.size()); - for (int i = 0; i < newPackageNames.size(); i++) - newElements.add( - new BPSearchListElement(new SearchpathEntry((String) newPackageNames.get(i)), false, false, false)); - return newElements; - } - /** - * Return the packagefragment roots for the given beaninfo entry. - * Return null if it can be handled (i.e. not in a project some where). - */ - protected IPackageFragmentRoot[] getBeaninfoRoots() { - IPackageFragmentRoot[] roots = null; - if (infoElement.getEntry().getKind() != BeaninfoEntry.BIE_PLUGIN) { - IClasspathEntry resolved = JavaCore.getResolvedClasspathEntry(((BeaninfoEntry) infoElement.getEntry()).getClasspathEntry()); - IResource res = ResourcesPlugin.getWorkspace().getRoot().findMember(resolved.getPath()); - if (res != null && res.exists()) { - if (res instanceof IProject) { - // It is a project itself. - IJavaProject jp = (IJavaProject) JavaCore.create(res); - try { - if (jp != null) - roots = jp.getPackageFragmentRoots(); // All of the roots in the project are applicable. - } catch (JavaModelException e) { - } - } else { - // It is within another project - IProject containingProject = res.getProject(); - IJavaProject jp = JavaCore.create(containingProject); - if (jp != null) { - // The roots if this is in the classpath of this project - try { - IPackageFragmentRoot root = jp.findPackageFragmentRoot(resolved.getPath()); - if (root != null) - roots = new IPackageFragmentRoot[] { root }; - } catch (JavaModelException e) { - } - } - } - } - } - return roots; - } - - /** - * 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(IPackageFragmentRoot[] roots) { - List entries = tableElements; - List fragments = new ArrayList(entries.size()); - Iterator itr = entries.iterator(); - while (itr.hasNext()) { - BPSearchListElement elem = (BPSearchListElement) itr.next(); - fragments.addAll(getPackages(elem, roots)); - } - return fragments.toArray(); - } - - /** - * Return the list of entries that already are in the search path - * so that they don't show up in the list. This one is just the package names. - */ - protected List getFilteredExistingEntries() { - List entries = tableElements; - List names = new ArrayList(entries.size()); - Iterator itr = entries.iterator(); - while (itr.hasNext()) { - BPSearchListElement elem = (BPSearchListElement) itr.next(); - names.add(((SearchpathEntry) elem.getEntry()).getPackage()); - } - return names; - } - - 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; - } -} |