aboutsummaryrefslogtreecommitdiff
path: root/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/WorkingSetGroup.java
diff options
context:
space:
mode:
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/WorkingSetGroup.java')
-rw-r--r--eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/WorkingSetGroup.java109
1 files changed, 109 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/WorkingSetGroup.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/WorkingSetGroup.java
new file mode 100644
index 000000000..fb33a08b4
--- /dev/null
+++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/wizards/newproject/WorkingSetGroup.java
@@ -0,0 +1,109 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2009 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 com.android.ide.eclipse.adt.internal.wizards.newproject;
+
+import org.eclipse.jdt.internal.ui.JavaPlugin;
+import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages;
+import org.eclipse.jdt.internal.ui.workingsets.IWorkingSetIDs;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.ui.IWorkingSet;
+import org.eclipse.ui.dialogs.WorkingSetConfigurationBlock;
+
+/**
+ * Copied from
+ * org.eclipse.jdt.ui.wizards.NewJavaProjectWizardPageOne$WorkingSetGroup
+ *
+ * Creates the working set group with controls that allow
+ * the selection of working sets
+ */
+@SuppressWarnings("restriction")
+public class WorkingSetGroup {
+
+ private WorkingSetConfigurationBlock fWorkingSetBlock;
+ private Button mEnableButton;
+
+ public WorkingSetGroup() {
+ String[] workingSetIds = new String[] {
+ IWorkingSetIDs.JAVA, IWorkingSetIDs.RESOURCE
+ };
+ fWorkingSetBlock = new WorkingSetConfigurationBlock(workingSetIds, JavaPlugin.getDefault()
+ .getDialogSettings());
+ }
+
+ public Composite createControl(Composite composite) {
+ Group workingSetGroup = new Group(composite, SWT.NONE);
+ workingSetGroup.setFont(composite.getFont());
+ workingSetGroup.setText(NewWizardMessages.NewJavaProjectWizardPageOne_WorkingSets_group);
+ workingSetGroup.setLayout(new GridLayout(1, false));
+
+ fWorkingSetBlock.createContent(workingSetGroup);
+
+ // WorkingSetGroup is implemented in such a way that the checkbox it contains
+ // can only be programmatically set if there's an existing working set associated
+ // *before* we construct the control. However the control is created when the
+ // wizard is opened, not when the page is first shown.
+ //
+ // One choice is to duplicate the class in our project.
+ // Or find the checkbox we want and trigger it manually.
+ mEnableButton = findCheckbox(workingSetGroup);
+
+ return workingSetGroup;
+ }
+
+ public void setWorkingSets(IWorkingSet[] workingSets) {
+ fWorkingSetBlock.setWorkingSets(workingSets);
+ }
+
+ public IWorkingSet[] getSelectedWorkingSets() {
+ try {
+ return fWorkingSetBlock.getSelectedWorkingSets();
+ } catch (Throwable t) {
+ // Test scenarios; no UI is created, which the fWorkingSetBlock assumes
+ // (it dereferences the enabledButton)
+ return new IWorkingSet[0];
+ }
+ }
+
+ public boolean isChecked() {
+ return mEnableButton == null ? false : mEnableButton.getSelection();
+ }
+
+ public void setChecked(boolean state) {
+ if (mEnableButton != null) {
+ mEnableButton.setSelection(state);
+ }
+ }
+
+ /**
+ * Finds the first button of style Checkbox in the given parent composite.
+ * Returns null if not found.
+ */
+ private Button findCheckbox(Composite parent) {
+ for (Control control : parent.getChildren()) {
+ if (control instanceof Button && (control.getStyle() & SWT.CHECK) == SWT.CHECK) {
+ return (Button) control;
+ } else if (control instanceof Composite) {
+ Button found = findCheckbox((Composite) control);
+ if (found != null) {
+ return found;
+ }
+ }
+ }
+
+ return null;
+ }
+}