Index: editor/tools/plugins/com.xored.glance.ui/src/com/xored/glance/ui/controls/text/styled/StyledTextSelector.java |
=================================================================== |
--- editor/tools/plugins/com.xored.glance.ui/src/com/xored/glance/ui/controls/text/styled/StyledTextSelector.java (revision 0) |
+++ editor/tools/plugins/com.xored.glance.ui/src/com/xored/glance/ui/controls/text/styled/StyledTextSelector.java (revision 0) |
@@ -0,0 +1,54 @@ |
+/******************************************************************************* |
+ * Copyright (c) 2012 xored software, Inc. All rights reserved. This program and the accompanying |
+ * materials are made available under the terms of the Eclipse Public License v1.0 which accompanies |
+ * this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html Contributors: |
+ * xored software, Inc. - initial API and implementation (Yuri Strot) |
+ ******************************************************************************/ |
+package com.xored.glance.ui.controls.text.styled; |
+ |
+import org.eclipse.jface.text.Region; |
+import org.eclipse.swt.custom.StyledText; |
+import org.eclipse.swt.graphics.Point; |
+import org.eclipse.swt.widgets.Control; |
+ |
+public class StyledTextSelector extends TextSelector { |
+ |
+ private final StyledText text; |
+ |
+ public StyledTextSelector(StyledText text) { |
+ this.text = text; |
+ init(); |
+ } |
+ |
+ @Override |
+ protected Control getControl() { |
+ return text; |
+ } |
+ |
+ @Override |
+ protected Region getSelection() { |
+ final Point point = text.getSelection(); |
+ return new Region(point.x, point.y - point.x); |
+ } |
+ |
+ @Override |
+ protected void setSelection(int offset, int length) { |
+ text.setSelectionRange(offset, length); |
+ } |
+ |
+ @Override |
+ protected void reveal(int offset, int length) { |
+ Region region = getSelection(); |
+ if (region.getOffset() == offset && region.getLength() == length) { |
+ text.showSelection(); |
+ } else { |
+ setSelection(offset, length); |
+ try { |
+ text.showSelection(); |
+ } finally { |
+ text.setSelectionRange(region.getOffset(), region.getLength()); |
+ } |
+ } |
+ } |
+ |
+} |