112 @Override 113 public void insert(final String text, final int pos) { 114 final ScrollableJTextArea pane = getDelegate(); 115 synchronized (getDelegateLock()) { 116 final JTextArea area = pane.getView(); 117 final boolean doScroll = pos >= area.getDocument().getLength() 118 && area.getDocument().getLength() != 0; 119 area.insert(text, pos); 120 revalidate(); 121 if (doScroll) { 122 final JScrollBar vbar = pane.getVerticalScrollBar(); 123 if (vbar != null) { 124 vbar.setValue(vbar.getMaximum() - vbar.getVisibleAmount()); 125 } 126 } 127 } 128 repaintPeer(); 129 } 130 131 @Override 132 public void setText(final String l) { 133 // Please note that we do not want to post an event 134 // if TextArea.setText() replaces an empty text by an empty text, 135 // that is, if component's text remains unchanged. 136 if (!l.isEmpty() || getTextComponent().getDocument().getLength() != 0) { 137 super.setText(l); 138 } 139 } 140 141 @Override 142 public void replaceRange(final String text, final int start, 143 final int end) { 144 synchronized (getDelegateLock()) { 145 // JTextArea.replaceRange() posts two different events. 146 // Since we make no differences between text events, 147 // the document listener has to be disabled while 148 // JTextArea.replaceRange() is called. 149 final Document document = getTextComponent().getDocument(); 150 document.removeDocumentListener(this); 151 getDelegate().getView().replaceRange(text, start, end); 152 revalidate(); 153 postEvent(new TextEvent(getTarget(), TextEvent.TEXT_VALUE_CHANGED)); 154 document.addDocumentListener(this); 155 } 156 repaintPeer(); 157 } 158 159 private void setScrollBarVisibility(final int visibility) { 160 final ScrollableJTextArea pane = getDelegate(); 161 final JTextArea view = pane.getView(); | 112 @Override 113 public void insert(final String text, final int pos) { 114 final ScrollableJTextArea pane = getDelegate(); 115 synchronized (getDelegateLock()) { 116 final JTextArea area = pane.getView(); 117 final boolean doScroll = pos >= area.getDocument().getLength() 118 && area.getDocument().getLength() != 0; 119 area.insert(text, pos); 120 revalidate(); 121 if (doScroll) { 122 final JScrollBar vbar = pane.getVerticalScrollBar(); 123 if (vbar != null) { 124 vbar.setValue(vbar.getMaximum() - vbar.getVisibleAmount()); 125 } 126 } 127 } 128 repaintPeer(); 129 } 130 131 @Override 132 public void replaceRange(final String text, final int start, 133 final int end) { 134 synchronized (getDelegateLock()) { 135 // JTextArea.replaceRange() posts two different events. 136 // Since we make no differences between text events, 137 // the document listener has to be disabled while 138 // JTextArea.replaceRange() is called. 139 final Document document = getTextComponent().getDocument(); 140 document.removeDocumentListener(this); 141 getDelegate().getView().replaceRange(text, start, end); 142 revalidate(); 143 postEvent(new TextEvent(getTarget(), TextEvent.TEXT_VALUE_CHANGED)); 144 document.addDocumentListener(this); 145 } 146 repaintPeer(); 147 } 148 149 private void setScrollBarVisibility(final int visibility) { 150 final ScrollableJTextArea pane = getDelegate(); 151 final JTextArea view = pane.getView(); |