1
0
Fork 0
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:
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
}
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);

View file

@ -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>

View file

@ -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);

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;
}
}