Inheritance diagram for CanvasViewer::
Public Methods | |
CanvasViewer () | |
Constructor. More... | |
int | getViewerID () |
Get the ID of this viewer. More... | |
int | getMode () |
Get the viewer mode (see class ViewerMode). More... | |
int | getSubMode () |
Get the viewer sub-mode (see class ViewerMode). More... | |
void | setMode (int mode, int subMode) |
Set the viewer mode (see class ViewerMode). More... | |
boolean | isEnabledMode (int mode) |
Check whether the given viewer mode (see class ViewerMode) is enabled. More... | |
void | setEnableMode (int mode, boolean b) |
Set whether the given viewer mode (see class ViewerMode) is enabled. More... | |
Color | getDefaultDrawColor () |
Get the default drawing color of this viewer. More... | |
void | setDefaultDrawColor (Color c) |
Set the default drawing color of this viewer. More... | |
Color | getBackgroundColor () |
Get the background color of this viewer. More... | |
void | setBackgroundColor (Color c) |
Set the background color of this viewer. More... | |
void | addViewerInspectionListener (ViewerInspectionListener l) |
Add a viewer inspection listener. More... | |
void | removeViewerInspectionListener (ViewerInspectionListener l) |
Remove a viewer inspection listener. More... | |
void | addViewerEditListener (ViewerEditListener l) |
Add a viewer edit listener. More... | |
void | removeViewerEditListener (ViewerEditListener l) |
Remove a viewer edit listener. More... | |
void | doRefresh () |
Repaint the viewer by repainting its canvas. More... | |
void | doClear () |
Clear the canvas. More... | |
void | doPan (double relX, double relY) |
Pan to the given position, coordinates between 0 and 1. More... | |
void | doZoom (double zoomVal) |
Zoom to the given factor. More... | |
double | getZoomFactor () |
Get zoom factor. More... | |
BufferedImage | toImage () |
Render the canvas of the viewer in an image. More... | |
BufferedImage | toImage (int width, int height) |
Render the canvas of the viewer in an image. More... | |
int | addObject (CanvasObject obj) |
Add a CanvasObject to the viewer. More... | |
CanvasObject | getObject (int objID) |
Get the CanvasObject with the given ID from the editor. More... | |
CanvasObject | getObjectCopy (int objID, boolean ics) |
Get a copy of the CanvasObject with the given ID from the editor. More... | |
CanvasObject | getObject (String objName) |
Get the CanvasObject with the given name from the visualizer. More... | |
void | removeObject (int objID) |
Remove given object from the editor. More... | |
void | removeObject (String objName) |
Remove given object from the visualizer. More... | |
void | removeAllObjects () |
Remove all objects. More... | |
void | canvasEntered (Object canvas, double x, double y) |
Implementation of CanvasInspectionUser. More... | |
void | canvasExited (Object canvas) |
Implementation of CanvasInspectionUser. More... | |
void | canvasSelected (Object canvas, double x, double y) |
Implementation of CanvasInspectionUser. More... | |
void | objectEntered (Object canvas, CanvasObject cObj, int objID, double x, double y) |
Implementation of CanvasInspectionUser. More... | |
void | objectProbed (Object canvas, CanvasObject cObj, int objID, double x, double y) |
Implementation of CanvasInspectionUser. More... | |
void | objectSelected (Object canvas, CanvasObject cObj, int objID, double x, double y) |
Implementation of CanvasInspectionUser. More... | |
void | objectCreated (Object canvas, CanvasObject cObj, int objID) |
Implementation of CanvasEditUser. More... | |
void | objectDeleted (Object canvas, CanvasObject cObj, int objID) |
Implementation of CanvasEditUser. More... | |
void | objectMoved (Object canvas, CanvasObject cObj, int objID) |
Implementation of CanvasEditUser. More... | |
void | objectResized (Object canvas, CanvasObject cObj, int objID) |
Implementation of CanvasEditUser. More... | |
void | objectReshaped (Object canvas, CanvasObject cObj, int objID, int point) |
Implementation of CanvasEditUser. More... | |
void | objectChangedVisually (Object canvas, CanvasObject cObj, int objID, String prop) |
Implementation of CanvasEditUser. More... | |
Static Public Attributes | |
final Color | STD_BCOLOR = IcsCanvas.STD_BCOLOR |
The standard background color. More... | |
final Color | STD_DCOLOR = IcsCanvas.STD_DCOLOR |
The standard drawing color. More... | |
final int | SCROLL_NEVER = 0 |
Never use scrollbars. More... | |
final int | SCROLL_ALWAYS = 1 |
Always use scrollbars. More... | |
final int | SCROLL_AS_NEEDED = 2 |
Use scrollbars when needed. More... | |
Protected Methods | |
void | initScrollPane (int scrollers) |
Will initialize the ScrollPane with a single canvas (\_editor) or a LayeredCanvasPane with \_editor, etc. More... | |
Protected Attributes | |
int | _viewerID = 0 |
JScrollPane | _scrollPane = null |
boolean | _singleCanvas = false |
ActiveCanvas | _editor = null |
VisCanvas | _visualizer = null |
Vector | _inspListeners = new Vector() |
Vector | _editListeners = new Vector() |
The basic CanvasViewer contains two IcsCanvas's put on top of eachother. The upper canvas is called the editor and allows the user to "scribble" in the viewer. The lower canvas is called the visualizer and allows for visualization of C++ objects that are known to the mediator, i.e. they are StringAddressable. These object are not editable. Each canvas puts instances of CanvasFigure on top of instances of CanvasImage as they would otherwise not be visisble. This results in the following layered structure (with the highest number on top): 4) CanvasFigure (s) : getInputSource() == INP\_USER 3) CanvasImage (s) : getInputSource() == INP\_USER 2) CanvasFigure (s) : getInputSource() == INP\_SASYSTEM 1) CanvasImage (s) : getInputSource() == INP\_SASYSTEM
|
00067 { 00068 _viewerID = _curViewerID; 00069 _curViewerID++; 00070 } |
|
Get the ID of this viewer.
00076 { 00077 return _viewerID; 00078 } |
|
Get the viewer mode (see class ViewerMode). Not all viewers actually respond to this.
00085 { 00086 if (_editor != null) 00087 return _editor.getMode(); 00088 if (_visualizer != null) 00089 return ViewerMode.SELECT; 00090 return -1; 00091 } |
|
Get the viewer sub-mode (see class ViewerMode). Not all viewers actually respond to this.
00098 { 00099 if (_editor != null) 00100 return _editor.getSubMode(); 00101 // if (_visualizer != null) 00102 // return _visualizer.getSubMode(); 00103 return -1; 00104 } |
|
Set the viewer mode (see class ViewerMode). Not all viewers actually respond to this. Reimplemented in ScribbleViewer.
|
|
Check whether the given viewer mode (see class ViewerMode) is enabled. Not all viewers actually respond to this. Reimplemented in ScribbleViewer.
00123 { 00124 return true; 00125 } |
|
Set whether the given viewer mode (see class ViewerMode) is enabled. Not all viewers actually respond to this. Reimplemented in ScribbleViewer.
00132 { 00133 } |
|
Get the default drawing color of this viewer.
00139 { 00140 if (_editor != null) 00141 return _editor.getDefaultDrawColor(); 00142 if (_visualizer != null) 00143 return _visualizer.getDefaultDrawColor(); 00144 return null; 00145 } |
|
Set the default drawing color of this viewer.
00151 { 00152 if (_editor != null) 00153 _editor.setDefaultDrawColor(c); 00154 if (_visualizer != null) 00155 _visualizer.setDefaultDrawColor(c); 00156 } |
|
Get the background color of this viewer.
00162 { 00163 if (_editor != null) 00164 return _editor.getBackgroundColor(); 00165 if (_visualizer != null) 00166 return _visualizer.getBackgroundColor(); 00167 return null; 00168 } |
|
Set the background color of this viewer. Will also repaint the viewer.
00175 { 00176 if (_editor != null) 00177 _editor.setBackgroundColor(c); 00178 if (_visualizer != null) 00179 _visualizer.setBackgroundColor(c); 00180 repaint(); 00181 } |
|
Add a viewer inspection listener.
00187 { 00188 _inspListeners.addElement(l); 00189 } |
|
Remove a viewer inspection listener.
00195 { 00196 _inspListeners.removeElement(l); 00197 } |
|
Add a viewer edit listener.
00203 { 00204 _editListeners.addElement(l); 00205 } |
|
Remove a viewer edit listener.
00211 { 00212 _editListeners.removeElement(l); 00213 } |
|
Repaint the viewer by repainting its canvas.
00219 { 00220 if (_editor != null) 00221 _editor.repaint(); 00222 if (_visualizer != null) 00223 _visualizer.repaint(); 00224 } |
|
Clear the canvas. Sets the zoom factor to 1.0 and removes all objects from the canvas, Clearing will fit the canvas to the size of the viewport. Reimplemented in ScribbleViewer.
00232 { 00233 if (IcsCanvas.DEBUG_LAYOUT) 00234 OutputStreamArea.println("CanvasViewer.doClear"); 00235 if (_editor != null) { 00236 _editor.zoom(IcsCanvas.STD_ZOOM); 00237 _editor.clear(); 00238 } 00239 if (_visualizer != null) { 00240 _visualizer.zoom(IcsCanvas.STD_ZOOM); 00241 _visualizer.clear(); 00242 } 00243 } |
|
Pan to the given position, coordinates between 0 and 1.
00249 { 00250 if (IcsCanvas.DEBUG_LAYOUT) 00251 OutputStreamArea.println("CanvasViewer.doPan"); 00252 int halfScrollerWidth = _scrollPane.getViewport().getExtentSize().width / 2; 00253 int halfScrollerHeight = _scrollPane.getViewport().getExtentSize().height / 2; 00254 int canvWidth = 0; 00255 int canvHeight = 0; 00256 if (_editor != null) { 00257 canvWidth = _editor.getDimensionCCS().width; 00258 canvHeight = _editor.getDimensionCCS().height; 00259 } 00260 if (_visualizer != null) { 00261 canvWidth = _visualizer.getDimensionCCS().width; 00262 canvHeight = _visualizer.getDimensionCCS().height; 00263 } 00264 int x = (int)(relX * canvWidth - halfScrollerWidth); 00265 int y = (int)(relY * canvHeight - halfScrollerHeight); 00266 _scrollPane.getViewport().setViewPosition(new Point(x, y)); 00267 repaint(); 00268 } |
|
Zoom to the given factor.
Reimplemented in ScribbleViewer.
00274 { 00275 if (IcsCanvas.DEBUG_LAYOUT) 00276 OutputStreamArea.println("CanvasViewer.doZoom"); 00277 // Calculate relative viewport coordinates. 00278 00279 double curW = 0; 00280 double curH = 0; 00281 if (_editor != null) { 00282 curW = (double) (_editor.getDimensionCCS().width); 00283 curH = (double) (_editor.getDimensionCCS().height); 00284 } 00285 if (_visualizer != null) { 00286 curW = (double) (_visualizer.getDimensionCCS().width); 00287 curH = (double) (_visualizer.getDimensionCCS().height); 00288 } 00289 Point pos = _scrollPane.getViewport().getViewPosition(); 00290 int halfScrollerWidth = _scrollPane.getViewport().getExtentSize().width / 2; 00291 int halfScrollerHeight = _scrollPane.getViewport().getExtentSize().height / 2; 00292 double relX = (pos.x + halfScrollerWidth) / curW ; 00293 double relY = (pos.y + halfScrollerHeight) / curH; 00294 00295 if (_editor != null) 00296 _editor.zoom(zoomVal); 00297 if (_visualizer != null) 00298 _visualizer.zoom(zoomVal); 00299 00300 // Pan according to relative coordinates in order to keep 00301 // previously visible part within viewport. 00302 00303 if (zoomVal <= IcsCanvas.STD_ZOOM) { 00304 // doPan(0, 0); 00305 _scrollPane.getViewport().setViewPosition(new Point(0, 0)); 00306 repaint(); // doPan does not repaint if already at (0,0) 00307 } else { 00308 doPan(relX, relY); 00309 // doPan((int)(relX * canvas.getDimensionCCS().width - halfScrollerWidth), 00310 // (int)(relY * canvas.getDimensionCCS().height - halfScrollerHeight)); 00311 } 00312 } |
|
Get zoom factor.
00318 { 00319 if (_editor != null) 00320 return _editor.getZoomFactor(); 00321 if (_visualizer != null) 00322 return _visualizer.getZoomFactor(); 00323 return IcsCanvas.STD_ZOOM; 00324 } |
|
Render the canvas of the viewer in an image. The size of the image will match the extent of the ICS. The rendering is done at the current zoom.
00332 { 00333 int icsWidth = 0; 00334 int icsHeight = 0; 00335 if (_editor != null) { 00336 icsWidth = _editor.getDimensionICS().width; 00337 icsHeight = _editor.getDimensionICS().height; 00338 } 00339 if (_visualizer != null) { 00340 icsWidth = _visualizer.getDimensionICS().width; 00341 icsHeight = _visualizer.getDimensionICS().height; 00342 } 00343 return toImage(icsWidth, icsHeight); 00344 } |
|
Render the canvas of the viewer in an image. The size of the image will be width x height. The rendering is done at the current zoom.
00352 { 00353 int ccsWidth = 0; 00354 int ccsHeight = 0; 00355 if (_editor != null) { 00356 ccsWidth = _editor.getDimensionCCS().width; 00357 ccsHeight = _editor.getDimensionCCS().height; 00358 } 00359 if (_visualizer != null) { 00360 ccsWidth = _visualizer.getDimensionCCS().width; 00361 ccsHeight = _visualizer.getDimensionCCS().height; 00362 } 00363 00364 BufferedImage bufImage = new BufferedImage(width, height, 00365 BufferedImage.TYPE_INT_ARGB); 00366 Graphics2D bufGraphics = bufImage.createGraphics(); 00367 double sx = (double) width / ccsWidth; 00368 double sy = (double) height / ccsHeight; 00369 bufGraphics.scale(sx, sy); 00370 00371 if (_visualizer != null) 00372 _visualizer.doPaintComponent(bufGraphics); 00373 if (_editor != null) 00374 _editor.doPaintComponent(bufGraphics); 00375 00376 return bufImage; 00377 } |
|
Add a CanvasObject to the viewer. If the input source of the object equals INP\_SASYSTEM the object will be put on the visualizer. Otherwise, it will be put on the editor. Returns the id of the object. The id is the preferred way to access objects in an editor as direct references to objects may become invalid due to internal activities of the editor. As the visualizer does not change the CanvasObject it is save to keep references to objects in a visualizer. Reimplemented in Histogram3dViewer, and ThumbnailViewer.
00390 { 00391 if (IcsCanvas.DEBUG_LAYOUT) 00392 OutputStreamArea.println("CanvasViewer.addObject"); 00393 if (obj.getInputSource() == CanvasObject.INP_SASYSTEM) { 00394 if (_visualizer != null) 00395 return _visualizer.addObject(obj); 00396 } else { 00397 if (_editor != null) 00398 return _editor.addObject(obj); 00399 } 00400 return -1; 00401 } |
|
Get the CanvasObject with the given ID from the editor.
|
|
Get a copy of the CanvasObject with the given ID from the editor.
00417 { 00418 if (_editor != null) 00419 return _editor.getObjectCopy(objID, ics); 00420 return null; 00421 } |
|
Get the CanvasObject with the given name from the visualizer.
00427 { 00428 if (_visualizer != null) 00429 return _visualizer.getObject(objName); 00430 return null; 00431 } |
|
Remove given object from the editor.
00437 { 00438 if (_editor != null) 00439 _editor.removeObject(objID); 00440 } |
|
Remove given object from the visualizer.
00446 { 00447 if (_visualizer != null) 00448 _visualizer.removeObject(objName); 00449 } |
|
Remove all objects.
00455 { 00456 if (_editor != null) 00457 _editor.removeAllObjects(); 00458 if (_visualizer != null) 00459 _visualizer.removeAllObjects(); 00460 } |
|
Implementation of CanvasInspectionUser.
Reimplemented from CanvasInspectionUser.
00469 { 00470 ViewerEvent ve = new ViewerEvent(canvas, this, null, -1, x, y); 00471 ve.setCanvasType(getCanvasType(canvas)); 00472 Vector list; 00473 synchronized (this) { 00474 list = (Vector) _inspListeners.clone(); 00475 } 00476 for (int i=0; i < list.size(); i++) 00477 ((ViewerInspectionListener) list.elementAt(i)).viewerEntered(ve); 00478 } |
|
Implementation of CanvasInspectionUser.
Reimplemented from CanvasInspectionUser.
00484 { 00485 ViewerEvent ve = new ViewerEvent(canvas, this, null, -1, -1., -1.); 00486 ve.setCanvasType(getCanvasType(canvas)); 00487 Vector list; 00488 synchronized (this) { 00489 list = (Vector) _inspListeners.clone(); 00490 } 00491 for (int i=0; i < list.size(); i++) 00492 ((ViewerInspectionListener) list.elementAt(i)).viewerExited(ve); 00493 } |
|
Implementation of CanvasInspectionUser.
Reimplemented from CanvasInspectionUser.
00499 { 00500 ViewerEvent ve = new ViewerEvent(canvas, this, null, -1, x, y); 00501 ve.setCanvasType(getCanvasType(canvas)); 00502 Vector list; 00503 synchronized (this) { 00504 list = (Vector) _inspListeners.clone(); 00505 } 00506 for (int i=0; i < list.size(); i++) 00507 ((ViewerInspectionListener) list.elementAt(i)).viewerSelected(ve); 00508 } |
|
Implementation of CanvasInspectionUser.
Reimplemented from CanvasInspectionUser.
00515 { 00516 ViewerEvent ve = new ViewerEvent(canvas, this, cObj, objID, x, y); 00517 ve.setCanvasType(getCanvasType(canvas)); 00518 Vector list; 00519 synchronized (this) { 00520 list = (Vector) _inspListeners.clone(); 00521 } 00522 for (int i=0; i < list.size(); i++) 00523 ((ViewerInspectionListener) list.elementAt(i)).objectEntered(ve); 00524 } |
|
Implementation of CanvasInspectionUser.
Reimplemented from CanvasInspectionUser.
00531 { 00532 ViewerEvent ve = new ViewerEvent(canvas, this, cObj, objID, x, y); 00533 ve.setCanvasType(getCanvasType(canvas)); 00534 Vector list; 00535 synchronized (this) { 00536 list = (Vector) _inspListeners.clone(); 00537 } 00538 for (int i=0; i < list.size(); i++) 00539 ((ViewerInspectionListener) list.elementAt(i)).objectProbed(ve); 00540 } |
|
Implementation of CanvasInspectionUser.
Reimplemented from CanvasInspectionUser.
00547 { 00548 ViewerEvent ve = new ViewerEvent(canvas, this, cObj, objID, x, y); 00549 ve.setCanvasType(getCanvasType(canvas)); 00550 Vector list; 00551 synchronized (this) { 00552 list = (Vector) _inspListeners.clone(); 00553 } 00554 for (int i=0; i < list.size(); i++) 00555 ((ViewerInspectionListener) list.elementAt(i)).objectSelected(ve); 00556 } |
|
Implementation of CanvasEditUser.
Reimplemented from CanvasEditUser.
00565 { 00566 ViewerEvent ve = new ViewerEvent(canvas, this, cObj, objID, -1, -1); 00567 ve.setCanvasType(getCanvasType(canvas)); 00568 Vector list; 00569 synchronized (this) { 00570 list = (Vector)_editListeners.clone(); 00571 } 00572 for (int i=0; i < list.size(); i++) 00573 ((ViewerEditListener)list.elementAt(i)).objectCreated(ve); 00574 } |
|
Implementation of CanvasEditUser.
Reimplemented from CanvasEditUser.
00580 { 00581 ViewerEvent ve = new ViewerEvent(canvas, this, cObj, objID, -1, -1); 00582 ve.setCanvasType(getCanvasType(canvas)); 00583 Vector list; 00584 synchronized (this) { 00585 list = (Vector)_editListeners.clone(); 00586 } 00587 for (int i=0; i < list.size(); i++) 00588 ((ViewerEditListener)list.elementAt(i)).objectDeleted(ve); 00589 } |
|
Implementation of CanvasEditUser.
Reimplemented from CanvasEditUser.
00595 { 00596 ViewerEvent ve = new ViewerEvent(canvas, this, cObj, objID, -1, -1); 00597 ve.setCanvasType(getCanvasType(canvas)); 00598 Vector list; 00599 synchronized (this) { 00600 list = (Vector)_editListeners.clone(); 00601 } 00602 for (int i=0; i < list.size(); i++) 00603 ((ViewerEditListener)list.elementAt(i)).objectMoved(ve); 00604 } |
|
Implementation of CanvasEditUser.
Reimplemented from CanvasEditUser.
00610 { 00611 ViewerEvent ve = new ViewerEvent(canvas, this, cObj, objID, -1, -1); 00612 ve.setCanvasType(getCanvasType(canvas)); 00613 Vector list; 00614 synchronized (this) { 00615 list = (Vector)_editListeners.clone(); 00616 } 00617 for (int i=0; i < list.size(); i++) 00618 ((ViewerEditListener)list.elementAt(i)).objectResized(ve); 00619 } |
|
Implementation of CanvasEditUser.
Reimplemented from CanvasEditUser.
00626 { 00627 ViewerEvent ve = new ViewerEvent(canvas, this, cObj, objID, -1, -1); 00628 ve.setCanvasType(getCanvasType(canvas)); 00629 ve.setPoint(point); 00630 Vector list; 00631 synchronized (this) { 00632 list = (Vector)_editListeners.clone(); 00633 } 00634 for (int i=0; i < list.size(); i++) 00635 ((ViewerEditListener)list.elementAt(i)).objectReshaped(ve); 00636 } |
|
Implementation of CanvasEditUser.
Reimplemented from CanvasEditUser.
00643 { 00644 ViewerEvent ve = new ViewerEvent(canvas, this, cObj, objID, -1, -1); 00645 ve.setCanvasType(getCanvasType(canvas)); 00646 ve.setProp(prop); 00647 Vector list; 00648 synchronized (this) { 00649 list = (Vector)_editListeners.clone(); 00650 } 00651 for (int i=0; i < list.size(); i++) 00652 ((ViewerEditListener)list.elementAt(i)).objectChangedVisually(ve); 00653 } |
|
Will initialize the ScrollPane with a single canvas (\_editor) or a LayeredCanvasPane with \_editor, etc.
00667 { 00668 switch (scrollers) { 00669 case SCROLL_NEVER : 00670 /* Generates an exception ??? DK 00671 _scrollPane = new JScrollPane( 00672 JScrollPane.HORIZONTAL_SCROLLBAR_NEVER, 00673 JScrollPane.VERTICAL_SCROLLBAR_NEVER); 00674 */ 00675 _scrollPane = new JScrollPane(); 00676 _scrollPane.setHorizontalScrollBarPolicy( 00677 JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 00678 _scrollPane.setVerticalScrollBarPolicy( 00679 JScrollPane.VERTICAL_SCROLLBAR_NEVER); 00680 break; 00681 case SCROLL_ALWAYS : 00682 /* Generates an exception ??? DK 00683 _scrollPane = new JScrollPane( 00684 JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS, 00685 JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 00686 */ 00687 _scrollPane = new JScrollPane(); 00688 _scrollPane.setHorizontalScrollBarPolicy( 00689 JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); 00690 _scrollPane.setVerticalScrollBarPolicy( 00691 JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 00692 break; 00693 default : 00694 _scrollPane = new JScrollPane( 00695 JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED, 00696 JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 00697 break; 00698 } 00699 00700 _scrollPane.getHorizontalScrollBar().setUnitIncrement(10); 00701 _scrollPane.getVerticalScrollBar().setUnitIncrement(10); 00702 00703 if (_singleCanvas) { 00704 if (_editor != null) 00705 _scrollPane.setViewportView(_editor); 00706 else 00707 _scrollPane.setViewportView(_visualizer); 00708 } 00709 else // Warning: this will prevent the sending of events! 00710 _scrollPane.setViewportView(new LayeredCanvasPane(_editor, _visualizer)); 00711 _scrollPane.getViewport().addChangeListener(new ChangeListener() { 00712 public void stateChanged(ChangeEvent e) { 00713 if (_editor != null) 00714 _editor.checkViewportSize(_scrollPane.getViewport().getExtentSize()); 00715 if (_visualizer != null) 00716 _visualizer.checkViewportSize(_scrollPane.getViewport().getExtentSize()); 00717 }}); 00718 } |
|
The standard background color.
|
|
The standard drawing color.
|
|
Never use scrollbars.
|
|
Always use scrollbars.
|
|
Use scrollbars when needed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|