]> git.uio.no Git - ifi-stolz-refaktor.git/blobdiff - case-study/jdt-after/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/FolderSelectionDialog.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-after / ui / org / eclipse / jdt / internal / ui / wizards / buildpaths / FolderSelectionDialog.java
diff --git a/case-study/jdt-after/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/FolderSelectionDialog.java b/case-study/jdt-after/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/FolderSelectionDialog.java
new file mode 100644 (file)
index 0000000..3adf242
--- /dev/null
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2011 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.wizards.buildpaths;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Shell;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IStatus;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspaceRoot;
+
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.ITreeContentProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.window.Window;
+
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
+import org.eclipse.ui.dialogs.ISelectionStatusValidator;
+import org.eclipse.ui.dialogs.NewFolderDialog;
+import org.eclipse.ui.views.navigator.ResourceComparator;
+
+import org.eclipse.jdt.internal.corext.buildpath.ClasspathModifier;
+
+import org.eclipse.jdt.internal.ui.IJavaHelpContextIds;
+import org.eclipse.jdt.internal.ui.JavaPlugin;
+import org.eclipse.jdt.internal.ui.dialogs.StatusInfo;
+import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages;
+import org.eclipse.jdt.internal.ui.wizards.TypedElementSelectionValidator;
+
+/**
+  */
+public class FolderSelectionDialog extends ElementTreeSelectionDialog implements ISelectionChangedListener {
+
+       private Button fNewFolderButton;
+       private IContainer fSelectedContainer;
+
+       public FolderSelectionDialog(Shell parent, ILabelProvider labelProvider, ITreeContentProvider contentProvider) {
+               super(parent, labelProvider, contentProvider);
+               setComparator(new ResourceComparator(ResourceComparator.NAME));
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
+        */
+       @Override
+       protected Control createDialogArea(Composite parent) {
+               Composite result= (Composite)super.createDialogArea(parent);
+
+               getTreeViewer().addSelectionChangedListener(this);
+
+               Button button = new Button(result, SWT.PUSH);
+               button.setText(NewWizardMessages.FolderSelectionDialog_button);
+               button.addSelectionListener(new SelectionAdapter() {
+                       @Override
+                       public void widgetSelected(SelectionEvent event) {
+                               newFolderButtonPressed();
+                       }
+               });
+               button.setFont(parent.getFont());
+               fNewFolderButton= button;
+
+               applyDialogFont(result);
+
+               PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IJavaHelpContextIds.BP_SELECT_DEFAULT_OUTPUT_FOLDER_DIALOG);
+
+               return result;
+       }
+
+       private void updateNewFolderButtonState() {
+               IStructuredSelection selection= (IStructuredSelection) getTreeViewer().getSelection();
+               fSelectedContainer= null;
+               if (selection.size() == 1) {
+                       Object first= selection.getFirstElement();
+                       if (first instanceof IContainer) {
+                               fSelectedContainer= (IContainer) first;
+                       }
+               }
+               fNewFolderButton.setEnabled(fSelectedContainer != null);
+       }
+
+       protected void newFolderButtonPressed() {
+               NewFolderDialog dialog= new NewFolderDialog(getShell(), fSelectedContainer);
+               if (dialog.open() == Window.OK) {
+                       TreeViewer treeViewer= getTreeViewer();
+                       treeViewer.refresh(fSelectedContainer);
+                       Object createdFolder= dialog.getResult()[0];
+                       treeViewer.reveal(createdFolder);
+                       treeViewer.setSelection(new StructuredSelection(createdFolder));
+               }
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
+        */
+       public void selectionChanged(SelectionChangedEvent event) {
+               updateNewFolderButtonState();
+       }
+
+       public IContainer generated_4751514314943986762(ISelectionStatusValidator validator, ViewerFilter filter, IResource initSelection, BuildPathsBlock buildpathsblock) {
+               setTitle(NewWizardMessages.BuildPathsBlock_ChooseOutputFolderDialog_title);
+               setValidator(validator);
+               setMessage(NewWizardMessages.BuildPathsBlock_ChooseOutputFolderDialog_description);
+               addFilter(filter);
+               setInput(buildpathsblock.fWorkspaceRoot);
+               setInitialSelection(initSelection);
+               setComparator(new ResourceComparator(ResourceComparator.NAME));
+       
+               if (open() == Window.OK) {
+                       return (IContainer)getFirstResult();
+               }
+               return null;
+       }
+
+       public IPath generated_5616782107357149589(ViewerFilter filter, IResource initSel, SourceAttachmentBlock sourceattachmentblock) {
+               setAllowMultiple(false);
+               addFilter(filter);
+               setTitle(NewWizardMessages.SourceAttachmentBlock_intjardialog_title);
+               setMessage(NewWizardMessages.SourceAttachmentBlock_intjardialog_message);
+               setInput(sourceattachmentblock.fWorkspaceRoot);
+               setInitialSelection(initSel);
+               if (open() == Window.OK) {
+                       IResource res= (IResource) getFirstResult();
+                       return res.getFullPath();
+               }
+               return null;
+       }
+
+       public IContainer generated_6645016892303741943(IWorkspaceRoot root, final Class<?>[] acceptedClasses, ViewerFilter filter, IResource initSelection, final OutputLocationDialog outputlocationdialog) {
+               setTitle(NewWizardMessages.OutputLocationDialog_ChooseOutputFolder_title);
+       
+           setValidator(new ISelectionStatusValidator() {
+               ISelectionStatusValidator validator= new TypedElementSelectionValidator(acceptedClasses, false);
+               public IStatus validate(Object[] selection) {
+                   IStatus typedStatus= validator.validate(selection);
+                   if (!typedStatus.isOK())
+                       return typedStatus;
+                   if (selection[0] instanceof IFolder) {
+                       IFolder folder= (IFolder) selection[0];
+                       try {
+                               IStatus result= ClasspathModifier.checkSetOutputLocationPrecondition(outputlocationdialog.fEntryToEdit, folder.getFullPath(), outputlocationdialog.fAllowInvalidClasspath, outputlocationdialog.fCPJavaProject);
+                               if (result.getSeverity() == IStatus.ERROR)
+                               return result;
+                       } catch (CoreException e) {
+                           JavaPlugin.log(e);
+                       }
+                       return new StatusInfo();
+                   } else {
+                       return new StatusInfo(IStatus.ERROR, ""); //$NON-NLS-1$
+                   }
+               }
+           });
+               setMessage(NewWizardMessages.OutputLocationDialog_ChooseOutputFolder_description);
+               addFilter(filter);
+               setInput(root);
+               setInitialSelection(initSelection);
+               setComparator(new ResourceComparator(ResourceComparator.NAME));
+       
+               if (open() == Window.OK) {
+                       return (IContainer)getFirstResult();
+               }
+               return null;
+       }
+
+
+
+}