Search in sources :

Example 11 with DefaultCaret

use of javax.swing.text.DefaultCaret in project jsql-injection by ron190.

the class UiUtil method initialize.

public static void initialize(JTextComponent component) {
    component.setCaret(new DefaultCaret() {

        @Override
        public void setSelectionVisible(boolean visible) {
            super.setSelectionVisible(true);
        }
    });
    component.addFocusListener(new FocusListener() {

        @Override
        public void focusLost(FocusEvent e) {
            component.setSelectionColor(UiUtil.COLOR_FOCUS_LOST);
            component.revalidate();
            component.repaint();
        }

        @Override
        public void focusGained(FocusEvent e) {
            component.setSelectionColor(UiUtil.COLOR_FOCUS_GAINED);
            component.revalidate();
            component.repaint();
        }
    });
    component.getActionMap().put(DefaultEditorKit.deletePrevCharAction, new DeletePrevCharAction());
    component.getActionMap().put(DefaultEditorKit.deleteNextCharAction, new DeleteNextCharAction());
}
Also used : DeletePrevCharAction(com.jsql.view.swing.text.action.DeletePrevCharAction) DefaultCaret(javax.swing.text.DefaultCaret) DeleteNextCharAction(com.jsql.view.swing.text.action.DeleteNextCharAction) FocusListener(java.awt.event.FocusListener) FocusEvent(java.awt.event.FocusEvent)

Example 12 with DefaultCaret

use of javax.swing.text.DefaultCaret in project SeqMonk by s-andrews.

the class ProgressRecordDialog method setup.

/**
 * Setup.
 *
 * @param parent the parent
 * @param cancellable the cancellable
 */
private void setup(Component parent, Cancellable cancellable) {
    setSize(600, 400);
    setLocationRelativeTo(parent);
    this.cancellable = cancellable;
    textArea = new JTextArea();
    textArea.setLineWrap(true);
    textArea.setWrapStyleWord(true);
    textArea.setEditable(false);
    DefaultCaret caret = (DefaultCaret) textArea.getCaret();
    caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(new JScrollPane(textArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER), BorderLayout.CENTER);
    if (cancellable != null) {
        JButton cancelButton = new JButton("Cancel");
        cancelButton.addActionListener(this);
        cancelButton.setActionCommand("cancel");
        getContentPane().add(cancelButton, BorderLayout.SOUTH);
    }
    Thread t = new Thread(this);
    t.start();
    setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    setVisible(true);
}
Also used : JScrollPane(javax.swing.JScrollPane) JTextArea(javax.swing.JTextArea) DefaultCaret(javax.swing.text.DefaultCaret) BorderLayout(java.awt.BorderLayout) JButton(javax.swing.JButton)

Example 13 with DefaultCaret

use of javax.swing.text.DefaultCaret in project CodenameOne by codenameone.

the class JavaSEPort method editString.

/**
 * @inheritDoc
 */
