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:
parent
ab9ad3ffba
commit
f16f7a86c8
10 changed files with 210 additions and 12 deletions
|
@ -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
|
||||
|
|
BIN
bundles/org.eclipse.launchbar.ui/icons/icon_debug_32x32.png
Normal file
BIN
bundles/org.eclipse.launchbar.ui/icons/icon_debug_32x32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 620 B |
BIN
bundles/org.eclipse.launchbar.ui/icons/icon_profile_32x32.png
Normal file
BIN
bundles/org.eclipse.launchbar.ui/icons/icon_profile_32x32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2 KiB |
BIN
bundles/org.eclipse.launchbar.ui/icons/icon_run_32x32.png
Normal file
BIN
bundles/org.eclipse.launchbar.ui/icons/icon_run_32x32.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 466 B |
BIN
bundles/org.eclipse.launchbar.ui/icons/launch_base_blank.png
Normal file
BIN
bundles/org.eclipse.launchbar.ui/icons/launch_base_blank.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 323 B |
|
@ -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;
|
||||
|
|
|
@ -522,7 +522,7 @@ public abstract class CSelector extends Composite {
|
|||
if (currentLabel != null) {
|
||||
currentLabel.getText();
|
||||
}
|
||||
return "";
|
||||
return ""; //$NON-NLS-1$
|
||||
}
|
||||
|
||||
protected boolean hasActionArea() {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue