Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDani Megert2003-10-20 14:29:05 +0000
committerDani Megert2003-10-20 14:29:05 +0000
commitc859d726e8f749fdf3914ee71ab04ff303ccfaf6 (patch)
treef0b6a15043823d1ef06b2583b38ddb0545bdf8a1
parentee4ea3d8c11b56491044235676b8c484e0850f2a (diff)
downloadeclipse.platform.text-c859d726e8f749fdf3914ee71ab04ff303ccfaf6.tar.gz
eclipse.platform.text-c859d726e8f749fdf3914ee71ab04ff303ccfaf6.tar.xz
eclipse.platform.text-c859d726e8f749fdf3914ee71ab04ff303ccfaf6.zip
Implemented feature 45124: Place incremental find status into separate status line item
-rw-r--r--org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/EditorMessages.properties8
-rw-r--r--org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/StatusLineContributionItem.java117
2 files changed, 110 insertions, 15 deletions
diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/EditorMessages.properties b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/EditorMessages.properties
index b0317272365..1d03c8d805b 100644
--- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/EditorMessages.properties
+++ b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/EditorMessages.properties
@@ -180,8 +180,12 @@ Editor.FindIncremental.label=&Incremental Find Next
Editor.FindIncremental.tooltip=Incremental Find Next
Editor.FindIncremental.image=
Editor.FindIncremental.description=Incremental Find Next
-Editor.FindIncremental.not_found.pattern={0}{1}Incremental Find: {2} not found
-Editor.FindIncremental.found.pattern={0}{1}Incremental Find: {2}
+
+# Incremental Find Status field
+Editor.FindIncremental.name= Incremental Find
+Editor.FindIncremental.reverse.name= Reverse Incremental Find
+Editor.FindIncremental.not_found.pattern={0}{1} {2} not found
+Editor.FindIncremental.found.pattern={0}{1}: {2}
Editor.FindIncremental.render.tab=<TAB>
# The following two properties must end in a space
Editor.FindIncremental.wrapped=Wrapped
diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/StatusLineContributionItem.java b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/StatusLineContributionItem.java
index 7d71cadb699..4b26773248b 100644
--- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/StatusLineContributionItem.java
+++ b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/StatusLineContributionItem.java
@@ -21,16 +21,18 @@ import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.jface.action.ContributionItem;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.StatusLineLayoutData;
+import org.eclipse.jface.resource.JFaceColors;
/**
* Contribution item for the status line.
* @since 2.0
*/
-public class StatusLineContributionItem extends ContributionItem implements IStatusField {
+public class StatusLineContributionItem extends ContributionItem implements IStatusField, IStatusFieldExtension {
/**
* Internal mouse listener to track double clicking the status line item.
@@ -52,20 +54,39 @@ public class StatusLineContributionItem extends ContributionItem implements ISta
*/
private static final int INDENT= 3;
/**
- * Number of characters that should fit into the item.
+ * Default number of characters that should fit into the item.
* @since 2.1
*/
- private static final int LENGTH= 14;
-
+ static final int DEFAULT_WIDTH_IN_CHARS= 14;
/**
* Precomputed label width hint.
* @since 2.1
*/
private int fFixedWidth= -1;
- /** The label text */
+ /** The text */
private String fText;
- /** The label image */
+ /** The image */
private Image fImage;
+ /**
+ * The error text.
+ * @since 3.0
+ */
+ private String fErrorText;
+ /**
+ * The error image.
+ * @since 3.0
+ */
+ private Image fErrorImage;
+ /**
+ * The tool tip text.
+ * @since 3.0
+ */
+ private String fToolTipText;
+ /**
+ * Number of characters that should fit into the item.
+ * @since 3.0
+ */
+ private int fWidthInChars;
/** The status line label widget */
private CLabel fLabel;
/**
@@ -86,7 +107,21 @@ public class StatusLineContributionItem extends ContributionItem implements ISta
* @param id the item's id
*/
public StatusLineContributionItem(String id) {
+ this(id, true, DEFAULT_WIDTH_IN_CHARS);
+ }
+
+ /**
+ * Creates a new item with the given attributes.
+ *
+ * @param id the item's id
+ * @param visible the visibility of this item
+ * @param widthInChars the width in characters
+ * @since 3.0
+ */
+ public StatusLineContributionItem(String id, boolean visible, int widthInChars) {
super(id);
+ setVisible(visible);
+ fWidthInChars= widthInChars;
}
/*
@@ -94,9 +129,7 @@ public class StatusLineContributionItem extends ContributionItem implements ISta
*/
public void setText(String text) {
fText= text;
- if (fLabel != null && !fLabel.isDisposed()) {
- fLabel.setText(fText);
- }
+ updateMessageLabel();
}
/*
@@ -104,9 +137,34 @@ public class StatusLineContributionItem extends ContributionItem implements ISta
*/
public void setImage(Image image) {
fImage= image;
- if (fLabel != null && !fLabel.isDisposed()) {
- fLabel.setImage(fImage);
- }
+ updateMessageLabel();
+ }
+
+ /*
+ * @see org.eclipse.ui.texteditor.IStatusFieldExtension#setErrorText(java.lang.String)
+ * @since 3.0
+ */
+ public void setErrorText(String text) {
+ fErrorText= text;
+ updateMessageLabel();
+ }
+
+ /*
+ * @see org.eclipse.ui.texteditor.IStatusFieldExtension#setErrorImage(org.eclipse.swt.graphics.Image)
+ * @since 3.0
+ */
+ public void setErrorImage(Image image) {
+ fErrorImage= image;
+ updateMessageLabel();
+ }
+
+ /*
+ * @see org.eclipse.ui.texteditor.IStatusFieldExtension#setToolTipText(java.lang.String)
+ * @since 3.0
+ */
+ public void setToolTipText(String string) {
+ fToolTipText= string;
+ updateMessageLabel();
}
/*
@@ -159,11 +217,44 @@ public class StatusLineContributionItem extends ContributionItem implements ISta
if (fFixedWidth < 0) {
GC gc= new GC(control);
gc.setFont(control.getFont());
- fFixedWidth= gc.getFontMetrics().getAverageCharWidth() * LENGTH;
+ fFixedWidth= gc.getFontMetrics().getAverageCharWidth() * fWidthInChars;
fFixedWidth += INDENT * 2;
gc.dispose();
}
return fFixedWidth;
}
+
+ /**
+ * Updates the message label widget.
+ *
+ * @since 3.0
+ */
+ private void updateMessageLabel() {
+ if (fLabel != null && !fLabel.isDisposed()) {
+ Display display = fLabel.getDisplay();
+ if ((fErrorText != null && fErrorText.length() > 0) || fErrorImage != null) {
+ fLabel.setForeground(JFaceColors.getErrorText(display));
+ fLabel.setText(fErrorText);
+ fLabel.setImage(fErrorImage);
+ if (fToolTipText != null)
+ fLabel.setToolTipText(fToolTipText);
+ else if (fErrorText.length() > fWidthInChars)
+ fLabel.setToolTipText(fErrorText);
+ else
+ fLabel.setToolTipText(null);
+ }
+ else {
+ fLabel.setForeground(display.getSystemColor(SWT.COLOR_WIDGET_FOREGROUND));
+ fLabel.setText(fText);
+ fLabel.setImage(fImage);
+ if (fToolTipText != null)
+ fLabel.setToolTipText(fToolTipText);
+ else if (fText != null && fText.length() > fWidthInChars)
+ fLabel.setToolTipText(fText);
+ else
+ fLabel.setToolTipText(null);
+ }
+ }
+ }
}

Back to the top