public void editString(final Component cmp, final int maxSize, final int constraint, String text, final int keyCode) {
    if (scrollWheeling) {
        return;
    }
    if (System.getProperty("TextCompatMode") != null) {
        editStringLegacy(cmp, maxSize, constraint, text, keyCode);
        return;
    }
    if (editingInProgress != null) {
        final String fText = text;
        editingInProgress.invokeAfter(new Runnable() {

            public void run() {
                CN.callSerially(new Runnable() {

                    public void run() {
                        editString(cmp, maxSize, constraint, fText, keyCode);
                    }
                });
            }
        });
        editingInProgress.endEditing();
        return;
    }
    // a workaround to fix an issue where the previous Text Component wasn't removed properly.
    // java.awt.Component [] cmps = canvas.getComponents();
    // for (int i = 0; i < cmps.length; i++) {
    // java.awt.Component cmp1 = cmps[i];
    // if(cmp1 instanceof JScrollPane || cmp1 instanceof javax.swing.text.JTextComponent){
    // canvas.remove(cmp1);
    // }
    // }
    checkEDT();
    class Repainter {

        JComponent jcmp;

        javax.swing.border.Border origBorder;

        Repainter(JComponent jcmp) {
            this.jcmp = jcmp;
        }

        void repaint(long tm, int x, int y, int width, int height) {
            boolean oldShowEdtWarnings = showEDTWarnings;
            showEDTWarnings = false;
            // cmp.getSelectedStyle().getPadding(Component.TOP);
            int marginTop = 0;
            // cmp.getSelectedStyle().getPadding(Component.LEFT);
            int marginLeft = 0;
            // cmp.getSelectedStyle().getPadding(Component.RIGHT);
            int marginRight = 0;
            // cmp.getSelectedStyle().getPadding(Component.BOTTOM);
            int marginBottom = 0;
            int paddingTop = Math.round(cmp.getSelectedStyle().getPadding(Component.TOP) * zoomLevel);
            int paddingLeft = Math.round(cmp.getSelectedStyle().getPadding(Component.LEFT) * zoomLevel);
            int paddingRight = Math.round(cmp.getSelectedStyle().getPadding(Component.RIGHT) * zoomLevel);
            int paddingBottom = Math.round(cmp.getSelectedStyle().getPadding(Component.BOTTOM) * zoomLevel);
            Rectangle bounds;
            if (getSkin() != null) {
                bounds = new Rectangle((int) ((cmp.getAbsoluteX() + cmp.getScrollX() + getScreenCoordinates().x + canvas.x + marginLeft) * zoomLevel), (int) ((cmp.getAbsoluteY() + cmp.getScrollY() + getScreenCoordinates().y + canvas.y + marginTop) * zoomLevel), (int) ((cmp.getWidth() - marginLeft - marginRight) * zoomLevel), (int) ((cmp.getHeight() - marginTop - marginBottom) * zoomLevel));
            } else {
                bounds = new Rectangle(cmp.getAbsoluteX() + cmp.getScrollX() + marginLeft, cmp.getAbsoluteY() + cmp.getScrollY() + marginTop, cmp.getWidth() - marginRight - marginLeft, cmp.getHeight() - marginTop - marginBottom);
            }
            if (!jcmp.getBounds().equals(bounds)) {
                jcmp.setBounds(bounds);
                if (origBorder == null) {
                    origBorder = jcmp.getBorder();
                }
                // jcmp.setBorder(BorderFactory.createCompoundBorder(
                // origBorder,
                // BorderFactory.createEmptyBorder(paddingTop, paddingLeft, paddingBottom, paddingRight))
                // );
                jcmp.setBorder(BorderFactory.createEmptyBorder(paddingTop, paddingLeft, paddingBottom, paddingRight));
            }
            showEDTWarnings = oldShowEdtWarnings;
            Display.getInstance().callSerially(new Runnable() {

                public void run() {
                    cmp.repaint();
                }
            });
        }
    }
    javax.swing.text.JTextComponent swingT;
    if (((com.codename1.ui.TextArea) cmp).isSingleLineTextArea()) {
        JTextComponent t;
        if ((constraint & TextArea.PASSWORD) == TextArea.PASSWORD) {
            t = new JPasswordField() {

                Repainter repainter = new Repainter(this);

                @Override
                public void repaint(long tm, int x, int y, int width, int height) {
                    if (repainter != null) {
                        repainter.repaint(tm, x, y, width, height);
                    }
                }
            };
        } else {
            t = new JTextField() {

                Repainter repainter = new Repainter(this);

                @Override
                public void repaint(long tm, int x, int y, int width, int height) {
                    if (repainter != null) {
                        repainter.repaint(tm, x, y, width, height);
                    }
                }
            };
        /*
                ((JTextField)t).addActionListener(new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent e) {
                        if (cmp instanceof com.codename1.ui.TextField) {
                            final com.codename1.ui.TextField tf = (com.codename1.ui.TextField)cmp;
                            if (tf.getDoneListener() != null) {
                                Display.getInstance().callSerially(new Runnable() {
                                    public void run() {
                                        if (tf.getDoneListener() != null) {
                                            tf.fireDoneEvent();
                                        }
                                    }
                                });
                            }
                        }
                    }
                    
                });
                */
        }
        swingT = t;
        textCmp = swingT;
    } else {
        // Forward references so that we can access the scroll pane and its
        // repainter from inside the JTextArea.
        final Repainter[] fRepainter = new Repainter[1];
        final JScrollPane[] fPane = new JScrollPane[1];
        final com.codename1.ui.TextArea ta = (com.codename1.ui.TextArea) cmp;
        JTextArea t = new JTextArea() {

            @Override
            public void repaint(long tm, int x, int y, int width, int height) {
                // enough.
                if (fRepainter[0] != null && fPane[0] != null) {
                    Point p = SwingUtilities.convertPoint(this, x, y, fPane[0]);
                    fRepainter[0].repaint(tm, p.x, p.y, width, height);
                }
            }
        };
        t.setWrapStyleWord(true);
        t.setLineWrap(true);
        swingT = t;
        JScrollPane pane = new JScrollPane(swingT) {

            Repainter repainter = new Repainter(this);

            {
                fRepainter[0] = repainter;
            }

            @Override
            public void repaint(long tm, int x, int y, int width, int height) {
                if (repainter != null) {
                    repainter.repaint(tm, x, y, width, height);
                }
            }
        };
        fPane[0] = pane;
        if (ta.isGrowByContent()) {
            pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        }
        pane.setBorder(null);
        pane.setOpaque(false);
        pane.getViewport().setOpaque(false);
        // Without these scrollbars, it seems terribly difficult
        // to work with TextAreas that contain more text than can fit.
        // Commenting these out for better usability - at least on OS X.
        // pane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);
        // pane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        textCmp = pane;
    }
    if (cmp.isRTL()) {
        textCmp.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
    }
    DefaultCaret caret = (DefaultCaret) swingT.getCaret();
    caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
    swingT.setFocusTraversalKeysEnabled(false);
    TextEditUtil.setCurrentEditComponent(cmp);
    final javax.swing.text.JTextComponent txt = swingT;
    txt.addKeyListener(new KeyListener() {

        @Override
        public void keyTyped(KeyEvent e) {
        }

        @Override
        public void keyPressed(KeyEvent e) {
        }

        @Override
        public void keyReleased(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_TAB) {
                if (e.isShiftDown()) {
                    TextEditUtil.editPrevTextArea();
                } else {
                    TextEditUtil.editNextTextArea();
                }
            }
        }
    });
    // swingT.setBorder(null);
    swingT.setOpaque(false);
    swingT.setForeground(new Color(cmp.getUnselectedStyle().getFgColor()));
    swingT.setCaretColor(new Color(cmp.getUnselectedStyle().getFgColor()));
    final javax.swing.text.JTextComponent tf = swingT;
    if (keyCode > 0) {
        text += ((char) keyCode);
        setText(tf, text);
        setCaretPosition(tf, text.length());
        if (cmp instanceof com.codename1.ui.TextField) {
            ((com.codename1.ui.TextField) cmp).setText(getText(tf));
        }
    } else {
        setText(tf, text);
    }
    textCmp.setBorder(null);
    textCmp.setOpaque(false);
    canvas.add(textCmp);
    int marginTop = cmp.getSelectedStyle().getPadding(Component.TOP);
    int marginLeft = cmp.getSelectedStyle().getPadding(Component.LEFT);
    int marginRight = cmp.getSelectedStyle().getPadding(Component.RIGHT);
    int marginBottom = cmp.getSelectedStyle().getPadding(Component.BOTTOM);
    if (getSkin() != null) {
        textCmp.setBounds((int) ((cmp.getAbsoluteX() + cmp.getScrollX() + getScreenCoordinates().x + canvas.x + marginLeft) * zoomLevel), (int) ((cmp.getAbsoluteY() + cmp.getScrollY() + getScreenCoordinates().y + canvas.y + marginTop) * zoomLevel), (int) ((cmp.getWidth() - marginLeft - marginRight) * zoomLevel), (int) ((cmp.getHeight() - marginTop - marginBottom) * zoomLevel));
        // System.out.println("Set bounds to "+textCmp.getBounds());
        java.awt.Font f = font(cmp.getStyle().getFont().getNativeFont());
        tf.setFont(f.deriveFont(f.getSize2D() * zoomLevel));
    } else {
        textCmp.setBounds(cmp.getAbsoluteX() + cmp.getScrollX() + marginLeft, cmp.getAbsoluteY() + cmp.getScrollY() + marginTop, cmp.getWidth() - marginRight - marginLeft, cmp.getHeight() - marginTop - marginBottom);
        // System.out.println("Set bounds to "+textCmp.getBounds());
        tf.setFont(font(cmp.getStyle().getFont().getNativeFont()));
    }
    if (tf instanceof JPasswordField && tf.getFont() != null && tf.getFont().getFontName().contains("Roboto")) {
        java.awt.Font fallback = new java.awt.Font(java.awt.Font.SANS_SERIF, java.awt.Font.PLAIN, tf.getFont().getSize());
        tf.setFont(fallback);
    }
    setCaretPosition(tf, getText(tf).length());
    // Windows Tablet Show Virtual Keyboard
    // REf https://stackoverflow.com/a/25783041/2935174
    final String sysroot = System.getenv("SystemRoot");
    String tabTipExe = "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe";
    if (exposeFilesystem) {
        final boolean useTabTip = "tabtip".equalsIgnoreCase(Display.getInstance().getProperty("javase.win.vkb", "tabtip"));
        if (new File(tabTipExe).exists()) {
            try {
                if (useTabTip) {
                    // System.out.println("Opening TabTip");
                    ProcessBuilder pb = new ProcessBuilder("cmd", "/c", tabTipExe);
                    tabTipProcess = pb.start();
                } else {
                    // System.out.println("Opening OSK");
                    ProcessBuilder pb = new ProcessBuilder(sysroot + "/system32/osk.exe");
                    tabTipProcess = pb.start();
                }
            } catch (Exception e) {
                System.err.println("Failed to open VKB: " + e.getMessage());
            }
            tf.addFocusListener(new FocusListener() {

                @Override
                public void focusLost(FocusEvent arg0) {
                    // System.out.println("Lost focus...");
                    try {
                        if (tabTipProcess != null) {
                            tabTipProcess.destroy();
                        }
                    } catch (Exception ex) {
                    }
                    try {
                        if (useTabTip) {
                            Runtime.getRuntime().exec("cmd /c taskkill /IM TabTip.exe");
                        } else {
                            Runtime.getRuntime().exec("cmd /c taskkill /IM osk.exe");
                        }
                    } catch (IOException e) {
                        System.err.println("Problem closing VKB: " + e.getMessage());
                    }
                }

                @Override
                public void focusGained(FocusEvent arg0) {
                }
            });
        }
    }
    tf.requestFocus();
    tf.setSelectionStart(0);
    tf.setSelectionEnd(0);
    class Listener implements ActionListener, FocusListener, KeyListener, TextListener, Runnable, DocumentListener, EditingInProgress {

        private final JTextComponent textCmp;

        private final JComponent swingComponentToRemove;

        private boolean performed;

        private boolean fireDone;

        Listener(JTextComponent textCmp, JComponent swingComponentToRemove) {
            this.textCmp = textCmp;
            this.swingComponentToRemove = swingComponentToRemove;
            if (textCmp instanceof JTextArea) {
                if (((com.codename1.ui.TextArea) cmp).getDoneListener() != null) {
                    InputMap input = textCmp.getInputMap();
                    KeyStroke enter = KeyStroke.getKeyStroke("ENTER");
                    KeyStroke shiftEnter = KeyStroke.getKeyStroke("shift ENTER");
                    // input.get(enter)) = "insert-break"
                    input.put(shiftEnter, "insert-break");
                    input.put(enter, "text-submit");
                    ActionMap actions = textCmp.getActionMap();
                    actions.put("text-submit", new AbstractAction() {

                        @Override
                        public void actionPerformed(ActionEvent e) {
                            fireDone = true;
                            Listener.this.actionPerformed(null);
                        }
                    });
                }
            }
        }

        public void run() {
            while (swingComponentToRemove.getParent() != null) {
                synchronized (this) {
                    try {
                        wait(20);
                    } catch (InterruptedException ex) {
                    }
                }
            }
            EventQueue.invokeLater(new Runnable() {

                public void run() {
                    actionPerformed(null);
                }
            });
        }

        public void actionPerformed(ActionEvent e) {
            if (performed) {
                return;
            }
            performed = true;
            String txt = getText(tf);
            if (testRecorder != null) {
                testRecorder.editTextFieldCompleted(cmp, txt);
            }
            Display.getInstance().onEditingComplete(cmp, txt);
            if (e != null && cmp instanceof com.codename1.ui.TextField || fireDone) {
                final com.codename1.ui.TextArea cn1Tf = (com.codename1.ui.TextArea) cmp;
                if (cmp != null && cn1Tf.getDoneListener() != null) {
                    cn1Tf.fireDoneEvent();
                }
            }
            if (tf instanceof JTextField) {
                ((JTextField) tf).removeActionListener(this);
            }
            ((JTextComponent) tf).getDocument().removeDocumentListener(this);
            tf.removeFocusListener(this);
            canvas.remove(swingComponentToRemove);
            editingInProgress = null;
            currentlyEditingField = null;
            synchronized (this) {
                notify();
            }
            canvas.repaint();
            if (invokeAfter != null) {
                for (Runnable r : invokeAfter) {
                    r.run();
                }
                invokeAfter = null;
            }
        }

        public void focusGained(FocusEvent e) {
            setCaretPosition(tf, getText(tf).length());
        }

        public void focusLost(FocusEvent e) {
            actionPerformed(null);
        }

        public void keyTyped(KeyEvent e) {
            String t = getText(tf);
            if (t.length() >= ((TextArea) cmp).getMaxSize()) {
                e.consume();
            }
        }

        public void keyPressed(KeyEvent e) {
        }

        public void keyReleased(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                if (tf instanceof JTextField) {
                    actionPerformed(null);
                } else {
                    if (getCaretPosition(tf) >= getText(tf).length() - 1) {
                        actionPerformed(null);
                    }
                }
                return;
            }
            if (e.getKeyCode() == KeyEvent.VK_UP) {
                if (tf instanceof JTextField) {
                    actionPerformed(null);
                } else {
                    if (getCaretPosition(tf) <= 2) {
                        actionPerformed(null);
                    }
                }
                return;
            }
        }

        public void textValueChanged(TextEvent e) {
            // if (cmp instanceof com.codename1.ui.TextField) {
            updateText();
        // }
        }

        private void updateText() {
            Display.getInstance().callSerially(new Runnable() {

                public void run() {
                    // if(cmp instanceof com.codename1.ui.TextField) {
                    ((com.codename1.ui.TextArea) cmp).setText(getText(tf));
                // }
                }
            });
        }

        public void insertUpdate(DocumentEvent e) {
            updateText();
        }

        public void removeUpdate(DocumentEvent e) {
            updateText();
        }

        public void changedUpdate(DocumentEvent e) {
            updateText();
        }

        private ArrayList<Runnable> invokeAfter;

        @Override
        public void invokeAfter(Runnable r) {
            if (invokeAfter == null) {
                invokeAfter = new ArrayList<Runnable>();
            }
            invokeAfter.add(r);
        }

        @Override
        public void endEditing() {
            if (!EventQueue.isDispatchThread()) {
                EventQueue.invokeLater(new Runnable() {

                    public void run() {
                        endEditing();
                    }
                });
                return;
            }
            actionPerformed(null);
        }
    }
    ;
    final Listener l = new Listener(tf, textCmp);
    if (tf instanceof JTextField) {
        ((JTextField) tf).addActionListener(l);
    }
    ((JTextComponent) tf).getDocument().addDocumentListener(l);
    tf.addKeyListener(l);
    tf.addFocusListener(l);
    if (simulateAndroidKeyboard) {
        java.util.Timer t = new java.util.Timer();
        TimerTask tt = new TimerTask() {

            @Override
            public void run() {
                if (!Display.getInstance().isEdt()) {
                    Display.getInstance().callSerially(this);
                    return;
                }
                if (tf.getParent() != null) {
                    final int height = getScreenCoordinates().height;
                    JavaSEPort.this.sizeChanged(getScreenCoordinates().width, height / 2);
                    new UITimer(new Runnable() {

                        public void run() {
                            if (tf.getParent() != null) {
                                new UITimer(this).schedule(100, false, Display.getInstance().getCurrent());
                            } else {
                                JavaSEPort.this.sizeChanged(getScreenCoordinates().width, height);
                            }
                        }
                    }).schedule(100, false, Display.getInstance().getCurrent());
                }
            }
        };
        t.schedule(tt, 300);
    }
    editingInProgress = l;
    currentlyEditingField = cmp;
    new Thread(l).start();
}
Also used : DocumentListener(javax.swing.event.DocumentListener) TextArea(com.codename1.ui.TextArea) ActionEvent(java.awt.event.ActionEvent) Rectangle(java.awt.Rectangle) JTextComponent(javax.swing.text.JTextComponent) AttributedString(java.text.AttributedString) FocusEvent(java.awt.event.FocusEvent) DefaultCaret(javax.swing.text.DefaultCaret) FontRenderContext(java.awt.font.FontRenderContext) Color(java.awt.Color) TextListener(java.awt.event.TextListener) DocumentEvent(javax.swing.event.DocumentEvent) ActionListener(java.awt.event.ActionListener) java.util(java.util) EmptyBorder(javax.swing.border.EmptyBorder) TextArea(com.codename1.ui.TextArea) FocusListener(java.awt.event.FocusListener) FocusListener(java.awt.event.FocusListener) TextListener(java.awt.event.TextListener) LineListener(javax.sound.sampled.LineListener) KeyListener(java.awt.event.KeyListener) ActionListener(java.awt.event.ActionListener) AdjustmentListener(java.awt.event.AdjustmentListener) MouseMotionListener(java.awt.event.MouseMotionListener) MouseWheelListener(java.awt.event.MouseWheelListener) DocumentListener(javax.swing.event.DocumentListener) ItemListener(java.awt.event.ItemListener) WindowListener(java.awt.event.WindowListener) MouseListener(java.awt.event.MouseListener) MenuListener(javax.swing.event.MenuListener) HierarchyBoundsListener(java.awt.event.HierarchyBoundsListener) UITimer(com.codename1.ui.util.UITimer) Font(com.codename1.ui.Font) KeyEvent(java.awt.event.KeyEvent) TextEvent(java.awt.event.TextEvent) Point(java.awt.Point) JTextComponent(javax.swing.text.JTextComponent) Point(java.awt.Point) InvocationTargetException(java.lang.reflect.InvocationTargetException) SQLException(java.sql.SQLException) ParseException(java.text.ParseException) EOFException(java.io.EOFException) FontFormatException(java.awt.FontFormatException) LineUnavailableException(javax.sound.sampled.LineUnavailableException) javax.swing(javax.swing) UITimer(com.codename1.ui.util.UITimer) KeyListener(java.awt.event.KeyListener) java.awt(java.awt)

