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:
parent
e540100c9f
commit
cf448ee139
4 changed files with 122 additions and 6 deletions
|
@ -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);
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue