OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [libjava/] [classpath/] [javax/] [swing/] [JScrollBar.java] - Blame information for rev 14

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 14 jlechner
/* JScrollBar.java --
2
   Copyright (C) 2002, 2004, 2005  Free Software Foundation, Inc.
3
 
4
This file is part of GNU Classpath.
5
 
6
GNU Classpath is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
9
any later version.
10
 
11
GNU Classpath is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GNU Classpath; see the file COPYING.  If not, write to the
18
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
02110-1301 USA.
20
 
21
Linking this library statically or dynamically with other modules is
22
making a combined work based on this library.  Thus, the terms and
23
conditions of the GNU General Public License cover the whole
24
combination.
25
 
26
As a special exception, the copyright holders of this library give you
27
permission to link this library with independent modules to produce an
28
executable, regardless of the license terms of these independent
29
modules, and to copy and distribute the resulting executable under
30
terms of your choice, provided that you also meet, for each linked
31
independent module, the terms and conditions of the license of that
32
module.  An independent module is a module which is not derived from
33
or based on this library.  If you modify this library, you may extend
34
this exception to your version of the library, but you are not
35
obligated to do so.  If you do not wish to do so, delete this
36
exception statement from your version. */
37
 
38
 
39
package javax.swing;
40
 
41
import java.awt.Adjustable;
42
import java.awt.Dimension;
43
import java.awt.event.AdjustmentEvent;
44
import java.awt.event.AdjustmentListener;
45
 
46
import javax.accessibility.Accessible;
47
import javax.accessibility.AccessibleContext;
48
import javax.accessibility.AccessibleRole;
49
import javax.accessibility.AccessibleStateSet;
50
import javax.accessibility.AccessibleValue;
51
import javax.swing.plaf.ScrollBarUI;
52
 
53
/**
54
 * The JScrollBar. Two buttons control how the values that the
55
 * scroll bar can take. You can also drag the thumb or click the track
56
 * to move the scroll bar. Typically, the JScrollBar is used with
57
 * other components to translate the value of the bar to the viewable
58
 * contents of the other components.
59
 */
