]> git.uio.no Git - ifi-stolz-refaktor.git/blobdiff - case-study/jdt-before/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ClasspathContainerSelectionPage.java
Case Study: adding data and statistics
[ifi-stolz-refaktor.git] / case-study / jdt-before / ui / org / eclipse / jdt / internal / ui / wizards / buildpaths / ClasspathContainerSelectionPage.java
diff --git a/case-study/jdt-before/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ClasspathContainerSelectionPage.java b/case-study/jdt-before/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ClasspathContainerSelectionPage.java
new file mode 100644 (file)
index 0000000..2f149a1
--- /dev/null
@@ -0,0 +1,157 @@
+/*******************************************************************************
+ * 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 java.util.Arrays;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.IDialogSettings;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.ListViewer;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.jface.wizard.WizardPage;
+
+import org.eclipse.ui.PlatformUI;
+
+import org.eclipse.jdt.internal.ui.IJavaHelpContextIds;
+import org.eclipse.jdt.internal.ui.JavaPlugin;
+import org.eclipse.jdt.internal.ui.JavaPluginImages;
+import org.eclipse.jdt.internal.ui.util.SelectionUtil;
+import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages;
+
+/**
+  */
+public class ClasspathContainerSelectionPage extends WizardPage {
+
+       private static final String DIALOGSTORE_SECTION= "ClasspathContainerSelectionPage"; //$NON-NLS-1$
+       private static final String DIALOGSTORE_CONTAINER_IDX= "index"; //$NON-NLS-1$
+
+
+       private static class ClasspathContainerLabelProvider extends LabelProvider {
+               @Override
+               public String getText(Object element) {
+                       return ((ClasspathContainerDescriptor) element).getName();
+               }
+       }
+
+       private ListViewer fListViewer;
+       private ClasspathContainerDescriptor[] fContainers;
+       private IDialogSettings fDialogSettings;
+
+       /**
+        * Constructor for ClasspathContainerWizardPage.
+        * 
+        * @param containerPages the array of container pages
+        */
+       protected ClasspathContainerSelectionPage(ClasspathContainerDescriptor[] containerPages) {
+               super("ClasspathContainerWizardPage"); //$NON-NLS-1$
+               setTitle(NewWizardMessages.ClasspathContainerSelectionPage_title);
+               setDescription(NewWizardMessages.ClasspathContainerSelectionPage_description);
+               setImageDescriptor(JavaPluginImages.DESC_WIZBAN_ADD_LIBRARY);
+
+               fContainers= containerPages;
+
+               IDialogSettings settings= JavaPlugin.getDefault().getDialogSettings();
+               fDialogSettings= settings.getSection(DIALOGSTORE_SECTION);
+               if (fDialogSettings == null) {
+                       fDialogSettings= settings.addNewSection(DIALOGSTORE_SECTION);
+                       fDialogSettings.put(DIALOGSTORE_CONTAINER_IDX, 0);
+               }
+               validatePage();
+       }
+
+       /* (non-Javadoc)
+        * @see IDialogPage#createControl(Composite)
+        */
+       public void createControl(Composite parent) {
+               fListViewer= new ListViewer(parent, SWT.SINGLE | SWT.BORDER);
+               fListViewer.setLabelProvider(new ClasspathContainerLabelProvider());
+               fListViewer.setContentProvider(new ArrayContentProvider());
+               fListViewer.setComparator(new ViewerComparator());
+               fListViewer.setInput(Arrays.asList(fContainers));
+               fListViewer.addSelectionChangedListener(new ISelectionChangedListener() {
+                       public void selectionChanged(SelectionChangedEvent event) {
+                               validatePage();
+                       }
+               });
+               fListViewer.addDoubleClickListener(new IDoubleClickListener() {
+                       public void doubleClick(DoubleClickEvent event) {
+                               doDoubleClick();
+                       }
+               });
+
+               int selectionIndex= fDialogSettings.getInt(DIALOGSTORE_CONTAINER_IDX);
+               if (selectionIndex >= fContainers.length) {
+                       selectionIndex= 0;
+               }
+               fListViewer.getList().select(selectionIndex);
+               validatePage();
+               setControl(fListViewer.getList());
+               Dialog.applyDialogFont(fListViewer.getList());
+
+               PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, IJavaHelpContextIds.BP_SELECT_CLASSPATH_CONTAINER);
+       }
+
+       /**
+        * Method validatePage.
+        */
+       private void validatePage() {
+               setPageComplete(getSelected() != null);
+       }
+
+
+       public ClasspathContainerDescriptor getSelected() {
+               if (fListViewer != null) {
+                       ISelection selection= fListViewer.getSelection();
+                       return (ClasspathContainerDescriptor) SelectionUtil.getSingleElement(selection);
+               }
+               return null;
+       }
+
+       public ClasspathContainerDescriptor[] getContainers() {
+               return fContainers;
+       }
+
+       protected void doDoubleClick() {
+               if (canFlipToNextPage()) {
+                       getContainer().showPage(getNextPage());
+               }
+       }
+
+       /* (non-Javadoc)
+        * @see IWizardPage#canFlipToNextPage()
+        */
+       @Override
+       public boolean canFlipToNextPage() {
+               return isPageComplete(); // avoid the getNextPage call to prevent potential plugin load
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.jface.dialogs.IDialogPage#setVisible(boolean)
+        */
+       @Override
+       public void setVisible(boolean visible) {
+               if (!visible && fListViewer != null) {
+                       fDialogSettings.put(DIALOGSTORE_CONTAINER_IDX, fListViewer.getList().getSelectionIndex());
+               }
+               super.setVisible(visible);
+       }
+
+}