Example 14 with DefaultCaret

use of javax.swing.text.DefaultCaret in project chatty by chatty.

the class ModerationLog method createLogArea.

private static JTextArea createLogArea() {
    // Caret to prevent scrolling
    DefaultCaret caret = new DefaultCaret();
    caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
    JTextArea text = new JTextArea();
    text.setLineWrap(true);
    text.setWrapStyleWord(true);
    text.setEditable(false);
    text.setCaret(caret);
    text.setBorder(BorderFactory.createEmptyBorder(1, 2, 3, 2));
    return text;
}
Also used : JTextArea(javax.swing.JTextArea) DefaultCaret(javax.swing.text.DefaultCaret)

Example 15 with DefaultCaret

use of javax.swing.text.DefaultCaret in project OpenTCS-4 by touchmii.

the class ControlCenterInfoHandler method publish.

/**
 * Displays the notification.
 *
 * @param notification The notification
 */
private void publish(UserNotification notification) {
    DefaultCaret caret = (DefaultCaret) textArea.getCaret();
    if (autoScroll) {
        caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
        textArea.setCaretPosition(textArea.getDocument().getLength());
    } else {
        caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
    }
    textArea.append(format(notification));
    textArea.append("\n");
    checkLength();
}
Also used : DefaultCaret(javax.swing.text.DefaultCaret)

Aggregations

DefaultCaret (javax.swing.text.DefaultCaret)37 JScrollPane (javax.swing.JScrollPane)12 JTextArea (javax.swing.JTextArea)10 Dimension (java.awt.Dimension)6 JLabel (javax.swing.JLabel)5 JDialog (javax.swing.JDialog)4 JFrame (javax.swing.JFrame)4 Caret (javax.swing.text.Caret)4 LocationFullException (megamek.common.LocationFullException)4 BorderLayout (java.awt.BorderLayout)3 ActionEvent (java.awt.event.ActionEvent)3 ActionListener (java.awt.event.ActionListener)3 FocusEvent (java.awt.event.FocusEvent)3 FocusListener (java.awt.event.FocusListener)3 JButton (javax.swing.JButton)3 JPanel (javax.swing.JPanel)3 HTMLEditorKit (javax.swing.text.html.HTMLEditorKit)3 Color (java.awt.Color)2 Point (java.awt.Point)2 JEditorPane (javax.swing.JEditorPane)2