summaryrefslogtreecommitdiffstats
path: root/libjava/javax/swing/plaf/basic/BasicTextUI.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/javax/swing/plaf/basic/BasicTextUI.java')
-rw-r--r--libjava/javax/swing/plaf/basic/BasicTextUI.java496
1 files changed, 0 insertions, 496 deletions
diff --git a/libjava/javax/swing/plaf/basic/BasicTextUI.java b/libjava/javax/swing/plaf/basic/BasicTextUI.java
deleted file mode 100644
index 530332b79f6..00000000000
--- a/libjava/javax/swing/plaf/basic/BasicTextUI.java
+++ /dev/null
@@ -1,496 +0,0 @@
-/* BasicTextUI.java --
- Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-
-package javax.swing.plaf.basic;
-
-import java.awt.Container;
-import java.awt.Dimension;
-import java.awt.Graphics;
-import java.awt.Insets;
-import java.awt.Point;
-import java.awt.Rectangle;
-import java.awt.Shape;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import javax.swing.Action;
-import javax.swing.ActionMap;
-import javax.swing.InputMap;
-import javax.swing.JComponent;
-import javax.swing.SwingUtilities;
-import javax.swing.UIDefaults;
-import javax.swing.UIManager;
-import javax.swing.plaf.TextUI;
-import javax.swing.plaf.UIResource;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.Caret;
-import javax.swing.text.DefaultCaret;
-import javax.swing.text.DefaultEditorKit;
-import javax.swing.text.DefaultHighlighter;
-import javax.swing.text.Document;
-import javax.swing.text.EditorKit;
-import javax.swing.text.Element;
-import javax.swing.text.Highlighter;
-import javax.swing.text.JTextComponent;
-import javax.swing.text.Keymap;
-import javax.swing.text.PlainView;
-import javax.swing.text.Position;
-import javax.swing.text.View;
-import javax.swing.text.ViewFactory;
-
-
-public abstract class BasicTextUI extends TextUI
- implements ViewFactory
-{
- public static class BasicCaret extends DefaultCaret
- implements UIResource
- {
- public BasicCaret()
- {
- }
- }
-
- public static class BasicHighlighter extends DefaultHighlighter
- implements UIResource
- {
- public BasicHighlighter()
- {
- }
- }
-
- private class RootView extends View
- {
- private View view;
-
- public RootView()
- {
- super(null);
- }
-
- // View methods.
-
- public ViewFactory getViewFactory()
- {
- // FIXME: Handle EditorKit somehow.
- return BasicTextUI.this;
- }
-
- public void setView(View v)
- {
- if (view != null)
- view.setParent(null);
-
- if (v != null)
- v.setParent(null);
-
- view = v;
- }
-
- public Container getContainer()
- {
- return textComponent;
- }
-
- public float getPreferredSpan(int axis)
- {
- if (view != null)
- return view.getPreferredSpan(axis);
-
- return Integer.MAX_VALUE;
- }
-
- public void paint(Graphics g, Shape s)
- {
- if (view != null)
- view.paint(g, s);
- }
-
- public Shape modelToView(int position, Shape a, Position.Bias bias)
- throws BadLocationException
- {
- if (view == null)
- return null;
-
- return ((PlainView) view).modelToView(position, a, bias).getBounds();
- }
- }
-
- class UpdateHandler implements PropertyChangeListener
- {
- public void propertyChange(PropertyChangeEvent event)
- {
- if (event.getPropertyName().equals("document"))
- {
- // Document changed.
- modelChanged();
- }
- }
- }
-
- static EditorKit kit = new DefaultEditorKit();
-
- RootView rootView = new RootView();
- JTextComponent textComponent;
- UpdateHandler updateHandler = new UpdateHandler();
-
- public BasicTextUI()
- {
- }
-
- protected Caret createCaret()
- {
- return new BasicCaret();
- }
-
- protected Highlighter createHighlighter()
- {
- return new BasicHighlighter();
- }
-
- protected final JTextComponent getComponent()
- {
- return textComponent;
- }
-
- public void installUI(final JComponent c)
- {
- super.installUI(c);
- c.setOpaque(true);
-
- textComponent = (JTextComponent) c;
-
- Document doc = textComponent.getDocument();
- if (doc == null)
- {
- doc = getEditorKit(textComponent).createDefaultDocument();
- textComponent.setDocument(doc);
- }
-
- textComponent.addPropertyChangeListener(updateHandler);
- modelChanged();
-
- installDefaults();
- installListeners();
- installKeyboardActions();
- }
-
- protected void installDefaults()
- {
- Caret caret = textComponent.getCaret();
- if (caret == null)
- {
- caret = createCaret();
- textComponent.setCaret(caret);
- }
-
- Highlighter highlighter = textComponent.getHighlighter();
- if (highlighter == null)
- textComponent.setHighlighter(createHighlighter());
-
- String prefix = getPropertyPrefix();
- UIDefaults defaults = UIManager.getLookAndFeelDefaults();
- textComponent.setBackground(defaults.getColor(prefix + ".background"));
- textComponent.setForeground(defaults.getColor(prefix + ".foreground"));
- textComponent.setMargin(defaults.getInsets(prefix + ".margin"));
- textComponent.setBorder(defaults.getBorder(prefix + ".border"));
- textComponent.setFont(defaults.getFont(prefix + ".font"));
-
- caret.setBlinkRate(defaults.getInt(prefix + ".caretBlinkRate"));
- }
-
- private FocusListener focuslistener = new FocusListener() {
- public void focusGained(FocusEvent e)
- {
- textComponent.repaint();
- }
- public void focusLost(FocusEvent e)
- {
- textComponent.repaint();
- }
- };
-
- protected void installListeners()
- {
- textComponent.addFocusListener(focuslistener);
- }
-
- protected String getKeymapName()
- {
- return "BasicTextUI";
- }
-
- protected Keymap createKeymap()
- {
- String prefix = getPropertyPrefix();
- UIDefaults defaults = UIManager.getLookAndFeelDefaults();
- JTextComponent.KeyBinding[] bindings =
- (JTextComponent.KeyBinding[]) defaults.get(prefix + ".keyBindings");
- Keymap km = JTextComponent.addKeymap(getKeymapName(),
- JTextComponent.getKeymap(JTextComponent.DEFAULT_KEYMAP));
- JTextComponent.loadKeymap(km, bindings, textComponent.getActions());
- return km;
- }
-
- protected void installKeyboardActions()
- {
- // load any bindings for the older Keymap interface
- Keymap km = JTextComponent.getKeymap(getKeymapName());
- if (km == null)
- km = createKeymap();
- textComponent.setKeymap(km);
-
- // load any bindings for the newer InputMap / ActionMap interface
- SwingUtilities.replaceUIInputMap(textComponent,
- JComponent.WHEN_FOCUSED,
- getInputMap(JComponent.WHEN_FOCUSED));
- SwingUtilities.replaceUIActionMap(textComponent, getActionMap());
- }
-
- InputMap getInputMap(int condition)
- {
- String prefix = getPropertyPrefix();
- UIDefaults defaults = UIManager.getLookAndFeelDefaults();
- switch (condition)
- {
- case JComponent.WHEN_IN_FOCUSED_WINDOW:
- // FIXME: is this the right string? nobody seems to use it.
- return (InputMap) defaults.get(prefix + ".windowInputMap");
- case JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT:
- return (InputMap) defaults.get(prefix + ".ancestorInputMap");
- default:
- case JComponent.WHEN_FOCUSED:
- return (InputMap) defaults.get(prefix + ".focusInputMap");
- }
- }
-
- ActionMap getActionMap()
- {
- String prefix = getPropertyPrefix();
- UIDefaults defaults = UIManager.getLookAndFeelDefaults();
- ActionMap am = (ActionMap) defaults.get(prefix + ".actionMap");
- if (am == null)
- {
- am = createActionMap();
- defaults.put(prefix + ".actionMap", am);
- }
- return am;
- }
-
- ActionMap createActionMap()
- {
- Action[] actions = textComponent.getActions();
- ActionMap am = new ActionMap();
- for (int i = 0; i < actions.length; ++i)
- {
- String name = (String) actions[i].getValue(Action.NAME);
- if (name != null)
- am.put(name, actions[i]);
- }
- return am;
- }
-
- public void uninstallUI(final JComponent component)
- {
- super.uninstallUI(component);
- rootView.setView(null);
-
- textComponent.removePropertyChangeListener(updateHandler);
-
- uninstallDefaults();
- uninstallListeners();
- uninstallKeyboardActions();
-
- textComponent = null;
- }
-
- protected void uninstallDefaults()
- {
- // Do nothing here.
- }
-
- protected void uninstallListeners()
- {
- textComponent.removeFocusListener(focuslistener);
- }
-
- protected void uninstallKeyboardActions()
- {
- // Do nothing here.
- }
-
- protected abstract String getPropertyPrefix();
-
- public Dimension getPreferredSize(JComponent c)
- {
- View v = getRootView(textComponent);
-
- float w = v.getPreferredSpan(View.X_AXIS);
- float h = v.getPreferredSpan(View.Y_AXIS);
-
- return new Dimension((int) w, (int) h);
- }
-
- public final void paint(Graphics g, JComponent c)
- {
- paintSafely(g);
- }
-
- protected void paintSafely(Graphics g)
- {
- Caret caret = textComponent.getCaret();
- Highlighter highlighter = textComponent.getHighlighter();
-
- if (textComponent.isOpaque())
- paintBackground(g);
-
- if (highlighter != null
- && textComponent.getSelectionStart() != textComponent.getSelectionEnd())
- highlighter.paint(g);
-
- rootView.paint(g, getVisibleEditorRect());
-
- if (caret != null && textComponent.hasFocus())
- caret.paint(g);
- }
-
- protected void paintBackground(Graphics g)
- {
- g.setColor(textComponent.getBackground());
- g.fillRect(0, 0, textComponent.getWidth(), textComponent.getHeight());
- }
-
- public void damageRange(JTextComponent t, int p0, int p1)
- {
- damageRange(t, p0, p1, null, null);
- }
-
- public void damageRange(JTextComponent t, int p0, int p1,
- Position.Bias firstBias, Position.Bias secondBias)
- {
- }
-
- public EditorKit getEditorKit(JTextComponent t)
- {
- return kit;
- }
-
- public int getNextVisualPositionFrom(JTextComponent t, int pos,
- Position.Bias b, int direction,
- Position.Bias[] biasRet)
- throws BadLocationException
- {
- return 0;
- }
-
- public View getRootView(JTextComponent t)
- {
- return rootView;
- }
-
- public Rectangle modelToView(JTextComponent t, int pos)
- throws BadLocationException
- {
- return modelToView(t, pos, Position.Bias.Forward);
- }
-
- public Rectangle modelToView(JTextComponent t, int pos, Position.Bias bias)
- throws BadLocationException
- {
- return rootView.modelToView(pos, getVisibleEditorRect(), bias).getBounds();
- }
-
- public int viewToModel(JTextComponent t, Point pt)
- {
- return viewToModel(t, pt, null);
- }
-
- public int viewToModel(JTextComponent t, Point pt, Position.Bias[] biasReturn)
- {
- return 0;
- }
-
- public View create(Element elem)
- {
- // Subclasses have to implement this to get this functionality.
- return null;
- }
-
- public View create(Element elem, int p0, int p1)
- {
- // Subclasses have to implement this to get this functionality.
- return null;
- }
-
- protected Rectangle getVisibleEditorRect()
- {
- int width = textComponent.getWidth();
- int height = textComponent.getHeight();
-
- if (width <= 0 || height <= 0)
- return null;
-
- Insets insets = textComponent.getInsets();
- return new Rectangle(insets.left, insets.top,
- width - insets.left + insets.right,
- height - insets.top + insets.bottom);
- }
-
- protected final void setView(View view)
- {
- rootView.setView(view);
- view.setParent(rootView);
- }
-
- protected void modelChanged()
- {
- if (textComponent == null || rootView == null)
- return;
- ViewFactory factory = rootView.getViewFactory();
- if (factory == null)
- return;
- Document doc = textComponent.getDocument();
- if (doc == null)
- return;
- Element elem = doc.getDefaultRootElement();
- if (elem == null)
- return;
- setView(factory.create(elem));
- }
-}
OpenPOWER on IntegriCloud