protected void paintBackgroundSafely(final Graphics g) { final JTextComponent c = getComponent(); final int width = c.getWidth(); final int height = c.getHeight(); // a delegate takes precedence if (delegate != null) { delegate.paint(c, g, 0, 0, width, height); return; } final boolean isOpaque = c.isOpaque(); if (!(c.getBorder() instanceof AquaTextFieldBorder)) { // developer must have set a custom border if (!isOpaque && AquaUtils.hasOpaqueBeenExplicitlySet(c)) return; // must fill whole region with background color if opaque g.setColor(c.getBackground()); g.fillRect(0, 0, width, height); return; } // using our own border g.setColor(c.getBackground()); if (isOpaque) { g.fillRect(0, 0, width, height); return; } final Insets margin = c.getMargin(); Insets insets = c.getInsets(); if (insets == null) insets = new Insets(0, 0, 0, 0); if (margin != null) { insets.top -= margin.top; insets.left -= margin.left; insets.bottom -= margin.bottom; insets.right -= margin.right; } // the common case final int shrinkage = AquaTextFieldBorder.getShrinkageFor(c, height); g.fillRect( insets.left - 2, insets.top - shrinkage - 1, width - insets.right - insets.left + 4, height - insets.bottom - insets.top + shrinkage * 2 + 2); }
/** {@inheritDoc} */ public void paint(Graphics g) { if (isVisible() && overwriteMode) { Rectangle r = null; int pos = editor.getCaretPosition(); try { r = editor.modelToView(pos); } catch (BadLocationException e) { } if (r != null && (r.width != 0 || r.height != 0)) { if ((x != r.x) || (y != r.y)) { repaint(); x = r.x; y = r.y; height = r.height; width = editor.getFontMetrics(editor.getFont()).charWidth('W') + 1; } else { g.setColor(editor.getCaretColor()); g.setXORMode(editor.getBackground()); g.fillRect(x, y, width, height); } } } else { super.paint(g); } }
public void txtComponentFocusGained(FocusEvent e) { target = (JTextComponent) e.getSource(); if (!(e.getOppositeComponent() instanceof AbstractButton)) { // Sonst blinkt das die ganze Zeit bei der Eingabe final Timeline timeline1 = new Timeline(target); timeline1.addPropertyToInterpolate("background", target.getBackground(), Color.red); timeline1.setDuration(140); timeline1.playLoop(2, Timeline.RepeatBehavior.REVERSE); // Tools.flash(target, 2); } target.selectAll(); }
private Color backgroundColor() { if (textComponent != null) { return textComponent.getBackground(); } return backgroundColor; }
private boolean updateTextComponent(final boolean search) { JTextComponent oldComponent = search ? mySearchTextComponent : myReplaceTextComponent; Color oldBackground = oldComponent != null ? oldComponent.getBackground() : null; Wrapper wrapper = search ? mySearchFieldWrapper : myReplaceFieldWrapper; boolean multiline = myFindModel.isMultiline(); if (multiline && oldComponent instanceof JTextArea) return false; if (!multiline && oldComponent instanceof JTextField) return false; final JTextComponent textComponent; if (multiline) { textComponent = new JTextArea(); ((JTextArea) textComponent).setColumns(25); ((JTextArea) textComponent).setRows(2); wrapper.setContent( new SearchWrapper(textComponent, new ShowHistoryAction(textComponent, this))); } else { SearchTextField searchTextField = new SearchTextField(true); searchTextField.setOpaque(false); textComponent = searchTextField.getTextEditor(); searchTextField.getTextEditor().setColumns(25); if (UIUtil.isUnderGTKLookAndFeel()) { textComponent.setOpaque(false); } setupHistoryToSearchField( searchTextField, search ? FindSettings.getInstance().getRecentFindStrings() : FindSettings.getInstance().getRecentReplaceStrings()); textComponent.registerKeyboardAction( new ActionListener() { @Override public void actionPerformed(final ActionEvent e) { final String text = textComponent.getText(); myFindModel.setMultiline(true); ApplicationManager.getApplication() .invokeLater( new Runnable() { @Override public void run() { if (search) { mySearchTextComponent.setText(text + "\n"); } else { myReplaceTextComponent.setText(text + "\n"); } } }); } }, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.ALT_DOWN_MASK), JComponent.WHEN_FOCUSED); wrapper.setContent(searchTextField); } if (search) { mySearchTextComponent = textComponent; } else { myReplaceTextComponent = textComponent; } UIUtil.addUndoRedoActions(textComponent); Utils.setSmallerFont(textComponent); textComponent.putClientProperty("AuxEditorComponent", Boolean.TRUE); if (oldBackground != null) { textComponent.setBackground(oldBackground); } textComponent.addFocusListener( new FocusListener() { @Override public void focusGained(final FocusEvent e) { textComponent.repaint(); } @Override public void focusLost(final FocusEvent e) { textComponent.repaint(); } }); new CloseOnESCAction(this, textComponent); return true; }