60
public class JScrollBar extends JComponent implements Adjustable, Accessible
61
{
62
  /**
63
   * DOCUMENT ME!
64
   */
65
  protected class AccessibleJScrollBar extends JComponent.AccessibleJComponent
66
    implements AccessibleValue
67
  {
68
    private static final long serialVersionUID = -7758162392045586663L;
69
 
70
    /**
71
     * Creates a new AccessibleJSlider object.
72
     */
73
    protected AccessibleJScrollBar()
74
    {
75
      super();
76
    }
77
 
78
    /**
79
     * DOCUMENT ME!
80
     *
81
     * @return DOCUMENT ME!
82
     */
83
    public AccessibleStateSet getAccessibleStateSet()
84
    {
85
      return null;
86
    }
87
 
88
    /**
89
     * DOCUMENT ME!
90
     *
91
     * @return DOCUMENT ME!
92
     */
93
    public AccessibleRole getAccessibleRole()
94
    {
95
      return null;
96
    }
97
 
98
    /**
99
     * DOCUMENT ME!
100
     *
101
     * @return DOCUMENT ME!
102
     */
103
    public AccessibleValue getAccessibleValue()
104
    {
105
      return null;
106
    }
107
 
108
    /**
109
     * DOCUMENT ME!
110
     *
111
     * @return DOCUMENT ME!
112
     */
113
    public Number getCurrentAccessibleValue()
114
    {
115
      return null;
116
    }
117
 
118
    /**
119
     * setCurrentAccessibleValue
120
     *
121
     * @param value0 TODO
122
     *
123
     * @return boolean
124
     */
125
    public boolean setCurrentAccessibleValue(Number value0)
126
    {
127
      return false;
128
    }
129
 
130
    /**
131
     * getMinimumAccessibleValue
132
     *
133
     * @return Number
134
     */
135
    public Number getMinimumAccessibleValue()
136
    {
137
      return null;
138
    }
139
 
140
    /**
141
     * getMaximumAccessibleValue
142
     *
143
     * @return Number
144
     */
145
    public Number getMaximumAccessibleValue()
146
    {
147
      return null;
148
    }
149
  }
150
 
151
  private static final long serialVersionUID = -8195169869225066566L;
152
 
153
  /** How much the thumb moves when moving in a block. */
154
  protected int blockIncrement = 10;
155
 
156
  /** The model that holds the scroll bar's data. */
157
  protected BoundedRangeModel model;
158
 
159
  /** The orientation of the scroll bar. */
160
  protected int orientation = SwingConstants.VERTICAL;
161
 
162
  /** How much the thumb moves when moving in a unit. */
163
  protected int unitIncrement = 1;
164
 
165
  /**
166
   * Creates a new horizontal JScrollBar object with a minimum
167
   * of 0, a maxmium of 100, a value of 0 and an extent of 10.
168
   */
169
  public JScrollBar()
170
  {
171
    this(SwingConstants.VERTICAL, 0, 10, 0, 100);
172
  }
173
 
174
  /**
175
   * Creates a new JScrollBar object with a minimum of 0, a
176
   * maximum of 100, a value of 0, an extent of 10 and the given
177
   * orientation.
178
   *
179
   * @param orientation The orientation of the JScrollBar.
180
   */
181
  public JScrollBar(int orientation)
182
  {
183
    this(orientation, 0, 10, 0, 100);
184
  }
185
 
186
  /**
187
   * Creates a new JScrollBar object with the given orientation,
188
   * value, min, max, and extent.
189
   *
190
   * @param orientation The orientation to use.
191
   * @param value The value to use.
192
   * @param extent The extent to use.
193
   * @param min The minimum value of the scrollbar.
194
   * @param max The maximum value of the scrollbar.
195
   */
196
  public JScrollBar(int orientation, int value, int extent, int min, int max)
197
  {
198
    model = new DefaultBoundedRangeModel(value, extent, min, max);
199
    if (orientation != SwingConstants.HORIZONTAL
200
        && orientation != SwingConstants.VERTICAL)
201
      throw new IllegalArgumentException(orientation
202
                                         + " is not a legal orientation");
203
    this.orientation = orientation;
204
    updateUI();
205
  }
206
 
207
  /**
208
   * This method sets the UI of this scrollbar to
209
   * the given UI.
210
   *
211
   * @param ui The UI to use with this scrollbar.
212
   */
213
  public void setUI(ScrollBarUI ui)
214
  {
215
    super.setUI(ui);
216
  }
217
 
218
  /**
219
   * This method returns the UI that is being used
220
   * with this scrollbar.
221
   *
222
   * @return The scrollbar's current UI.
223
   */
224
  public ScrollBarUI getUI()
225
  {
226
    return (ScrollBarUI) ui;
227
  }
228
 
229
  /**
230
   * This method changes the UI to be the
231
   * default for the current look and feel.
232
   */
233
  public void updateUI()
234
  {
235
    setUI((ScrollBarUI) UIManager.getUI(this));
236
    invalidate();
237
    repaint();
238
  }
239
 
240
  /**
241
   * This method returns an identifier to
242
   * choose the correct UI delegate for the
243
   * scrollbar.
244
   *
245
   * @return The identifer to choose the UI delegate; "ScrollBarUI"
246
   */
247
  public String getUIClassID()
248
  {
249
    return "ScrollBarUI";
250
  }
251
 
252
  /**
253
   * This method returns the orientation of the scrollbar.
254
   *
255
   * @return The orientation of the scrollbar.
256
   */
257
  public int getOrientation()
258
  {
259
    return orientation;
260
  }
261
 
262
  /**
263
   * This method sets the orientation of the scrollbar.
264
   *
265
   * @param orientation The orientation of the scrollbar.
266
   */
267
  public void setOrientation(int orientation)
268
  {
269
    if (orientation != SwingConstants.HORIZONTAL
270
        && orientation != SwingConstants.VERTICAL)
271
      throw new IllegalArgumentException("orientation must be one of HORIZONTAL or VERTICAL");
272
    if (orientation != this.orientation)
273
      {
274
        int oldOrientation = this.orientation;
275
        this.orientation = orientation;
276
        firePropertyChange("orientation", oldOrientation,
277
                           this.orientation);
278
      }
279
  }
280
 
281
  /**
282
   * This method returns the model being used with
283
   * the scrollbar.
284
   *
285
   * @return The scrollbar's model.
286
   */
287
  public BoundedRangeModel getModel()
288
  {
289
    return model;
290
  }
291
 
292
  /**
293
   * This method sets the model to use with
294
   * the scrollbar.
295
   *
296
   * @param newModel The new model to use with the scrollbar.
297
   */
298
  public void setModel(BoundedRangeModel newModel)
299
  {
300
    if (model != newModel)
301
      {
302
        BoundedRangeModel oldModel = model;
303
        model = newModel;
304
        firePropertyChange("model", oldModel, model);
305
      }
306
  }
307
 
308
  /**
309
   * This method returns how much the scrollbar's value
310
   * should change for a unit increment depending on the
311
   * given direction.
312
   *
313
   * @param direction The direction to scroll in.
314
   *
315
   * @return The amount the scrollbar's value will change given the direction.
316
   */
317
  public int getUnitIncrement(int direction)
318
  {
319
    return direction * unitIncrement;
320
  }
321
 
322
  /**
323
   * This method sets the unitIncrement property.
324
   *
325
   * @param unitIncrement The new unitIncrement.
326
   */
327
  public void setUnitIncrement(int unitIncrement)
328
  {
329
    if (unitIncrement != this.unitIncrement)
330
      {
331
        int oldInc = this.unitIncrement;
332
        this.unitIncrement = unitIncrement;
333
        firePropertyChange("unitIncrement", oldInc,
334
                           this.unitIncrement);
335
      }
336
  }
337
 
338
  /**
339
   * The method returns how much the scrollbar's value
340
   * should change for a block increment depending on
341
   * the given direction.
342
   *
343
   * @param direction The direction to scroll in.
344
   *
345
   * @return The amount the scrollbar's value will change given the direction.
346
   */
347
  public int getBlockIncrement(int direction)
348
  {
349
    return direction * blockIncrement;
350
  }
351
 
352
  /**
353
   * This method sets the blockIncrement property.
354
   *
355
   * @param blockIncrement The new blockIncrement.
356
   */
357
  public void setBlockIncrement(int blockIncrement)
358
  {
359
    if (blockIncrement != this.blockIncrement)
360
      {
361
        int oldInc = this.blockIncrement;
362
        this.blockIncrement = blockIncrement;
363
        firePropertyChange("blockIncrement", oldInc,
364
                           this.blockIncrement);
365
      }
366
  }
367
 
368
  /**
369
   * This method returns the unitIncrement.
370
   *
371
   * @return The unitIncrement.
372
   */
373
  public int getUnitIncrement()
374
  {
375
    return unitIncrement;
376
  }
377
 
378
  /**
379
   * This method returns the blockIncrement.
380
   *
381
   * @return The blockIncrement.
382
   */
383
  public int getBlockIncrement()
384
  {
385
    return blockIncrement;
386
  }
387
 
388
  /**
389
   * This method returns the value of the scrollbar.
390
   *
391
   * @return The value of the scrollbar.
392
   */
393
  public int getValue()
394
  {
395
    return model.getValue();
396
  }
397
 
398
  /**
399
   * This method changes the value of the scrollbar.
400
   *
401
   * @param value The new value of the scrollbar.
402
   */
403
  public void setValue(int value)
404
  {
405
    if (isEnabled() && value != getValue())
406
    {
407
      model.setValue(value);
408
      fireAdjustmentValueChanged(AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED,
409
                                 AdjustmentEvent.TRACK, value);
410
    }
411
  }
412
 
413
  /**
414
   * This method returns the visible amount (AKA extent).
415
   * The visible amount can be used by UI delegates to
416
   * determine the size of the thumb.
417
   *
418
   * @return The visible amount (AKA extent).
419
   */
420
  public int getVisibleAmount()
421
  {
422
    return model.getExtent();
423
  }
424
 
425
  /**
426
   * This method sets the visible amount (AKA extent).
427
   *
428
   * @param extent The visible amount (AKA extent).
429
   */
430
  public void setVisibleAmount(int extent)
431
  {
432
    if (extent != getVisibleAmount())
433
    {
434
      model.setExtent(extent);
435
      fireAdjustmentValueChanged(AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED,
436
                                 AdjustmentEvent.TRACK, extent);
437
    }
438
  }
439
 
440
  /**
441
   * This method returns the minimum value of the scrollbar.
442
   *
443
   * @return The minimum value of the scrollbar.
444
   */
445
  public int getMinimum()
446
  {
447
    return model.getMinimum();
448
  }
449
 
450
  /**
451
   * This method sets the minimum value of the scrollbar.
452
   *
453
   * @param minimum The minimum value of the scrollbar.
454
   */
455
  public void setMinimum(int minimum)
456
  {
457
    if (minimum != getMinimum())
458
    {
459
      model.setMinimum(minimum);
460
      fireAdjustmentValueChanged(AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED,
461
                                 AdjustmentEvent.TRACK, minimum);
462
    }
463
  }
464
 
465
  /**
466
   * This method returns the maximum value of the scrollbar.
467
   *
468
   * @return The maximum value of the scrollbar.
469
   */
470
  public int getMaximum()
471
  {
472
    return model.getMaximum();
473
  }
474
 
475
  /**
476
   * This method sets the maximum value of the scrollbar.
477
   *
478
   * @param maximum The maximum value of the scrollbar.
479
   */
480
  public void setMaximum(int maximum)
481
  {
482
    if (maximum != getMaximum())
483
    {
484
      model.setMaximum(maximum);
485
      fireAdjustmentValueChanged(AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED,
486
                                 AdjustmentEvent.TRACK, maximum);
487
    }
488
  }
489
 
490
  /**
491
   * This method returns the model's isAjusting value.
492
   *
493
   * @return The model's isAdjusting value.
494
   */
495
  public boolean getValueIsAdjusting()
496
  {
497
    return model.getValueIsAdjusting();
498
  }
499
 
500
  /**
501
   * This method sets the model's isAdjusting value.
502
   *
503
   * @param b The new isAdjusting value.
504
   */
505
  public void setValueIsAdjusting(boolean b)
506
  {
507
    model.setValueIsAdjusting(b);
508
  }
509
 
510
  /**
511
   * This method sets the value, extent, minimum and
512
   * maximum.
513
   *
514
   * @param newValue The new value.
515
   * @param newExtent The new extent.
516
   * @param newMin The new minimum.
517
   * @param newMax The new maximum.
518
   */
519
  public void setValues(int newValue, int newExtent, int newMin, int newMax)
520
  {
521
    if (!isEnabled())
522
      newValue = model.getValue();
523
    // It seems to be that on any change the value is fired.
524
    if (newValue != getValue() || newExtent != getVisibleAmount() ||
525
        newMin != getMinimum() || newMax != getMaximum())
526
    {
527
      model.setRangeProperties(newValue, newExtent, newMin, newMax,
528
                               model.getValueIsAdjusting());
529
      fireAdjustmentValueChanged(AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED,
530
                                 AdjustmentEvent.TRACK, newValue);
531
    }
532
  }
533
 
534
  /**
535
   * This method adds an AdjustmentListener to the scroll bar.
536
   *
537
   * @param listener The listener to add.
538
   */
539
  public void addAdjustmentListener(AdjustmentListener listener)
540
  {
541
    listenerList.add(AdjustmentListener.class, listener);
542
  }
543
 
544
  /**
545
   * This method removes an AdjustmentListener from the scroll bar.
546
   *
547
   * @param listener The listener to remove.
548
   */
549
  public void removeAdjustmentListener(AdjustmentListener listener)
550
  {
551
    listenerList.remove(AdjustmentListener.class, listener);
552
  }
553
 
554
  /**
555
   * This method returns an arry of all AdjustmentListeners listening to
556
   * this scroll bar.
557
   *
558
   * @return An array of AdjustmentListeners listening to this scroll bar.
559
   */
560
  public AdjustmentListener[] getAdjustmentListeners()
561
  {
562
    return (AdjustmentListener[]) listenerList.getListeners(AdjustmentListener.class);
563
  }
564
 
565
  /**
566
   * This method is called to fired AdjustmentEvents to the listeners
567
   * of this scroll bar. All AdjustmentEvents that are fired
568
   * will have an ID of ADJUSTMENT_VALUE_CHANGED and a type of
569
   * TRACK.
570
   *
571
   * @param id The ID of the adjustment event.
572
   * @param type The Type of change.
573
   * @param value The new value for the property that was changed..
574
   */
575
  protected void fireAdjustmentValueChanged(int id, int type, int value)
576
  {
577
    Object[] adjustmentListeners = listenerList.getListenerList();
578
    AdjustmentEvent adjustmentEvent = new AdjustmentEvent(this,
579
                                            AdjustmentEvent.ADJUSTMENT_VALUE_CHANGED,
580
                                            AdjustmentEvent.TRACK,
581
                                            value);
582
    for (int i = adjustmentListeners.length - 2; i >= 0; i -= 2)
583
      {
584
        if (adjustmentListeners[i] == AdjustmentListener.class)
585
          ((AdjustmentListener) adjustmentListeners[i + 1]).adjustmentValueChanged(adjustmentEvent);
586
      }
587
  }
588
 
589
  /**
590
   * This method returns the minimum size for this scroll bar.
591
   *
592
   * @return The minimum size.
593
   */
594
  public Dimension getMinimumSize()
595
  {
596
    return ui.getMinimumSize(this);
597
  }
598
 
599
  /**
600
   * This method returns the maximum size for this scroll bar.
601
   *
602
   * @return The maximum size.
603
   */
604
  public Dimension getMaximumSize()
605
  {
606
    return ui.getMaximumSize(this);
607
  }
608
 
609
  /**
610
   * This method overrides the setEnabled in JComponent.
611
   * When the scroll bar is disabled, the knob cannot
612
   * be moved.
613
   *
614
   * @param x Whether the scrollbar is enabled.
615
   */
616
  public void setEnabled(boolean x)
617
  {
618
    // nothing special needs to be done here since we 
619
    // just check the enabled setting before changing the value.
620
    super.setEnabled(x);
621
  }
622
 
623
  /**
624
   * A string that describes this JScrollBar. Normally only used
625
   * for debugging.
626
   *
627
   * @return A string describing this JScrollBar.
628
   */
629
  protected String paramString()
630
  {
631
    return "JScrollBar";
632
  }
633
 
634
  /**
635
   * DOCUMENT ME!
636
   *
637
   * @return DOCUMENT ME!
638
   */
639
  public AccessibleContext getAccessibleContext()
640
  {
641
    if (accessibleContext == null)
642
      accessibleContext = new AccessibleJScrollBar();
643
    return accessibleContext;
644
  }
645
}

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.