From f16f7a86c8c5704fa2d5bad65cc684609db9c74a Mon Sep 17 00:00:00 2001 From: Alena Laskavaia Date: Fri, 15 Jan 2016 12:37:33 -0500 Subject: [PATCH] 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 --- .../.settings/org.eclipse.jdt.core.prefs | 94 ++++++++++++++ .../icons/icon_debug_32x32.png | Bin 0 -> 620 bytes .../icons/icon_profile_32x32.png | Bin 0 -> 2019 bytes .../icons/icon_run_32x32.png | Bin 0 -> 466 bytes .../icons/launch_base_blank.png | Bin 0 -> 323 bytes .../launchbar/ui/internal/Messages.java | 1 + .../ui/internal/controls/CSelector.java | 2 +- .../internal/controls/LaunchBarControl.java | 9 +- .../ui/internal/controls/ModeSelector.java | 115 +++++++++++++++++- .../launchbar/ui/internal/messages.properties | 1 + 10 files changed, 210 insertions(+), 12 deletions(-) create mode 100644 bundles/org.eclipse.launchbar.ui/icons/icon_debug_32x32.png create mode 100644 bundles/org.eclipse.launchbar.ui/icons/icon_profile_32x32.png create mode 100644 bundles/org.eclipse.launchbar.ui/icons/icon_run_32x32.png create mode 100644 bundles/org.eclipse.launchbar.ui/icons/launch_base_blank.png diff --git a/bundles/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.core.prefs index 0c68a61dca8..4a1ace7a1ef 100644 --- a/bundles/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.core.prefs +++ b/bundles/org.eclipse.launchbar.ui/.settings/org.eclipse.jdt.core.prefs @@ -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 diff --git a/bundles/org.eclipse.launchbar.ui/icons/icon_debug_32x32.png b/bundles/org.eclipse.launchbar.ui/icons/icon_debug_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..eb33867315537f4e63f1deca42f0747ec5312815 GIT binary patch literal 620 zcmV-y0+aoTP)4lLy8I(L6JgO@=DL$=#A6ftrD6FHiq zZR&{ORfVHQ3z?f73 zN-upo&LPOrPP{t@Sw7f#g7HAZqm}PlT{+ z1osDavq`|-62 zKt2)V5(gVjYF+UD+e<>F;Q5hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8KW+g=7RhMR$W{Yl!|Z$R@KEJl?AE#L8-<0 zrA5iW_()TRX$FQJev3c~fv&OgFUkZ)N@9*nesXDUYF>$_i>(q+MlU5Z#mdRm)!5n1 z)!f{`$kfcj(9puj$kENj+|k6$%+1ll!U$#tR=q}+t}Z4frk1WwK%K5ej!uTgPL9Ur zCdP(lrY>%9y`Fi+C5d^-sW5vpLH0uQn&8!ID+CL zUoU&?Y@bwpob-9Nmfx46X6|6Dlytq48nPj3ZN|G5PM`0KUoiim-*wNXYjJ4xg8s;! zGp*8scDhpU*W7C7%GJq=_Ww~;I-@JfaQnHJ_e{iIggyAXb-wf3O`$nw-^Ldl`>;3J zE=0Jo@nBtaF023H+uCIcwRL)KYZw1mxJsg2J~r6sz>04d`ecQc@QLN6f07GUKlPel zDLc?kFjK~=tSIpElJftB+OOV+b$ndb6Z=S(OXv_=OOh4t znMZ6+k?xr?K|HFiEm}dl7o1WPgIOm^3OX8VrZVzwHtY+a1V|!`xXlAfxk@BtC;m<0r{aO&$SwF!x;iFmg z({q}FZ7*+0#AMmN`_QrCzoPQG`>RzJ?K8~w(XR@u{hhwC&GzWh)e6pCY+q))Tl}uS z$S`j17Rhd5qgu1_Z(QN6FJ|qZ-YKBj(dwKqDSnS!>+QUnBQ`3pE`5mm#<>6c&24(j zdfQ|^FHKA0FVW5{Fr9L(rfFIA)Vj&{U#wVWT7B2+dUMIgv=FyuUB+Jun#uez{13z@ zI_moCG*0@QRT-1T#ZakSeB1h=-?{CcD(UND&#m1tZNuDzc`QYnpR6jr%k9OPZE2`B zVNYbyl&agjub*gozO0aY*}UZZ;g5F|Chxr&`qQ3~jX~pfVD_qF7dcS1>*?y}vd$@? F2>?HDB-H=_ literal 0 HcmV?d00001 diff --git a/bundles/org.eclipse.launchbar.ui/icons/icon_run_32x32.png b/bundles/org.eclipse.launchbar.ui/icons/icon_run_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..d704b703b719540e5a5740679d068bf92ea6d307 GIT binary patch literal 466 zcmV;@0WJQCP)*h(c5wcsGR{!(9}Lqz@7=3)dmVEFi|0& zQvw`Vh*inYt-~NC=)v&q=VOM4uUAsd1w=c*PHPEOMts(8wGtD#p}|DWJVj1uFwr7& zv$F7mF;%l6F#uFXoCRjj*Po72zZ@V0?!1`IaQ#US!|y*IX;TnU)7MmU0J**<%K^Xt zeu9^Vl=_-12OPQ<1h0&qz28BRugP)%sN$hU<%6vpI52?ifdfp?PQyTf2Taf&%RqsH zAO~!KHj(KKKz43mg7(!K2fzWKF4~8|(KQ&r{hX4Qo07*qo IM6N<$f+n-L8vp<>&pIsk)Kc1q{gdp4p8WVr;B4q#NoHsH|8=KO0+$EZo{ZN z!83uSpW$t2V$%yV4_9fo4;%)b5(kx+{8Uz)ka1#e@DJVEqu+nkMSn8i@i=15gpCKK zqSqH56BVCgxO%&M`|c0rH3_M5TFVT7*9cgM#ovf*yFBBq;@vkjD+_M8E>leVXZtw6 z-mGuC2z%bkf{8PO=X?vx35wYow&t?@ozLMn)Oues#V+73Y1F&Gy33)fygIls`|zLO zu49+Fyq!ALKV1r$A`+XMrC`t-`B(lbPtrq!&lXyI`ycYZ-QjBcpOG=&l-v5QNg&W~ N44$rjF6*2UngBfpeYXGr literal 0 HcmV?d00001 diff --git a/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/Messages.java b/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/Messages.java index 7aef26870a3..be31a049e01 100644 --- a/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/Messages.java +++ b/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/Messages.java @@ -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; diff --git a/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/controls/CSelector.java b/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/controls/CSelector.java index ade71106fec..b9d4808157d 100644 --- a/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/controls/CSelector.java +++ b/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/controls/CSelector.java @@ -522,7 +522,7 @@ public abstract class CSelector extends Composite { if (currentLabel != null) { currentLabel.getText(); } - return ""; + return ""; //$NON-NLS-1$ } protected boolean hasActionArea() { diff --git a/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/controls/LaunchBarControl.java b/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/controls/LaunchBarControl.java index 8a481f1316c..b375dc331d4 100644 --- a/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/controls/LaunchBarControl.java +++ b/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/controls/LaunchBarControl.java @@ -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 diff --git a/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/controls/ModeSelector.java b/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/controls/ModeSelector.java index 1a46006323f..b44e8bb3cb4 100644 --- a/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/controls/ModeSelector.java +++ b/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/controls/ModeSelector.java @@ -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 images = new HashMap<>(); @@ -123,7 +127,6 @@ public class ModeSelector extends CSelector { return super.getText(element); } }); - setSorter(new Comparator() { @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; + } + } } diff --git a/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/messages.properties b/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/messages.properties index 2e57068198c..122b2e13e27 100644 --- a/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/messages.properties +++ b/bundles/org.eclipse.launchbar.ui/src/org/eclipse/launchbar/ui/internal/messages.properties @@ -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