summaryrefslogtreecommitdiff
path: root/ooxml/source/framework/OOXMLViewer/src/org/apache/openoffice/ooxml/viewer/tokenview/Run.java
diff options
context:
space:
mode:
Diffstat (limited to 'ooxml/source/framework/OOXMLViewer/src/org/apache/openoffice/ooxml/viewer/tokenview/Run.java')
-rwxr-xr-xooxml/source/framework/OOXMLViewer/src/org/apache/openoffice/ooxml/viewer/tokenview/Run.java249
1 files changed, 249 insertions, 0 deletions
diff --git a/ooxml/source/framework/OOXMLViewer/src/org/apache/openoffice/ooxml/viewer/tokenview/Run.java b/ooxml/source/framework/OOXMLViewer/src/org/apache/openoffice/ooxml/viewer/tokenview/Run.java
new file mode 100755
index 000000000000..ad2677efcb77
--- /dev/null
+++ b/ooxml/source/framework/OOXMLViewer/src/org/apache/openoffice/ooxml/viewer/tokenview/Run.java
@@ -0,0 +1,249 @@
+/**************************************************************
+*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*
+*************************************************************/
+
+package org.apache.openoffice.ooxml.viewer.tokenview;
+
+import java.awt.Color;
+import java.awt.FontMetrics;
+import java.awt.Graphics2D;
+
+public class Run<TokenType>
+{
+ Run (
+ final String sText,
+ final TokenType eTokenType,
+ final Style aStyle,
+ final int nOffset)
+ {
+ msText = sText;
+ meTokenType = eTokenType;
+ maStyle = aStyle!=null ? aStyle : Style.DefaultStyle;
+ mnStreamOffset = nOffset;
+
+ mnWidth = -1;
+ mnHeight = -1;
+ mnOffset = nOffset;
+ maParent = null;
+ maGroupEnd = null;
+ maLine = null;
+ }
+
+
+
+
+ public void Format (
+ final Graphics2D aG2)
+ {
+ final FontMetrics aMetrics = aG2.getFontMetrics(maStyle.GetFont());
+ mnWidth = aMetrics.stringWidth(msText);
+ mnHeight = aMetrics.getHeight();
+ mnOffset = -aMetrics.getDescent();
+ }
+
+
+
+
+ public void Paint (
+ final Graphics2D aG2,
+ final int nX,
+ final int nY,
+ final Color aBackgroundColor)
+ {
+ maStyle.Set(aG2);
+
+ if (mnWidth < 0)
+ {
+ mnWidth = aG2.getFontMetrics().stringWidth(msText);
+ mnHeight = aG2.getFontMetrics().getHeight();
+ }
+
+ if (aBackgroundColor != null)
+ {
+ final Color aSavedColor = aG2.getColor();
+ aG2.setColor(aBackgroundColor);
+ aG2.fillRect(nX,nY-mnHeight, mnWidth, mnHeight);
+ aG2.setColor(aSavedColor);
+ }
+ aG2.drawString(msText, nX, nY+mnOffset);
+
+ if (msToolTipText != null)
+ {
+ aG2.drawLine(nX, nY-1, nX+mnWidth, nY-1);
+ }
+ }
+
+
+
+
+ public String GetText()
+ {
+ return msText;
+ }
+
+
+
+
+ public Style GetStyle ()
+ {
+ return maStyle;
+ }
+
+
+
+
+ public int GetStreamOffset ()
+ {
+ return mnStreamOffset;
+ }
+
+
+
+
+ public int GetStreamEndOffset ()
+ {
+ return mnStreamOffset + msText.length();
+ }
+
+
+
+
+ public int GetWidth()
+ {
+ return mnWidth;
+ }
+
+
+
+
+ public int GetHeight ()
+ {
+ return mnHeight;
+ }
+
+
+
+
+ public void SetGroupParent (final Run<TokenType> aParent)
+ {
+ maParent = aParent;
+ }
+
+
+
+
+ public void SetGroupEnd (final Run<TokenType> aRun)
+ {
+ maGroupEnd = aRun;
+ }
+
+
+
+
+ public Run<TokenType> GetGroupEnd()
+ {
+ return maGroupEnd;
+ }
+
+
+
+
+ public boolean IsGroup ()
+ {
+ if (maGroupEnd == null)
+ return false;
+ else if (maLine == maGroupEnd.maLine)
+ return true;
+ else
+ return true;
+ }
+
+
+
+
+ public Run<TokenType> GetParent ()
+ {
+ return maParent;
+ }
+
+
+
+
+ public Line<TokenType> GetLine ()
+ {
+ return maLine;
+ }
+
+
+
+
+ public void SetLine (final Line<TokenType> aLine)
+ {
+ maLine = aLine;
+ }
+
+
+
+
+ public void SetToolTipText (final String sText)
+ {
+ msToolTipText = sText;
+ }
+
+
+
+
+ public String GetToolTipText ()
+ {
+ return msToolTipText;
+ }
+
+
+
+
+ public TokenType GetTokenType ()
+ {
+ return meTokenType;
+ }
+
+
+
+
+ @Override
+ public String toString ()
+ {
+ return "run '"+msText+"' @ "+mnOffset;
+ }
+
+
+
+
+ private final String msText;
+ private final TokenType meTokenType;
+ private final Style maStyle;
+ private final int mnStreamOffset;
+ private int mnWidth;
+ private int mnHeight;
+ private int mnOffset;
+ private Run<TokenType> maParent;
+ private Run<TokenType> maGroupEnd;
+ private Line<TokenType> maLine;
+ private String msToolTipText;
+}