1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-02 22:55:26 +02:00

launchbar: launch button - mode overlay

- when mode select - change button to match mode, change tooltip to show
mode name
- also added errors settings

Change-Id: Id537e0fe65d8632dbd97183680d2bc1b3d635c86
Signed-off-by: Alena Laskavaia <elaskavaia.cdt@gmail.com>
This commit is contained in:
Alena Laskavaia 2016-01-15 12:37:33 -05:00 committed by Gerrit Code Review @ Eclipse.org
parent ab9ad3ffba
commit f16f7a86c8
10 changed files with 210 additions and 12 deletions

View file

@ -1,7 +1,101 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled
org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore
org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull
org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault
org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
org.eclipse.jdt.core.compiler.problem.comparingIdentical=error
org.eclipse.jdt.core.compiler.problem.deadCode=ignore
org.eclipse.jdt.core.compiler.problem.deprecation=warning
org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore
org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning
org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled
org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=enabled
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning
org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=error
org.eclipse.jdt.core.compiler.problem.missingDefaultCase=warning
org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled
org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=error
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=error
org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning
org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=warning
org.eclipse.jdt.core.compiler.problem.nullReference=error
org.eclipse.jdt.core.compiler.problem.nullSpecViolation=warning
org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning
org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning
org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore
org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore
org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore
org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=enabled
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=disabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedImport=error
org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=warning
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore
org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
org.eclipse.jdt.core.compiler.source=1.8

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 466 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 B

View file

@ -42,6 +42,7 @@ public class Messages extends NLS {
public static String LaunchConfigurationEditDialog_5;
public static String LaunchConfigurationEditDialog_6;
public static String ModeSelector_0;
public static String ModeSelector_ToolTip;
public static String NewLaunchConfigEditPage_0;
public static String NewLaunchConfigEditPage_1;
public static String NewLaunchConfigEditPage_2;

View file

@ -522,7 +522,7 @@ public abstract class CSelector extends Composite {
if (currentLabel != null) {
currentLabel.getText();
}
return "";
return ""; //$NON-NLS-1$
}
protected boolean hasActionArea() {

View file

@ -7,7 +7,7 @@
*
* Contributors:
* Doug Schaefer
* Torkild U. Resheim - add preference to control target selector
* Torkild U. Resheim - add preference to control target selector
*******************************************************************************/
package org.eclipse.launchbar.ui.internal.controls;
@ -106,20 +106,19 @@ public class LaunchBarControl implements Listener {
manager.removeListener(this);
}
private void createButton(Composite parent, String imageName, String toolTipText, final String command) {
private ToolItem createButton(Composite parent, String imageName, String toolTipText, final String command) {
ToolItem button = new ToolItem((ToolBar) parent, SWT.FLAT);
// button.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false));
Image srcImage = Activator.getDefault().getImage(imageName);
// Image image = new Image(parent.getDisplay(), srcImage,
// SWT.IMAGE_COPY);
button.setImage(srcImage);
button.setToolTipText(toolTipText);
button.setData("command", command); //$NON-NLS-1$
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
Activator.runCommand(command);
};
});
return button;
}
@Override

View file

