Statistics
| Revision:

root / trunk / libraries / libUIComponent / src / org / gvsig / gui / beans / colorslideredition / ColorSliderEdition.java @ 12939

History | View | Annotate | Download (18.6 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 */
19
package org.gvsig.gui.beans.colorslideredition;
20

    
21
import java.awt.Color;
22
import java.awt.Cursor;
23
import java.awt.Dimension;
24
import java.awt.Graphics;
25
import java.awt.Image;
26
import java.awt.Polygon;
27
import java.awt.Shape;
28
import java.awt.event.MouseEvent;
29
import java.awt.event.MouseListener;
30
import java.awt.event.MouseMotionListener;
31
import java.util.ArrayList;
32
import java.util.Iterator;
33

    
34
import javax.swing.JComponent;
35
/**
36
 * <code>DoubleSlider</code> representa un componente que tiene dos
37
 * deslizadores. Se puede definir un m?ximo y un m?nimo.
38
 *
39
 * @version 04/05/2007
40
 * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
41
 */
42
public class ColorSliderEdition extends JComponent implements MouseListener, MouseMotionListener {
43
        private static final long serialVersionUID = 663355422780987493L;
44

    
45
        private ArrayList actionCommandListeners = new ArrayList();
46
        private ArrayList actionSelectionListeners = new ArrayList();
47
        private final int LEFT_PAD               = 3;
48
        private final int RIGHT_PAD              = 3;
49

    
50
        private Image     bufferImage            = null;
51
        private int       width                  = 0;
52
        private int       height                 = 0;
53
        private Graphics  bufferGraphics;
54
        private ArrayList items                  = new ArrayList();
55
        private boolean   interpolated           = true;
56

    
57
        /**
58
         * Crea un DoubleSlider con las opciones por defecto.
59
         */
60
        public ColorSliderEdition() {
61
                this.setPreferredSize(new Dimension(100, 46));
62
//                items.add(new ItemColorSlider(0, Color.black));
63
//                items.add(new ItemColorSlider(100, new Color(0, 0, 0, 0)));
64
                items.add(new ItemColorSlider(0, Color.black));
65
                items.add(new ItemColorSlider(25, Color.red));
66
                items.add(new ItemColorSlider(50, Color.green));
67
                items.add(new ItemColorSlider(75, Color.blue));
68
                items.add(new ItemColorSlider(100, Color.white));
69
                addMouseListener(this);
70
                addMouseMotionListener(this);
71
        }
72

    
73
        /*
74
         * (non-Javadoc)
75
         * @see javax.swing.JComponent#addNotify()
76
         */
77
        public void addNotify() {
78
                super.addNotify();
79

    
80
                refreshImage();
81
        }
82

    
83
        public void addItem(ItemColorSlider value) {
84
                addItem(value, true);
85
        }
86

    
87
        public void addItem(ItemColorSlider value, boolean repaint) {
88
                items.add(value);
89
                if (repaint)
90
                        refreshImage();
91
        }
92

    
93
        /**
94
         * Devuelve un color de interpolacion entre dos colores
95
         * @param value
96
         * @param pos
97
         * @return
98
         */
99
        private Color interpolatedColor(ArrayList newItems, double value, int pos) {
100
                if (newItems.size() <= 0)
101
                        return Color.black;
102

    
103
                if ((pos + 1) == newItems.size())
104
                        return ((ItemColorSlider) newItems.get(pos)).getColor();
105

    
106
                if (value <= ((ItemColorSlider) newItems.get(0)).getValue())
107
                        return ((ItemColorSlider) newItems.get(0)).getColor();
108

    
109
                ItemColorSlider item1 = (ItemColorSlider) newItems.get(pos);
110
                ItemColorSlider item2 = (ItemColorSlider) newItems.get(pos + 1);
111

    
112
                double percValue = ((value - item1.getValue()) * 100) / (item2.getValue() - item1.getValue());
113

    
114
                Color halfColor = new Color(
115
                                (item2.getColor().getRed() + item1.getColor().getRed()) >> 1,
116
                                (item2.getColor().getGreen() + item1.getColor().getGreen()) >> 1,
117
                                (item2.getColor().getBlue() + item1.getColor().getBlue()) >> 1,
118
                                (item2.getColor().getAlpha() + item1.getColor().getAlpha()) >> 1);
119

    
120
                Color color1, color2;
121
                double perc1, perc2;
122

    
123
                if (percValue > item2.getInterpolated()) {
124
                        color1 = halfColor;
125
                        color2 = item2.getColor();
126
                        perc1 = item2.getInterpolated();
127
                        perc2 = 100;
128
                } else {
129
                        color1 = item1.getColor();
130
                        color2 = halfColor;
131
                        perc1 = 0;
132
                        perc2 = item2.getInterpolated();
133
                }
134

    
135
                double percNew = (percValue - perc1) / (perc2 - perc1);
136

    
137
                Color newColor = new Color(
138
                                (int) (color1.getRed() + ((color2.getRed() - color1.getRed()) * percNew)) & 0xff,
139
                                (int) (color1.getGreen() + ((color2.getGreen() - color1.getGreen()) * percNew)) & 0xff,
140
                                (int) (color1.getBlue() + ((color2.getBlue() - color1.getBlue()) * percNew)) & 0xff,
141
                                (int) (color1.getAlpha() + ((color2.getAlpha() - color1.getAlpha()) * percNew)) & 0xff);
142

    
143

    
144
                return newColor;
145
        }
146

    
147
        /**
148
         * Crea un graphics con las dimensiones del componente si no estaba creado y
149
         * lo devuelve para poder usarlo para dibujar en ?l.
150
         * @return Graphics
151
         */
152
        private Graphics getBufferGraphics() {
153
                int width2 = getBounds().width;
154
                int height2 = getBounds().height;
155
                if (width2 <= 0)
156
                        width2 = 1;
157
                if (height2 <= 0)
158
                        height2 = 1;
159

    
160
                if ((width!=width2) || (height!=height2)) {
161
                        bufferImage = createImage(width2, height2);
162
                        if (bufferImage == null) return null;
163
                        bufferGraphics = bufferImage.getGraphics();
164
                }
165

    
166
                width = width2;
167
                height = height2;
168

    
169
                return bufferGraphics;
170
        }
171

    
172
        private void sortItems() {
173
                for (int i = 0; i < items.size(); i++) {
174
                        for (int j = i + 1; j < items.size(); j++) {
175
                                if (((ItemColorSlider) items.get(j)).getValue() < ((ItemColorSlider) items.get(i)).getValue()) {
176
                                        Object aux = items.get(i);
177
                                        items.set(i, items.get(j));
178
                                        items.set(j, aux);
179
                                }
180
                        }
181
                }
182
        }
183

    
184
        private int getPosForValue(double value, ArrayList newArray) {
185
                int pos = 0;
186
                for (int j = 1; j <= newArray.size(); j++) {
187
                        if (j < newArray.size()) {
188
                                if (value < ((ItemColorSlider) newArray.get(j)).getValue()) {
189
                                        pos = j - 1;
190
                                        break;
191
                                }
192
                        } else {
193
                                pos = j - 1;
194
                                break;
195
                        }
196
                }
197
                return pos;
198
        }
199

    
200
        /**
201
         * Redibujar el componente en el graphics temporal
202
         */
203
        private void redrawBuffer() {
204
                if (getBufferGraphics() == null) return;
205

    
206
                sortItems();
207

    
208
                getBufferGraphics().setColor(this.getBackground());
209

    
210
                getBufferGraphics().fillRect(0,0,width,height);
211

    
212
                getBufferGraphics().setColor(Color.black);
213
                getBufferGraphics().drawRect(LEFT_PAD, 0, width - 1 - LEFT_PAD - RIGHT_PAD, height - 18);
214

    
215
                Shape oldClip = getBufferGraphics().getClip();
216
                getBufferGraphics().setClip(LEFT_PAD + 2, 2, width - 4 - LEFT_PAD - RIGHT_PAD, height - 21);
217
                for (int i = 0; (i * 4 + 2) <= (width - 3 - LEFT_PAD - RIGHT_PAD); i++) {
218
                        for (int j = 0; (j * 4 + 2) <= (height - 20); j++) {
219
                                if ((i + j) % 2 == 0)
220
                                        getBufferGraphics().setColor(Color.white);
221
                                else
222
                                        getBufferGraphics().setColor(new Color(204, 204, 204));
223
                                getBufferGraphics().fillRect(i * 4 + 2 + LEFT_PAD, j * 4 + 2, 4, 4);
224
                        }
225
                }
226

    
227
                ArrayList newArray = (ArrayList) items.clone();
228
                for (int i = newArray.size() - 1; i>=0; i--) {
229
                        if (((ItemColorSlider) newArray.get(i)).isVisible() == false)
230
                                newArray.remove(i);
231
                }
232
                for (int i = LEFT_PAD + 2; i <= width - 2 - RIGHT_PAD; i++) {
233

    
234
                        int pos = getPosForValue(pixelToValue(i), newArray);
235

    
236
                        if (isInterpolated()) {
237
                                getBufferGraphics().setColor(interpolatedColor(newArray, pixelToValue(i), pos));
238
                        } else {
239
                                if ((pos + 1) < newArray.size()) {
240
                                        double min = ((ItemColorSlider) newArray.get(pos)).getValue();
241
                                        double max = ((ItemColorSlider) newArray.get(pos + 1)).getValue();
242
                                        if ((min + ((max - min) * ((ItemColorSlider) newArray.get(pos + 1)).getInterpolated() / 100)) < pixelToValue(i))
243
                                                pos++;
244
                                }
245
                                getBufferGraphics().setColor(((ItemColorSlider) newArray.get(pos)).getColor());
246
                        }
247
                        getBufferGraphics().drawLine(i, 2, i, height - 18);
248
                }
249

    
250
                getBufferGraphics().setClip(oldClip);
251

    
252
                boolean paintNext = false;
253
                for (int i = 0; i < items.size(); i++) {
254
                        ItemColorSlider aux = (ItemColorSlider) items.get(i);
255
                        if (!aux.isVisible())
256
                                continue;
257
                        // Dibujar los deslizadores de la interpolacion
258
                        if (aux.getSelected() != -1)
259
                                paintNext = true;
260
                        if (paintNext) {
261
                                if (i != 0) {
262
                                        double value = ((ItemColorSlider) items.get(i - 1)).getValue() + ((((ItemColorSlider) items.get(i)).getValue() - ((ItemColorSlider) items.get(i - 1)).getValue()) * ((ItemColorSlider) items.get(i)).getInterpolated() / 100);
263

    
264
                                        drawSliderInterpolation(valueToPixel(value), height - 17, aux.getColor(), (aux.getSelected() == 2));
265
                                }
266
                                paintNext = false;
267
                        }
268
                        if (aux.getSelected() == 1)
269
                                paintNext = true;
270
                }
271

    
272
                for (int i = items.size() - 1; i >=0; i--) {
273
                        ItemColorSlider aux = (ItemColorSlider) items.get(i);
274
                        if (!aux.isVisible())
275
                                continue;
276
                        drawSliderColor(valueToPixel(aux.getValue()), height - 17, aux.getColor(), (aux.getSelected() == 1));
277
                }
278
        }
279

    
280
        /**
281
         * Convierte un porcentaje al valor pixel en X
282
         * @param value
283
         * @return
284
         */
285
        private int valueToPixel(double value) {
286
                if (value < 0)
287
                        value = 0;
288
                if (value > 100)
289
                        value = 100;
290
                return (int) (((width - 5 - LEFT_PAD - RIGHT_PAD) * value) / 100) + 2 + LEFT_PAD;
291
        }
292

    
293
        /**
294
         * Convierte un valor en X en porcentaje
295
         * @param value
296
         * @return
297
         */
298
        private double pixelToValue(int value) {
299
                double aux = value - LEFT_PAD - 1;
300
                return (aux * 100.0f) / (width - LEFT_PAD - RIGHT_PAD - 4.0f);
301
        }
302

    
303
        /**
304
         * Dibujar un triangulo, un triangulo es un deslizador del componente. Puedes
305
         * indicarle que color tendra y en que posici?n estar?.
306
         * @param x
307
         * @param color
308
         */
309
        private void drawSliderColor(int x, int y, Color color, boolean isSelected) {
310
                Polygon p = new Polygon();
311
                p.addPoint(x, y);
312
                p.addPoint(x - 5, y + 6);
313
                p.addPoint(x - 5, y + 16);
314
                p.addPoint(x + 5, y + 16);
315
                p.addPoint(x + 5, y + 6);
316
                if (!isSelected) {
317
                        getBufferGraphics().setColor(this.getBackground());
318
                        getBufferGraphics().fillPolygon(p);
319
                        getBufferGraphics().setColor(new Color(172, 168, 153));
320
                        getBufferGraphics().drawLine(x + 1, y + 2, x + 4, y + 6);
321
                        getBufferGraphics().drawLine(x - 4, y + 6, x + 4, y + 6);
322
                }
323
                else {
324
                        getBufferGraphics().setColor(Color.black);
325
                        getBufferGraphics().fillPolygon(p);
326
                }
327

    
328
                getBufferGraphics().setColor(Color.black);
329
                getBufferGraphics().drawPolygon(p);
330

    
331
                getBufferGraphics().setColor(new Color(172, 168, 153));
332
                getBufferGraphics().drawLine(x - 3, y + 15, x + 4, y + 15);
333
                getBufferGraphics().drawLine(x + 4, y + 8, x + 4, y + 15);
334

    
335
                getBufferGraphics().setColor(Color.white);
336
                getBufferGraphics().drawLine(x - 4, y + 7, x - 4, y + 15);
337
                getBufferGraphics().drawLine(x - 4, y + 7, x + 4, y + 7);
338

    
339
                getBufferGraphics().setColor(new Color(color.getRed(), color.getGreen(), color.getBlue()));
340
                getBufferGraphics().fillRect(x - 3, y + 8, 7, 7);
341
        }
342

    
343
        /**
344
         * Dibujar un triangulo, un triangulo es un deslizador del componente. Puedes
345
         * indicarle que color tendra y en que posici?n estar?.
346
         * @param x
347
         * @param color
348
         */
349
        private void drawSliderInterpolation(int x, int y, Color color, boolean isSelected) {
350
                Polygon p = new Polygon();
351
                p.addPoint(x, y);
352
                p.addPoint(x - 3, y + 3);
353
                p.addPoint(x, y + 6);
354
                p.addPoint(x + 3, y + 3);
355
                if (isSelected)
356
                        getBufferGraphics().setColor(new Color(color.getRed(), color.getGreen(), color.getBlue()));
357
                else
358
                        getBufferGraphics().setColor(this.getBackground());
359

    
360
                getBufferGraphics().fillPolygon(p);
361

    
362
                getBufferGraphics().setColor(Color.black);
363
                getBufferGraphics().drawPolygon(p);
364
        }
365

    
366
        /**
367
         * Redibujar el componente en el graphics temporal y representarlo en el
368
         * componente
369
         */
370
        private void refreshImage() {
371
                redrawBuffer();
372
                if (bufferImage != null)
373
                        getGraphics().drawImage(bufferImage, 0, 0, this);
374
                super.paint(getGraphics());
375
        }
376

    
377
        /*
378
         * (non-Javadoc)
379
         * @see javax.swing.JComponent#paint(java.awt.Graphics)
380
         */
381
        public void paint(Graphics g) {
382
                redrawBuffer();
383
                g.drawImage(bufferImage, 0, 0, this);
384
                super.paint(g);
385
        }
386

    
387
        /*
388
         * (non-Javadoc)
389
         * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
390
         */
391
        public void mousePressed(MouseEvent e) {
392
                int onmask = MouseEvent.BUTTON1_DOWN_MASK;
393
                if ((e.getModifiersEx() & onmask) != onmask)
394
                        return;
395
                onmask = MouseEvent.ALT_DOWN_MASK;
396
                boolean newItem = false;
397
                if ((e.getModifiersEx() & onmask) == onmask)
398
                        newItem = true;
399

    
400
                if ((e.getY() > height) || (e.getY() < (height - 18))) {
401
                        clearSelected();
402
                        refreshImage();
403
                        return;
404
                }
405

    
406
                int type = 1;
407
                ItemColorSlider itemSelected = getItem(e.getX(), e.getY());
408
                if ((itemSelected == null) || (newItem)) {
409
                        itemSelected = getItemInterpolated(e.getX(), e.getY());
410
                        if ((itemSelected == null) || (newItem)) {
411
                                int pos = getPosForValue(pixelToValue(e.getX()), items);
412

    
413
                                Color newColor = interpolatedColor(items, pixelToValue(e.getX()), pos);
414

    
415
                                itemSelected = new ItemColorSlider(pixelToValue(e.getX()), newColor);
416
                                items.add(itemSelected);
417
                        } else {
418
                                type = 2;
419
                        }
420
                }
421
                setItemSelected(itemSelected, type);
422

    
423
                callSelectionChangedListeners();
424
                callValueChangedListeners();
425

    
426
                refreshImage();
427
        }
428

    
429
        private void clearSelected() {
430
                for (int i = items.size() - 1; i >= 0; i--)
431
                        ((ItemColorSlider) items.get(i)).setSelected(-1);
432
        }
433

    
434
        private void setItemSelected(ItemColorSlider aux, int type) {
435
                clearSelected();
436
                aux.setSelected(type);
437
        }
438

    
439
        /*
440
         * (non-Javadoc)
441
         * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
442
         */
443
        public void mouseReleased(MouseEvent e) {
444
                for (int i = items.size() - 1; i >= 0; i--) {
445
                        if (items.size() <= 2)
446
                                return;
447
                        if (((ItemColorSlider) items.get(i)).isVisible() == false)
448
                                items.remove(i);
449
                }
450
                callValueChangedListeners();
451
        }
452

    
453
        public ItemColorSlider getSelectedItem() {
454
                for (int i = 0; i < items.size(); i++) {
455
                        if (((ItemColorSlider) items.get(i)).getSelected() != -1)
456
                                return (ItemColorSlider) items.get(i);
457
                }
458
                return null;
459
        }
460

    
461
        /*
462
         * (non-Javadoc)
463
         * @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
464
         */
465
        public void mouseDragged(MouseEvent e) {
466
                ItemColorSlider aux = getSelectedItem();
467
                if (aux != null) {
468
                        if (aux.getSelected() == 1) {
469
                                aux.setValue(pixelToValue(e.getX()));
470
                                refreshImage();
471
                                setMouseCursor(e.getX(), e.getY());
472
                                aux.setVisible((e.getY() <= height) && (e.getY() >= 0) || items.size() <= 2);
473
                                callValueDraggedListeners();
474
                                return;
475
                        }
476
                        if (aux.getSelected() == 2) {
477
                                int pos = -1;
478
                                for (int i = 0; i < items.size(); i++) {
479
                                        if (items.get(i) == aux)
480
                                                pos = i;
481
                                }
482
                                if (pos > 0) {
483
                                        double min = ((ItemColorSlider) items.get(pos - 1)).getValue();
484
                                        double max = ((ItemColorSlider) items.get(pos)).getValue();
485

    
486
                                        double newValue = 100 * (pixelToValue(e.getX()) - min) / (max - min);
487

    
488
                                        aux.setInterpolated(newValue);
489
                                        refreshImage();
490
                                        setMouseCursor(e.getX(), e.getY());
491
                                        callValueDraggedListeners();
492
                                }
493
                                return;
494
                        }
495
                }
496
        }
497

    
498
        private ItemColorSlider getItem(int x, int y) {
499
                for (int i = 0; i < items.size(); i++) {
500
                        if ((x >= (valueToPixel(((ItemColorSlider) items.get(i)).getValue()) - 5)) &&
501
                                        (x <= (valueToPixel(((ItemColorSlider) items.get(i)).getValue()) + 5)) &&
502
                                        (y <= height) &&
503
                                        (y >= (height - 18))) {
504
                                return (ItemColorSlider) items.get(i);
505
                        }
506
                }
507
                return null;
508
        }
509

    
510
        private ItemColorSlider getItemInterpolated(int x, int y) {
511
                for (int i = 1; i < items.size(); i++) {
512
                        int value = valueToPixel(((ItemColorSlider) items.get(i - 1)).getValue() + ((((ItemColorSlider) items.get(i)).getValue() - ((ItemColorSlider) items.get(i - 1)).getValue()) * ((ItemColorSlider) items.get(i)).getInterpolated() / 100));
513

    
514
                        if ((x >= value - 3) &&
515
                                        (x <= value + 3) &&
516
                                        (y <= (height - 11)) &&
517
                                        (y >= (height - 18))) {
518
                                if (((ItemColorSlider) items.get(i)).getSelected() != -1)
519
                                        return (ItemColorSlider) items.get(i);
520
                                if (((ItemColorSlider) items.get(i - 1)).getSelected() == 1)
521
                                        return (ItemColorSlider) items.get(i);
522
                        }
523
                }
524
                return null;
525
        }
526

    
527
        private void setMouseCursor(int x, int y) {
528
                if (getItem(x, y) != null) {
529
                        setCursor(new Cursor(Cursor.E_RESIZE_CURSOR));
530
                        return;
531
                }
532
                if (getItemInterpolated(x, y) != null) {
533
                        setCursor(new Cursor(Cursor.E_RESIZE_CURSOR));
534
                        return;
535
                }
536
                if ((y <= height) && (y >= (height - 18))) {
537
                        setCursor(new Cursor(Cursor.HAND_CURSOR));
538
                        return;
539
                }
540
                setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
541
                return;
542
        }
543

    
544
        /*
545
         * (non-Javadoc)
546
         * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
547
         */
548
        public void mouseMoved(MouseEvent e) {
549
                setMouseCursor(e.getX(), e.getY());
550
        }
551

    
552
        /**
553
         * @return the interpolated
554
         */
555
        public boolean isInterpolated() {
556
                return interpolated;
557
        }
558

    
559
        /**
560
         * @param interpolated the interpolated to set
561
         */
562
        public void setInterpolated(boolean interpolated) {
563
                this.interpolated = interpolated;
564
                refreshImage();
565
        }
566

    
567
        /**
568
         * A?adir un listener a la lista de eventos
569
         * @param listener
570
         */
571
        public void addValueChangedListener(ColorSliderListener listener) {
572
                if (!actionCommandListeners.contains(listener))
573
                        actionCommandListeners.add(listener);
574
        }
575

    
576
        /**
577
         * Borrar un listener de la lista de eventos
578
         * @param listener
579
         */
580
        public void removeValueChangedListener(ColorSliderListener listener) {
581
                actionCommandListeners.remove(listener);
582
        }
583

    
584
        /**
585
         * A?adir un listener a la lista de eventos
586
         * @param listener
587
         */
588
        public void addSelectionChangedListener(ColorSliderListener listener) {
589
                if (!actionSelectionListeners.contains(listener))
590
                        actionSelectionListeners.add(listener);
591
        }
592

    
593
        /**
594
         * Borrar un listener de la lista de eventos
595
         * @param listener
596
         */
597
        public void removeSelectionChangedListener(ColorSliderListener listener) {
598
                actionSelectionListeners.remove(listener);
599
        }
600

    
601
        /**
602
         * Invocar a los eventos asociados al componente
603
         */
604
        private void callSelectionChangedListeners() {
605
                Iterator acIterator = actionSelectionListeners.iterator();
606
                while (acIterator.hasNext()) {
607
                        ColorSliderListener listener = (ColorSliderListener) acIterator.next();
608
                        listener.actionSelectionChanged(new ColorSliderEvent(this));
609
                }
610
        }
611

    
612
        /**
613
         * Invocar a los eventos asociados al componente
614
         */
615
        private void callValueChangedListeners() {
616
                Iterator acIterator = actionCommandListeners.iterator();
617
                while (acIterator.hasNext()) {
618
                        ColorSliderListener listener = (ColorSliderListener) acIterator.next();
619
                        listener.actionValueChanged(new ColorSliderEvent(this));
620
                }
621
        }
622

    
623
        /**
624
         * Invocar a los eventos asociados al componente
625
         */
626
        private void callValueDraggedListeners() {
627
                Iterator acIterator = actionCommandListeners.iterator();
628
                while (acIterator.hasNext()) {
629
                        ColorSliderListener listener = (ColorSliderListener) acIterator.next();
630
                        listener.actionValueDragged(new ColorSliderEvent(this));
631
                }
632
        }
633

    
634
        public void removeAllItems() {
635
                items.clear();
636
        }
637

    
638
        public void mouseClicked(MouseEvent e) {}
639
        public void mouseEntered(MouseEvent e) {}
640
        public void mouseExited(MouseEvent e) {}
641
}