mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-05 15:25:49 +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
|
||||
}
|
||||
|
||||
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
|
||||
public ILaunchTarget[] getLaunchTargets() {
|
||||
return getLaunchTargets(activeLaunchDesc);
|
||||
|
|
|
@ -94,5 +94,18 @@
|
|||
</view>
|
||||
</perspectiveExtension>
|
||||
</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>
|
||||
|
|
|
@ -1,33 +1,44 @@
|
|||
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.ILaunchDescriptor;
|
||||
import org.eclipse.cdt.launchbar.core.ILaunchTarget;
|
||||
import org.eclipse.cdt.launchbar.core.ILaunchTargetType;
|
||||
import org.eclipse.cdt.launchbar.core.internal.LaunchBarManager;
|
||||
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.Separator;
|
||||
import org.eclipse.jface.viewers.ILabelProvider;
|
||||
import org.eclipse.jface.viewers.ITreeContentProvider;
|
||||
import org.eclipse.jface.viewers.LabelProvider;
|
||||
import org.eclipse.jface.viewers.TreeViewer;
|
||||
import org.eclipse.jface.viewers.Viewer;
|
||||
import org.eclipse.jface.viewers.ViewerSorter;
|
||||
import org.eclipse.swt.SWT;
|
||||
import org.eclipse.swt.widgets.Composite;
|
||||
import org.eclipse.swt.widgets.Menu;
|
||||
import org.eclipse.ui.IWorkbenchActionConstants;
|
||||
import org.eclipse.ui.dialogs.PropertyDialogAction;
|
||||
import org.eclipse.ui.part.ViewPart;
|
||||
|
||||
public class LaunchTargetsViewPart extends ViewPart {
|
||||
|
||||
private TreeViewer treeViewer;
|
||||
private final LaunchBarUIManager uiManager;
|
||||
|
||||
public LaunchTargetsViewPart() {
|
||||
ILaunchBarManager manager = Activator.getService(ILaunchBarManager.class);
|
||||
uiManager = (LaunchBarUIManager) manager.getAdapter(LaunchBarUIManager.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createPartControl(Composite parent) {
|
||||
treeViewer = new TreeViewer(parent, SWT.NONE);
|
||||
treeViewer.setContentProvider(new ITreeContentProvider() {
|
||||
|
||||
@Override
|
||||
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
|
||||
}
|
||||
|
@ -56,7 +67,9 @@ public class LaunchTargetsViewPart extends ViewPart {
|
|||
|
||||
@Override
|
||||
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
|
||||
|
@ -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() {
|
||||
@Override
|
||||
public String getText(Object element) {
|
||||
if (element instanceof ILaunchTargetType)
|
||||
if (element instanceof ILaunchTargetType) {
|
||||
return element.getClass().getSimpleName();
|
||||
else if (element instanceof ILaunchTarget)
|
||||
return ((ILaunchTarget) element).getName();
|
||||
return super.getText(element);
|
||||
} else if (element instanceof ILaunchTarget) {
|
||||
ILaunchTarget target = (ILaunchTarget) 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.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
|
||||
menuManager.add(new Separator());
|
||||
menuManager.add(new PropertyDialogAction(getSite(), treeViewer));
|
||||
Menu menu = menuManager.createContextMenu(treeViewer.getControl());
|
||||
treeViewer.getControl().setMenu(menu);
|
||||
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