@ -10,6 +10,7 @@
*******************************************************************************/
package org.eclipse.launchbar.ui.internal.controls;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
@ -21,6 +22,7 @@ import org.eclipse.debug.core.ILaunchMode;
import org.eclipse.debug.internal.ui.DebugUIPlugin;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.debug.ui.ILaunchGroup;
import org.eclipse.jface.resource.CompositeImageDescriptor;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
@ -28,22 +30,25 @@ import org.eclipse.jface.viewers.Viewer;
import org.eclipse.launchbar.core.internal.LaunchBarManager;
import org.eclipse.launchbar.ui.internal.Activator;
import org.eclipse.launchbar.ui.internal.Messages;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.PaletteData;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
@SuppressWarnings("restriction")
public class ModeSelector extends CSelector {
private static final String[] noModes = new String[] { "---" }; //$NON-NLS-1$
private final LaunchBarManager manager = Activator.getDefault().getLaunchBarUIManager().getManager();
public ModeSelector(Composite parent, int style) {
super(parent, style);
setToolTipText(Messages.ModeSelector_0);
setContentProvider(new IStructuredContentProvider() {
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
@ -65,7 +70,6 @@ public class ModeSelector extends CSelector {
return noModes;
}
});
setLabelProvider(new LabelProvider() {
private Map<ImageDescriptor, Image> images = new HashMap<>();
@ -123,7 +127,6 @@ public class ModeSelector extends CSelector {
return super.getText(element);
}
});
setSorter(new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
@ -202,6 +205,106 @@ public class ModeSelector extends CSelector {
if (element == null)
element = noModes[0];
super.setSelection(element);
updateLaunchButton(findLaunchButton());
}
private ToolItem findLaunchButton() {
String commandId = Activator.CMD_LAUNCH;
for (Control control : getParent().getChildren()) {
if (control instanceof ToolBar) {
for (ToolItem toolItem : ((ToolBar) control).getItems()) {
if (commandId.equals(toolItem.getData("command"))) { //$NON-NLS-1$
// found launch button
return toolItem;
}
}
}
}
Activator.log(new RuntimeException("Launch button is not found in toolbar")); //$NON-NLS-1$
return null;
}
private void updateLaunchButton(ToolItem toolItem) {
if (toolItem == null) {
return;
}
toolItem.setImage(Activator.getDefault().getImage(Activator.IMG_BUTTON_LAUNCH));
Object selection = getSelection();
if (selection instanceof ILaunchMode) {
ILaunchMode lmode = (ILaunchMode) selection;
toolItem.setToolTipText(NLS.bind(Messages.ModeSelector_ToolTip, lmode.getLabel()));
String mode = lmode.getIdentifier();
String iconPath = "icons/icon_" + mode + "_32x32.png"; //$NON-NLS-1$ //$NON-NLS-2$
Image modeBigImage = Activator.getDefault().getImage(iconPath);
if (modeBigImage == null) {
// no icon for the mode, lets do an overlay
Image modeImageOrig = getLabelProvider().getImage(lmode);
if (modeImageOrig != null) {
ImageDescriptor composite = new ReversedCenterOverlay(modeImageOrig.getImageData());
Activator.getDefault().getImageRegistry().put(iconPath, composite);
modeBigImage = Activator.getDefault().getImage(iconPath);
}
}
if (modeBigImage != null) {
toolItem.setImage(modeBigImage);
}
}
}
private final class ReversedCenterOverlay extends CompositeImageDescriptor {
private ImageData small;
public ReversedCenterOverlay(ImageData small) {
this.small = small;
}
@Override
protected Point getSize() {
return new Point(32, 32);
}
@Override
protected void drawCompositeImage(int width, int height) {
ImageDescriptor base = Activator.getImageDescriptor("icons/launch_base_blank.png"); //$NON-NLS-1$
ImageData baseData = base.getImageData();
int baseColor = baseData.getPixel(16, 16);
ImageData data = getReversed(small, baseData.palette.getRGB(baseColor));
drawImage(baseData, 0, 0);
drawImage(data, 8, 8);
}
private ImageData getReversed(ImageData imageData, RGB baseColor) {
int width = imageData.width;
PaletteData palette = imageData.palette;
RGB whiteColor = new RGB(255, 255, 255);
if (!palette.isDirect) {
palette.colors = Arrays.copyOf(palette.colors, palette.colors.length + 2);
palette.colors[palette.colors.length - 1] = baseColor;
palette.colors[palette.colors.length - 2] = whiteColor;
}
int whitePixel = palette.getPixel(whiteColor);
int basePixed = palette.getPixel(baseColor);
int transPixed = imageData.transparentPixel;
int[] lineData = new int[imageData.width];
for (int y = 0; y < imageData.height; y++) {
imageData.getPixels(0, y, width, lineData, 0);
for (int x = 0; x < lineData.length; x++) {
int pixelValue = lineData[x];
if (pixelValue == transPixed) {
imageData.setPixel(x, y, basePixed);
continue;
}
RGB rgb = palette.getRGB(pixelValue);
float brightness = rgb.getHSB()[2];
if (brightness > 0.97) {
imageData.setPixel(x, y, basePixed);
} else {
imageData.setPixel(x, y, whitePixel);
}
}
}
imageData.transparentPixel = -1;
return imageData;
}
}
}

View file

@ -25,6 +25,7 @@ LaunchConfigurationEditDialog_4=Are you sure you want to delete
LaunchConfigurationEditDialog_5=Deleting launch configuration
LaunchConfigurationEditDialog_6=Duplicating launch configuration
ModeSelector_0=Launch Mode
ModeSelector_ToolTip=Launch in ''{0}'' mode
NewLaunchConfigEditPage_0=NewLaunchConfigEditPage
NewLaunchConfigEditPage_1=Launch Configuration Properties
NewLaunchConfigEditPage_2=Edit the new launch configuration properties