]> git.uio.no Git - ifi-stolz-refaktor.git/blobdiff - case-study/jdt-after/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/SourceFirstPackageSelectionDialogField.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-after / ui refactoring / org / eclipse / jdt / internal / ui / refactoring / nls / SourceFirstPackageSelectionDialogField.java
diff --git a/case-study/jdt-after/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/SourceFirstPackageSelectionDialogField.java b/case-study/jdt-after/ui refactoring/org/eclipse/jdt/internal/ui/refactoring/nls/SourceFirstPackageSelectionDialogField.java
new file mode 100644 (file)
index 0000000..e7bdc62
--- /dev/null
@@ -0,0 +1,222 @@
+/*******************************************************************************
+ * 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.refactoring.nls;
+
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Shell;
+
+import org.eclipse.core.runtime.IPath;
+
+import org.eclipse.core.resources.ResourcesPlugin;
+
+import org.eclipse.jface.layout.PixelConverter;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.jface.window.Window;
+
+import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
+
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.IJavaElement;
+import org.eclipse.jdt.core.IJavaModel;
+import org.eclipse.jdt.core.IJavaProject;
+import org.eclipse.jdt.core.IPackageFragment;
+import org.eclipse.jdt.core.IPackageFragmentRoot;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.jdt.core.JavaModelException;
+
+import org.eclipse.jdt.ui.JavaElementComparator;
+import org.eclipse.jdt.ui.JavaElementLabelProvider;
+import org.eclipse.jdt.ui.StandardJavaElementContentProvider;
+
+import org.eclipse.jdt.internal.ui.JavaPlugin;
+import org.eclipse.jdt.internal.ui.wizards.TypedElementSelectionValidator;
+import org.eclipse.jdt.internal.ui.wizards.TypedViewerFilter;
+import org.eclipse.jdt.internal.ui.wizards.dialogfields.DialogField;
+import org.eclipse.jdt.internal.ui.wizards.dialogfields.IDialogFieldListener;
+import org.eclipse.jdt.internal.ui.wizards.dialogfields.IStringButtonAdapter;
+import org.eclipse.jdt.internal.ui.wizards.dialogfields.LayoutUtil;
+
+
+class SourceFirstPackageSelectionDialogField {
+
+       SourceFolderSelectionDialogButtonField fSourceFolderSelection;
+       PackageFragmentSelection fPackageSelection;
+       private Shell fShell;
+
+       public SourceFirstPackageSelectionDialogField(String sourceLabel, String packageLabel, String browseLabel1,
+               String browseLabel2, String statusHint, String dialogTitle, String dialogMessage, String dialogEmptyMessage,
+               ICompilationUnit cu, IDialogFieldListener updateListener, IPackageFragment fragment) {
+               fSourceFolderSelection= new SourceFolderSelectionDialogButtonField(sourceLabel, browseLabel1,   new SFStringButtonAdapter());
+
+               fPackageSelection= new PackageFragmentSelection(this, packageLabel, browseLabel2, statusHint,
+                       new PackageSelectionStringButtonAdapter(this, dialogTitle, dialogMessage, dialogEmptyMessage));
+               fPackageSelection.setDialogFieldListener(new PackageSelectionDialogFieldListener());
+
+               fPackageSelection.generated_2566189316945185217(this, cu, updateListener, fragment);
+               fSourceFolderSelection.setUpdateListener(updateListener);
+       }
+
+       void setDefaults(IPackageFragment fragment, ICompilationUnit cu) {
+               IJavaElement element= fragment;
+               if (element == null) {
+                       element= cu;
+               }
+
+               fSourceFolderSelection.setRoot(searchSourcePackageFragmentRoot(element));
+               fPackageSelection.setPackageFragment(searchPackageFragment(element));
+       }
+
+       private IPackageFragment searchPackageFragment(IJavaElement jElement) {
+               return (IPackageFragment)jElement.getAncestor(IJavaElement.PACKAGE_FRAGMENT);
+       }
+
+       private IPackageFragmentRoot searchSourcePackageFragmentRoot(IJavaElement jElement) {
+               IJavaElement parent= jElement.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
+               if (parent == null) {
+                       return null;
+               }
+
+               IPackageFragmentRoot res= (IPackageFragmentRoot)parent;
+               try {
+                       if (res.getKind() == IPackageFragmentRoot.K_SOURCE) {
+                               return res;
+                       }
+               } catch (JavaModelException e) {
+                       // nothing to do
+               }
+
+               return null;
+       }
+
+       class PackageSelectionDialogFieldListener implements IDialogFieldListener {
+
+               public void dialogFieldChanged(DialogField field) {
+                       String packName= fPackageSelection.getText();
+                       if (packName.length() == 0)
+                               fPackageSelection.setStatus(NLSUIMessages.NLSAccessorConfigurationDialog_default);
+                       else
+                               fPackageSelection.setStatus(""); //$NON-NLS-1$
+               }
+       }
+
+       class SFStringButtonAdapter implements IStringButtonAdapter {
+               public void changeControlPressed(DialogField field) {
+
+                       IPackageFragmentRoot newSourceContainer= chooseSourceContainer(fSourceFolderSelection.getRoot());
+                       if (newSourceContainer != null) {
+                               fSourceFolderSelection.setRoot(newSourceContainer);
+                       }
+               }
+       }
+
+       private IPackageFragmentRoot chooseSourceContainer(IJavaElement initElement) {
+               Class<?>[] acceptedClasses= new Class[] { IPackageFragmentRoot.class, IJavaProject.class };
+               TypedElementSelectionValidator validator= new TypedElementSelectionValidator(acceptedClasses, false) {
+                       @Override
+                       public boolean isSelectedValid(Object element) {
+                               try {
+                                       if (element instanceof IJavaProject) {
+                                               IJavaProject jproject= (IJavaProject)element;
+                                               IPath path= jproject.getProject().getFullPath();
+                                               return (jproject.findPackageFragmentRoot(path) != null);
+                                       } else if (element instanceof IPackageFragmentRoot) {
+                                               return (((IPackageFragmentRoot)element).getKind() == IPackageFragmentRoot.K_SOURCE);
+                                       }
+                                       return true;
+                               } catch (JavaModelException e) {
+                                       JavaPlugin.log(e.getStatus()); // just log, no ui in validation
+                               }
+                               return false;
+                       }
+               };
+
+               acceptedClasses= new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class };
+               ViewerFilter filter= new TypedViewerFilter(acceptedClasses) {
+                       @Override
+                       public boolean select(Viewer viewer, Object parent, Object element) {
+                               if (element instanceof IPackageFragmentRoot) {
+                                       try {
+                                               return (((IPackageFragmentRoot)element).getKind() == IPackageFragmentRoot.K_SOURCE);
+                                       } catch (JavaModelException e) {
+                                               JavaPlugin.log(e.getStatus()); // just log, no ui in validation
+                                               return false;
+                                       }
+                               }
+                               return super.select(viewer, parent, element);
+                       }
+               };
+
+               StandardJavaElementContentProvider provider= new StandardJavaElementContentProvider();
+               ILabelProvider labelProvider= new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT);
+               ElementTreeSelectionDialog dialog= new ElementTreeSelectionDialog(fShell, labelProvider, provider);
+               dialog.setValidator(validator);
+               dialog.setComparator(new JavaElementComparator());
+               dialog.setTitle(NLSUIMessages.SourceFirstPackageSelectionDialogField_ChooseSourceContainerDialog_title);
+               dialog.setMessage(NLSUIMessages.SourceFirstPackageSelectionDialogField_ChooseSourceContainerDialog_description);
+               dialog.addFilter(filter);
+               dialog.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()));
+               dialog.setInitialSelection(initElement);
+
+               if (dialog.open() == Window.OK) {
+                       Object element= dialog.getFirstResult();
+                       if (element instanceof IJavaProject) {
+                               IJavaProject jproject= (IJavaProject)element;
+                               return jproject.getPackageFragmentRoot(jproject.getProject());
+                       } else if (element instanceof IPackageFragmentRoot) {
+                               return (IPackageFragmentRoot)element;
+                       }
+                       return null;
+               }
+               return null;
+       }
+
+
+       public IPackageFragment getSelected() {
+               IPackageFragment res= fPackageSelection.getPackageFragment();
+               return res;
+       }
+
+       public IPackageFragmentRoot getSelectedFragmentRoot() {
+               return fSourceFolderSelection.getRoot();
+       }
+
+       public void setSelected(IPackageFragment newSelection) {
+               fPackageSelection.setPackageFragment(newSelection);
+               fSourceFolderSelection.setRoot(searchSourcePackageFragmentRoot(newSelection));
+       }
+
+       public void createControl(Composite parent, int nOfColumns, int textWidth) {
+               fShell= parent.getShell();
+               PixelConverter converter= new PixelConverter(parent);
+               fSourceFolderSelection.doFillIntoGrid(parent, nOfColumns, textWidth);
+               LayoutUtil.setWidthHint(fSourceFolderSelection.getTextControl(null), converter.convertWidthInCharsToPixels(60));
+
+               fPackageSelection.generated_4193800345033933533(parent, nOfColumns, textWidth, converter);
+       }
+
+       public void generated_4519525910731984718(NLSAccessorConfigurationDialog nlsaccessorconfigurationdialog) {
+               IPackageFragmentRoot root= getSelectedFragmentRoot();
+               if ((root == null) || !root.exists()) {
+                       nlsaccessorconfigurationdialog.setInvalid(NLSAccessorConfigurationDialog.IDX_ACCESSOR_PACKAGE, NLSUIMessages.NLSAccessorConfigurationDialog_accessor_package_root_invalid);
+                       return;
+               }
+       
+               IPackageFragment fragment= getSelected();
+               if ((fragment == null) || !fragment.exists()) {
+                       nlsaccessorconfigurationdialog.setInvalid(NLSAccessorConfigurationDialog.IDX_ACCESSOR_PACKAGE, NLSUIMessages.NLSAccessorConfigurationDialog_accessor_package_invalid);
+                       return;
+               }
+               nlsaccessorconfigurationdialog.setValid(NLSAccessorConfigurationDialog.IDX_ACCESSOR_PACKAGE);
+       }
+
+}