From 3cb0574d854bc98624b34be95db222e8c7eb32c8 Mon Sep 17 00:00:00 2001 From: David Inglis Date: Wed, 3 Sep 2003 20:44:40 +0000 Subject: [PATCH] - due to refactor - start of new build target dialog --- build/org.eclipse.cdt.make.ui/plugin.xml | 2 +- .../internal/ui/MakeProjectOptionBlock.java | 6 +- .../ui/editor/MakePartitionScanner.java | 2 +- .../ui/preferences/MakePreferencePage.java | 2 +- .../ui/properties/MakePropertyPage.java | 2 +- .../cdt/make/ui/BuildPathInfoBlock.java | 7 +-- .../ui/{views => }/MakeContentProvider.java | 7 +-- .../ui/{views => }/MakeLabelProvider.java | 2 +- .../eclipse/cdt/make/ui/SettingsBlock.java | 4 +- .../make/ui/actions/BuildTargetAction.java | 27 ++++---- .../make/ui/dialogs/BuildTargetDialog.java | 63 +++++++++++++++++-- .../eclipse/cdt/make/ui/views/MakeView.java | 1 + .../wizards/MakeProjectWizardOptionPage.java | 6 +- 13 files changed, 93 insertions(+), 38 deletions(-) rename build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/{views => }/MakeContentProvider.java (97%) rename build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/{views => }/MakeLabelProvider.java (96%) diff --git a/build/org.eclipse.cdt.make.ui/plugin.xml b/build/org.eclipse.cdt.make.ui/plugin.xml index d3980d58d98..35ab474a8ba 100644 --- a/build/org.eclipse.cdt.make.ui/plugin.xml +++ b/build/org.eclipse.cdt.make.ui/plugin.xml @@ -255,7 +255,7 @@ point="org.eclipse.ui.editors"> diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeProjectOptionBlock.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeProjectOptionBlock.java index 0267887ff9d..d960aba5622 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeProjectOptionBlock.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/MakeProjectOptionBlock.java @@ -12,9 +12,9 @@ import org.eclipse.cdt.make.core.MakeBuilder; import org.eclipse.cdt.make.core.MakeCorePlugin; import org.eclipse.cdt.make.ui.BuildPathInfoBlock; import org.eclipse.cdt.make.ui.SettingsBlock; -import org.eclipse.cdt.ui.BinaryParserBlock; -import org.eclipse.cdt.ui.ICOptionContainer; -import org.eclipse.cdt.ui.TabFolderOptionBlock; +import org.eclipse.cdt.ui.dialogs.BinaryParserBlock; +import org.eclipse.cdt.ui.dialogs.ICOptionContainer; +import org.eclipse.cdt.ui.dialogs.TabFolderOptionBlock; public class MakeProjectOptionBlock extends TabFolderOptionBlock { diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/editor/MakePartitionScanner.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/editor/MakePartitionScanner.java index 306007a64cf..dd7a59834b1 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/editor/MakePartitionScanner.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/editor/MakePartitionScanner.java @@ -55,7 +55,7 @@ public class MakePartitionScanner extends RuleBasedPartitionScanner { public MakePartitionScanner() { super(); - IToken tInternal = new Token(MAKE_INTERNAL); +// IToken tInternal = new Token(MAKE_INTERNAL); IToken tComment = new Token(MAKE_COMMENT); IToken tMacro = new Token(MAKE_MACRO_ASSIGNEMENT); IToken tInclude = new Token(MAKE_INCLUDE_BLOCK); diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/MakePreferencePage.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/MakePreferencePage.java index bdf0410d76a..0babeaff3bf 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/MakePreferencePage.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/preferences/MakePreferencePage.java @@ -12,7 +12,7 @@ package org.eclipse.cdt.make.internal.ui.preferences; import org.eclipse.cdt.make.internal.ui.MakeProjectOptionBlock; import org.eclipse.cdt.make.internal.ui.MakeUIPlugin; -import org.eclipse.cdt.ui.ICOptionContainer; +import org.eclipse.cdt.ui.dialogs.ICOptionContainer; import org.eclipse.core.resources.IProject; import org.eclipse.jface.preference.PreferencePage; import org.eclipse.swt.widgets.Composite; diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/properties/MakePropertyPage.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/properties/MakePropertyPage.java index 2f90389aa7c..8e3d8ebda28 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/properties/MakePropertyPage.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/internal/ui/properties/MakePropertyPage.java @@ -14,7 +14,7 @@ import java.lang.reflect.InvocationTargetException; import org.eclipse.cdt.make.internal.ui.MakeProjectOptionBlock; import org.eclipse.cdt.make.internal.ui.MakeUIPlugin; -import org.eclipse.cdt.ui.ICOptionContainer; +import org.eclipse.cdt.ui.dialogs.ICOptionContainer; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.dialogs.ProgressMonitorDialog; diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/BuildPathInfoBlock.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/BuildPathInfoBlock.java index edc22bdd5cf..bc3659936ca 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/BuildPathInfoBlock.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/BuildPathInfoBlock.java @@ -18,8 +18,8 @@ import org.eclipse.cdt.internal.ui.util.SWTUtil; import org.eclipse.cdt.make.core.MakeCorePlugin; import org.eclipse.cdt.make.core.MakeScannerInfo; import org.eclipse.cdt.make.core.MakeScannerProvider; -import org.eclipse.cdt.ui.AbstractCOptionPage; import org.eclipse.cdt.ui.CUIPlugin; +import org.eclipse.cdt.ui.dialogs.AbstractCOptionPage; import org.eclipse.cdt.utils.ui.controls.ControlFactory; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; @@ -276,16 +276,15 @@ public class BuildPathInfoBlock extends AbstractCOptionPage { } private String[] parseStringToList(String syms) { - String[] empty = new String[0]; if (syms != null && syms.length() > 0) { StringTokenizer tok = new StringTokenizer(syms, ";"); ArrayList list = new ArrayList(tok.countTokens()); while (tok.hasMoreElements()) { list.add(tok.nextToken()); } - return (String[]) list.toArray(empty); + return (String[]) list.toArray(new String[list.size()]); } - return empty; + return new String[0]; } /* diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeContentProvider.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeContentProvider.java similarity index 97% rename from build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeContentProvider.java rename to build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeContentProvider.java index d3254e82f16..482a12a0da7 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeContentProvider.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeContentProvider.java @@ -1,4 +1,4 @@ -package org.eclipse.cdt.make.ui.views; +package org.eclipse.cdt.make.ui; /* * (c) Copyright QNX Software Systems Ltd. 2002. @@ -23,12 +23,11 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.viewers.AbstractTreeViewer; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.StructuredViewer; -import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.widgets.Control; public class MakeContentProvider implements ITreeContentProvider, IMakeTargetListener, IResourceChangeListener { - protected TreeViewer viewer; + protected StructuredViewer viewer; /** * Constructor for MakeContentProvider @@ -86,7 +85,7 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis if (this.viewer == null) { MakeCorePlugin.getDefault().getTargetManager().addListener(this); } - this.viewer = (TreeViewer) viewer; + this.viewer = (StructuredViewer) viewer; IWorkspace oldWorkspace = null; IWorkspace newWorkspace = null; if (oldInput instanceof IWorkspace) { diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeLabelProvider.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeLabelProvider.java similarity index 96% rename from build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeLabelProvider.java rename to build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeLabelProvider.java index e74012bdf39..37f5b8aab79 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeLabelProvider.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/MakeLabelProvider.java @@ -1,4 +1,4 @@ -package org.eclipse.cdt.make.ui.views; +package org.eclipse.cdt.make.ui; /* * (c) Copyright QNX Software Systems Ltd. 2002. diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/SettingsBlock.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/SettingsBlock.java index 71aaf3558ac..9b40438e577 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/SettingsBlock.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/SettingsBlock.java @@ -8,8 +8,8 @@ package org.eclipse.cdt.make.ui; import org.eclipse.cdt.make.core.IMakeBuilderInfo; import org.eclipse.cdt.make.core.MakeCorePlugin; import org.eclipse.cdt.make.internal.ui.MakeUIPlugin; -import org.eclipse.cdt.ui.AbstractCOptionPage; -import org.eclipse.cdt.ui.ICOptionContainer; +import org.eclipse.cdt.ui.dialogs.AbstractCOptionPage; +import org.eclipse.cdt.ui.dialogs.ICOptionContainer; import org.eclipse.cdt.utils.ui.controls.ControlFactory; import org.eclipse.cdt.utils.ui.controls.RadioButtonsArea; import org.eclipse.core.runtime.CoreException; diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/BuildTargetAction.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/BuildTargetAction.java index 72fd36bca1c..26856b234a4 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/BuildTargetAction.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/actions/BuildTargetAction.java @@ -29,29 +29,32 @@ public class BuildTargetAction extends ActionDelegate implements IObjectActionDe IWorkbenchPart fPart; IContainer fContainer; - + public void run(IAction action) { - if ( fContainer != null ) { + if (fContainer != null) { BuildTargetDialog dialog = new BuildTargetDialog(fPart.getSite().getShell(), fContainer); String name; try { name = (String) fContainer.getSessionProperty(new QualifiedName(MakeUIPlugin.getUniqueIdentifier(), "lastTarget")); IMakeTarget target = MakeCorePlugin.getDefault().getTargetManager().findTarget(fContainer, name); - dialog.setTarget(target); + if (target != null) + dialog.setTarget(new IMakeTarget[] { target }); } catch (CoreException e) { } dialog.open(); IMakeTarget target = dialog.getTarget(); - if ( target != null ) { + if (target != null) { try { - fContainer.setSessionProperty(new QualifiedName(MakeUIPlugin.getUniqueIdentifier(), "lastTarget"), target.getName()); + fContainer.setSessionProperty( + new QualifiedName(MakeUIPlugin.getUniqueIdentifier(), "lastTarget"), + target.getName()); } catch (CoreException e1) { } } } } - public void setActivePart(IAction action, IWorkbenchPart targetPart) { + public void setActivePart(IAction action, IWorkbenchPart targetPart) { fPart = targetPart; } @@ -59,12 +62,12 @@ public class BuildTargetAction extends ActionDelegate implements IObjectActionDe } public void selectionChanged(IAction action, ISelection selection) { - if ( selection instanceof IStructuredSelection ) { - IStructuredSelection sel = (IStructuredSelection)selection; - if ( sel.getFirstElement() instanceof ICContainer ) { - fContainer = (IContainer) ((ICContainer)sel.getFirstElement()).getUnderlyingResource(); - } else if (sel.getFirstElement() instanceof IContainer ) { - fContainer = (IContainer)sel.getFirstElement(); + if (selection instanceof IStructuredSelection) { + IStructuredSelection sel = (IStructuredSelection) selection; + if (sel.getFirstElement() instanceof ICContainer) { + fContainer = (IContainer) ((ICContainer) sel.getFirstElement()).getUnderlyingResource(); + } else if (sel.getFirstElement() instanceof IContainer) { + fContainer = (IContainer) sel.getFirstElement(); } else { fContainer = null; } diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/BuildTargetDialog.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/BuildTargetDialog.java index 3d96520a777..a5cf334eca0 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/BuildTargetDialog.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/BuildTargetDialog.java @@ -1,22 +1,75 @@ package org.eclipse.cdt.make.ui.dialogs; import org.eclipse.cdt.make.core.IMakeTarget; +import org.eclipse.cdt.make.internal.ui.part.CheckboxTablePart; +import org.eclipse.cdt.make.ui.MakeContentProvider; +import org.eclipse.cdt.make.ui.MakeLabelProvider; import org.eclipse.core.resources.IContainer; import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.viewers.CheckboxTableViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerFilter; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; public class BuildTargetDialog extends Dialog { - - public BuildTargetDialog(Shell shell, IContainer fContainer) { - super(shell); + + private IMakeTarget[] selected; + private CheckboxTableViewer targetListViewer; + private IContainer fContainer; + + public BuildTargetDialog(Shell shell, IContainer container) { + super(shell); + fContainer = container; } - public void setTarget(IMakeTarget target) { - + public void setTarget(IMakeTarget[] targets) { + selected = targets; } public IMakeTarget getTarget() { return null; } + protected void configureShell(Shell newShell) { + super.configureShell(newShell); + newShell.setText("Build Targets"); + } + + protected void createButtonsForButtonBar(Composite parent) { + // create Build and Cancel buttons by default + createButton(parent, IDialogConstants.OK_ID, "Build", true); + createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); + } + + protected Control createDialogArea(Composite parent) { + Composite composite = (Composite) super.createDialogArea(parent); + ((GridLayout)composite.getLayout()).numColumns = 2; + CheckboxTablePart part = new CheckboxTablePart(new String[] { "Select All", "Deselect All", "New" }); + part.createControl(parent, SWT.NULL, 2); + targetListViewer = part.getTableViewer(); + targetListViewer.setContentProvider(new MakeContentProvider()); + targetListViewer.addFilter(new ViewerFilter() { + public boolean select(Viewer viewer, Object parentElement, Object element) { + return (element instanceof IMakeTarget); + } + }); + targetListViewer.setLabelProvider(new MakeLabelProvider()); + + GridData gd = (GridData) part.getControl().getLayoutData(); + gd.heightHint = 100; + gd.widthHint = 100; + + targetListViewer.setInput(fContainer); + if (selected != null) + targetListViewer.setCheckedElements(selected); + + return composite; + } + } diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java index 3fb66a37098..59723ac833c 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/views/MakeView.java @@ -5,6 +5,7 @@ package org.eclipse.cdt.make.ui.views; * All Rights Reserved. */ +import org.eclipse.cdt.make.ui.*; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/MakeProjectWizardOptionPage.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/MakeProjectWizardOptionPage.java index c0ccf740ef1..8d0f2f0c391 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/MakeProjectWizardOptionPage.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/wizards/MakeProjectWizardOptionPage.java @@ -6,9 +6,9 @@ package org.eclipse.cdt.make.ui.wizards; */ import org.eclipse.cdt.make.internal.ui.MakeProjectOptionBlock; -import org.eclipse.cdt.ui.ICOptionContainer; -import org.eclipse.cdt.ui.ReferenceBlock; -import org.eclipse.cdt.ui.TabFolderOptionBlock; +import org.eclipse.cdt.ui.dialogs.ICOptionContainer; +import org.eclipse.cdt.ui.dialogs.ReferenceBlock; +import org.eclipse.cdt.ui.dialogs.TabFolderOptionBlock; import org.eclipse.cdt.ui.wizards.NewCProjectWizard; import org.eclipse.cdt.ui.wizards.NewCProjectWizardOptionPage; import org.eclipse.core.resources.IProject;