1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-06 15:55:47 +02:00

Launch Targets View clean up including adding properties dialog.

Change-Id: I0299e2cc4886ba04aaa5f8661f45207c5320a8c5
Reviewed-on: https://git.eclipse.org/r/31935
Tested-by: Hudson CI
Reviewed-by: Doug Schaefer <dschaefer@qnx.com>
This commit is contained in:
Doug Schaefer 2014-08-19 22:57:23 -04:00
parent e540100c9f
commit cf448ee139
4 changed files with 122 additions and 6 deletions

View file

@ -559,6 +559,16 @@ public class LaunchBarManager extends PlatformObject implements ILaunchBarManage
setPreference(getPerDescriptorStore(), PREF_ACTIVE_LAUNCH_MODE, mode.getIdentifier()); // per desc store setPreference(getPerDescriptorStore(), PREF_ACTIVE_LAUNCH_MODE, mode.getIdentifier()); // per desc store
} }
public ILaunchTarget[] getAllLaunchTargets() {
List<ILaunchTarget> targetList = new ArrayList<>();
for (ILaunchTargetType targetType : getAllLaunchTargetTypes()) {
for (ILaunchTarget target : targetType.getTargets()) {
targetList.add(target);
}
}
return targetList.toArray(new ILaunchTarget[targetList.size()]);
}
@Override @Override
public ILaunchTarget[] getLaunchTargets() { public ILaunchTarget[] getLaunchTargets() {
return getLaunchTargets(activeLaunchDesc); return getLaunchTargets(activeLaunchDesc);

View file

@ -94,5 +94,18 @@
</view> </view>
</perspectiveExtension> </perspectiveExtension>
</extension> </extension>
<extension
point="org.eclipse.ui.propertyPages">
<page
class="org.eclipse.cdt.launchbar.ui.internal.targetsView.TargetPropertyPage"
id="org.eclipse.cdt.launchbar.ui.infoPropertyPage"
name="About">
<enabledWhen>
<instanceof
value="org.eclipse.cdt.launchbar.core.ILaunchTarget">
</instanceof>
</enabledWhen>
</page>
</extension>
</plugin> </plugin>

View file

@ -1,33 +1,44 @@
package org.eclipse.cdt.launchbar.ui.internal.targetsView; package org.eclipse.cdt.launchbar.ui.internal.targetsView;
import java.util.Arrays;
import java.util.Comparator;
import org.eclipse.cdt.launchbar.core.ILaunchBarManager; import org.eclipse.cdt.launchbar.core.ILaunchBarManager;
import org.eclipse.cdt.launchbar.core.ILaunchDescriptor; import org.eclipse.cdt.launchbar.core.ILaunchDescriptor;
import org.eclipse.cdt.launchbar.core.ILaunchTarget; import org.eclipse.cdt.launchbar.core.ILaunchTarget;
import org.eclipse.cdt.launchbar.core.ILaunchTargetType; import org.eclipse.cdt.launchbar.core.ILaunchTargetType;
import org.eclipse.cdt.launchbar.core.internal.LaunchBarManager; import org.eclipse.cdt.launchbar.core.internal.LaunchBarManager;
import org.eclipse.cdt.launchbar.ui.internal.Activator; import org.eclipse.cdt.launchbar.ui.internal.Activator;
import org.eclipse.cdt.launchbar.ui.internal.LaunchBarUIManager;
import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerSorter;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.dialogs.PropertyDialogAction;
import org.eclipse.ui.part.ViewPart; import org.eclipse.ui.part.ViewPart;
public class LaunchTargetsViewPart extends ViewPart { public class LaunchTargetsViewPart extends ViewPart {
private TreeViewer treeViewer; private TreeViewer treeViewer;
private final LaunchBarUIManager uiManager;
public LaunchTargetsViewPart() { public LaunchTargetsViewPart() {
ILaunchBarManager manager = Activator.getService(ILaunchBarManager.class);
uiManager = (LaunchBarUIManager) manager.getAdapter(LaunchBarUIManager.class);
} }
@Override @Override
public void createPartControl(Composite parent) { public void createPartControl(Composite parent) {
treeViewer = new TreeViewer(parent, SWT.NONE); treeViewer = new TreeViewer(parent, SWT.NONE);
treeViewer.setContentProvider(new ITreeContentProvider() { treeViewer.setContentProvider(new ITreeContentProvider() {
@Override @Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
} }
@ -56,7 +67,9 @@ public class LaunchTargetsViewPart extends ViewPart {
@Override @Override
public Object[] getElements(Object inputElement) { public Object[] getElements(Object inputElement) {
return ((LaunchBarManager) inputElement).getAllLaunchTargetTypes(); // TODO optionally categorize by launch type, maybe
// return ((LaunchBarManager) inputElement).getLaunchTargetTypes();
return ((LaunchBarManager) inputElement).getAllLaunchTargets();
} }
@Override @Override
@ -67,14 +80,36 @@ public class LaunchTargetsViewPart extends ViewPart {
} }
}); });
treeViewer.setSorter(new ViewerSorter() {
@Override
public void sort(Viewer viewer, Object[] elements) {
if (elements instanceof ILaunchTarget[]) {
Arrays.sort((ILaunchTarget[]) elements, new Comparator<ILaunchTarget>() {
@Override
public int compare(ILaunchTarget o1, ILaunchTarget o2) {
return o1.getName().compareTo(o2.getName());
}
});
}
}
});
treeViewer.setLabelProvider(new LabelProvider() { treeViewer.setLabelProvider(new LabelProvider() {
@Override @Override
public String getText(Object element) { public String getText(Object element) {
if (element instanceof ILaunchTargetType) if (element instanceof ILaunchTargetType) {
return element.getClass().getSimpleName(); return element.getClass().getSimpleName();
else if (element instanceof ILaunchTarget) } else if (element instanceof ILaunchTarget) {
return ((ILaunchTarget) element).getName(); ILaunchTarget target = (ILaunchTarget) element;
return super.getText(element); ILabelProvider targetLabelProvider = uiManager.getLabelProvider(target);
if (targetLabelProvider != null) {
return targetLabelProvider.getText(element);
} else {
return target.getName();
}
} else {
return super.getText(element);
}
} }
}); });
@ -105,6 +140,9 @@ public class LaunchTargetsViewPart extends ViewPart {
}); });
MenuManager menuManager = new MenuManager(); MenuManager menuManager = new MenuManager();
menuManager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
menuManager.add(new Separator());
menuManager.add(new PropertyDialogAction(getSite(), treeViewer));
Menu menu = menuManager.createContextMenu(treeViewer.getControl()); Menu menu = menuManager.createContextMenu(treeViewer.getControl());
treeViewer.getControl().setMenu(menu); treeViewer.getControl().setMenu(menu);
getSite().registerContextMenu(menuManager, treeViewer); getSite().registerContextMenu(menuManager, treeViewer);

View file

@ -0,0 +1,55 @@
package org.eclipse.cdt.launchbar.ui.internal.targetsView;
import org.eclipse.cdt.launchbar.core.ILaunchTarget;
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.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.PropertyPage;
public class TargetPropertyPage extends PropertyPage {
private Text nameText;
@Override
protected Control createContents(Composite parent) {
Composite comp = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout(2, false);
comp.setLayout(layout);
ILaunchTarget target = (ILaunchTarget) getElement().getAdapter(ILaunchTarget.class);
Label nameLabel = new Label(comp, SWT.NONE);
nameLabel.setText("Target Name:");
nameText = new Text(comp, SWT.BORDER);
nameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
nameText.setText(target.getName());
Label targetLabel = new Label(comp, SWT.NONE);
targetLabel.setText("Target Id:");
Label targetId = new Label(comp, SWT.NONE);
targetId.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
targetId.setText(target.getId());
Label typeLabel = new Label(comp, SWT.NONE);
typeLabel.setText("Target Type:");
Label typeId = new Label(comp, SWT.NONE);
typeId.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
typeId.setText(target.getType().getId());
return comp;
}
@Override
public boolean performOk() {
System.out.println("Would change name to " + nameText.getText());
return true;
}
}