Statistics
| Revision:

gvsig-tools / org.gvsig.tools / library / trunk / org.gvsig.tools / org.gvsig.tools.swing / org.gvsig.tools.swing.impl / src / main / java / org / gvsig / tools / swing / impl / DefaultToolsSwingManager.java @ 2491

History | View | Annotate | Download (23.3 KB)

1
package org.gvsig.tools.swing.impl;
2

    
3
import org.gvsig.tools.swing.api.FilteredListModel;
4
import java.awt.Color;
5
import java.awt.Component;
6
import java.awt.Dimension;
7
import java.awt.Toolkit;
8
import java.awt.datatransfer.DataFlavor;
9
import java.awt.datatransfer.StringSelection;
10
import java.awt.datatransfer.Transferable;
11
import java.awt.event.ActionListener;
12
import java.awt.image.BufferedImage;
13
import java.awt.image.WritableRaster;
14
import java.io.File;
15
import java.lang.reflect.InvocationTargetException;
16
import java.lang.reflect.Method;
17
import javax.swing.AbstractButton;
18
import javax.swing.ComboBoxModel;
19
import javax.swing.Icon;
20
import javax.swing.ImageIcon;
21
import javax.swing.JButton;
22
import javax.swing.JComboBox;
23
import javax.swing.JComponent;
24
import javax.swing.JLabel;
25
import javax.swing.JList;
26
import javax.swing.JScrollPane;
27
import javax.swing.JSlider;
28
import javax.swing.JTabbedPane;
29
import javax.swing.JTable;
30
import javax.swing.JTree;
31
import javax.swing.JViewport;
32
import javax.swing.border.TitledBorder;
33
import javax.swing.table.TableModel;
34
import javax.swing.text.JTextComponent;
35
import javax.swing.tree.TreeModel;
36
import org.apache.commons.lang3.StringUtils;
37
import org.gvsig.tools.ToolsLocator;
38
import org.gvsig.tools.bookmarksandhistory.Bookmarks;
39
import org.gvsig.tools.bookmarksandhistory.History;
40
import org.gvsig.tools.i18n.I18nManager;
41
import org.gvsig.tools.swing.api.ActionListenerSupport;
42
import org.gvsig.tools.swing.api.ChangeListenerHelper;
43
import org.gvsig.tools.swing.api.ColorChooserController;
44
import org.gvsig.tools.swing.api.CompoundIcon;
45
import org.gvsig.tools.swing.api.DropDown;
46
import org.gvsig.tools.swing.api.FilteredListController;
47
import org.gvsig.tools.swing.api.FilteredTableModel;
48
import org.gvsig.tools.swing.api.FilteredTreeController;
49
import org.gvsig.tools.swing.api.FilteredTreeModel;
50
import org.gvsig.tools.swing.api.JListWithCheckbox;
51
import org.gvsig.tools.swing.api.JWebBrowser;
52
import org.gvsig.tools.swing.api.JWebBrowserFactory;
53
import org.gvsig.tools.swing.api.MessageBarController;
54
import org.gvsig.tools.swing.api.SimpleImage;
55
import org.gvsig.tools.swing.api.TableColumnAdjuster;
56
import org.gvsig.tools.swing.api.ToolsSwingLocator;
57
import org.gvsig.tools.swing.api.ToolsSwingManager;
58
import org.gvsig.tools.swing.api.pickercontroller.ColorPickerController;
59
import org.gvsig.tools.swing.api.pickercontroller.DatePickerController;
60
import org.gvsig.tools.swing.api.pickercontroller.FilePickerController;
61
import org.gvsig.tools.swing.api.pickercontroller.FolderPickerController;
62
import org.gvsig.tools.swing.api.pickercontroller.PickerController;
63
import org.gvsig.tools.swing.icontheme.IconTheme;
64
import org.gvsig.tools.swing.icontheme.IconThemeManager;
65
import org.gvsig.tools.swing.impl.bufferedImage.VirtualBufferedImageHelper;
66
import org.gvsig.tools.swing.impl.bufferedImage.VirtualBufferedImageHelper.VirtualDataBuffer;
67
import org.gvsig.tools.swing.impl.pickercontroller.BytearrayPickerControllerImpl;
68
import org.gvsig.tools.swing.impl.pickercontroller.ColorPickerControllerImpl;
69
import org.gvsig.tools.swing.impl.pickercontroller.DatePickerControllerImpl;
70
import org.gvsig.tools.swing.impl.pickercontroller.FilePickerControllerImpl;
71
import org.gvsig.tools.swing.impl.pickercontroller.FolderPickerControllerImpl;
72
import org.gvsig.tools.swing.api.bookmarkshistory.BookmarksController;
73
import org.gvsig.tools.swing.api.bookmarkshistory.HistoryController;
74
import org.gvsig.tools.swing.api.pickercontroller.DataTypePickerController;
75
import org.gvsig.tools.swing.impl.bookmarkshistory.DefaultBookmarksController;
76
import org.gvsig.tools.swing.impl.bookmarkshistory.DefaultHistoryController;
77
import org.gvsig.tools.swing.impl.pickercontroller.DataTypePickerControllerImpl;
78

    
79
@SuppressWarnings("UseSpecificCatch")
80
public class DefaultToolsSwingManager implements ToolsSwingManager {
81
    
82
    private Dimension maxPhysicalSizeOfBufferedImage;
83
    private JWebBrowserFactory webBrowserfactory;
84

    
85
    @Override
86
    public ActionListenerSupport createActionListenerSupport() {
87
        return new DefaultActionListenerSupport();
88
    }
89

    
90
    @Override
91
    public JListWithCheckbox createJListWithCheckbox(JList wrappedList) {
92
        return new DefaultJListWithCheckbox(wrappedList);
93
    }
94

    
95
    @Override
96
    public void setTreeModel(JComboBox comboBox, TreeModel aTreeModel) {
97
        TreeComboUtils.setTreeModel(comboBox, aTreeModel);
98
    }
99

    
100
    @Override
101
    public ComboBoxModel createComboBoxModel(TreeModel treeModel) {
102
        return TreeComboUtils.createComboBoxModel(treeModel);
103
    }
104

    
105
    @Override
106
    public BufferedImage createBufferedImage(int w, int h, int type) {
107
        if (getMaxPhysicalSizeOfBufferedImage().getWidth() < w || getMaxPhysicalSizeOfBufferedImage().getHeight() < h) {
108
            return createVirtualBufferedImage(w, h, type);
109
        }
110
        return new BufferedImage(w, h, type);
111
    }
112

    
113
    @Override
114
    public BufferedImage createVirtualBufferedImage(int w, int h, int type) {
115
        return VirtualBufferedImageHelper.createVirtualBufferedImage(w, h, type);
116
    }
117

    
118
    @Override
119
    public BufferedImage copyBufferedImage(BufferedImage img) {
120
        WritableRaster sourceRaster = img.getRaster();
121

    
122
        BufferedImage newImage;
123
        if (sourceRaster.getDataBuffer() instanceof VirtualDataBuffer) {
124
            newImage = VirtualBufferedImageHelper.createVirtualBufferedImage(
125
                    img.getWidth(),
126
                    img.getHeight(),
127
                    img.getSampleModel(),
128
                    img.getColorModel()
129
            );
130
        } else {
131
            newImage = createBufferedImage(img.getWidth(), img.getHeight(), img.getType());
132
        }
133

    
134
        WritableRaster raster = newImage.getRaster();
135
        img.copyData(raster);
136
        return newImage;
137
    }
138

    
139
    @Override
140
    public void setMaxPhysicalSizeOfBufferedImage(Dimension dimension) {
141
        this.maxPhysicalSizeOfBufferedImage = dimension;
142
    }
143

    
144
    @Override
145
    public Dimension getMaxPhysicalSizeOfBufferedImage() {
146
        if (this.maxPhysicalSizeOfBufferedImage == null) {
147
            this.maxPhysicalSizeOfBufferedImage = new Dimension(2000, 2000);
148
        }
149
        return this.maxPhysicalSizeOfBufferedImage;
150
    }
151

    
152
    @Override
153
    public ColorChooserController createColorChooserController(JTextComponent txtLabel, JButton btnShowDialog, JSlider sldAlpha, boolean allowNull) {
154
        return new DefaultColorChooserController(txtLabel, btnShowDialog, sldAlpha, allowNull);
155
    }
156

    
157
    @Override
158
    public ColorChooserController createColorChooserController(JTextComponent txtLabel, JButton btnShowDialog) {
159
        return new DefaultColorChooserController(txtLabel, btnShowDialog);
160
    }
161

    
162
    @Override
163
    public ColorChooserController createColorChooserController(JTextComponent txtLabel, JButton btnShowDialog, JSlider sldAlpha) {
164
        return new DefaultColorChooserController(txtLabel, btnShowDialog, sldAlpha);
165
    }
166

    
167
    @Override
168
    public Color alphaBlendingWithOpaqueBackground(Color bgColor, Color fgColor) {
169
        // https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending
170
        Color src = fgColor;
171
        Color dst = bgColor;
172

    
173
        // double outa = 1;
174
        double srca = src.getAlpha() / 255.0;
175
        double srca_1 = (1 - srca);
176

    
177
        Color color = new Color(
178
                (int) (src.getRed() * srca + dst.getRed() * srca_1) & 0xff,
179
                (int) (src.getGreen() * srca + dst.getGreen() * srca_1) & 0xff,
180
                (int) (src.getBlue() * srca + dst.getBlue() * srca_1) & 0xff
181
        );
182
        return color;
183
    }
184

    
185
    @Override
186
    public Color opaqueColor(Color src) {
187
        // https://en.wikipedia.org/wiki/Alpha_compositing#Alpha_blending
188
        double srca = src.getAlpha() / 255.0;
189
        double srca_1 = (1 - srca);
190

    
191
        Color color = new Color(
192
                (int) (src.getRed() * srca + 255 * srca_1) & 0xff,
193
                (int) (src.getGreen() * srca + 255 * srca_1) & 0xff,
194
                (int) (src.getBlue() * srca + 255 * srca_1) & 0xff
195
        );
196
        return color;
197
    }
198

    
199
    private Object call(Object obj, String name, Object... params) {
200
        Class[] types = null;
201
        if (params != null) {
202
            types = new Class[params.length];
203
            for (int i = 0; i < params.length; i++) {
204
                types[i] = params[i].getClass();
205
            }
206
        }
207
        Method method;
208
        try {
209
            method = obj.getClass().getMethod(name, types);
210
            Object r = method.invoke(obj, params);
211
            return r;
212
        } catch (NoSuchMethodException
213
                | SecurityException
214
                | IllegalAccessException
215
                | IllegalArgumentException
216
                | InvocationTargetException ex) {
217
        }
218
        return null;
219
    }
220
    
221
    @Override
222
    public void translate(JComponent component) {
223
        this.translate(component,false);
224
    }
225
    
226
    @Override
227
    public void translate(AbstractButton component) {
228
        this.translate(component,false);
229
    }
230
    
231
    @Override
232
    public void translate(JLabel component) {
233
        this.translate(component,false);
234
    }
235
    
236
    @Override
237
    public void translate(JTabbedPane component) {
238
        this.translate(component,false);
239
    }
240
    
241
    @Override
242
    public void translate(JComponent component, boolean wrap) {
243
        I18nManager i18n = ToolsLocator.getI18nManager();
244
        String text = (String) call(component, "getText", (Object[]) null);
245
        if (!StringUtils.isBlank(text)) {
246
            text = i18n.getTranslation(text);
247
            if( wrap ) {
248
                text = toHTML(text);
249
            }
250
            call(component, "setText", text);
251
        }
252
        text = (String) call(component, "getToolTipText", (Object[]) null);
253
        if (!StringUtils.isEmpty(text)) {
254
            text = i18n.getTranslation(text);
255
            call(component, "setToolTipText", toHTML(text));
256
        }
257
    }
258

    
259
    @Override
260
    public void translate(AbstractButton component, boolean wrap) {
261
        I18nManager i18n = ToolsLocator.getI18nManager();
262
        String text=  component.getText();
263
        if (!StringUtils.isBlank(text)) {
264
            text = i18n.getTranslation(text);
265
            if( wrap ) {
266
                text = toHTML(text);
267
            }
268
            component.setText(text);
269
        }
270
        text = component.getToolTipText();
271
        if (!StringUtils.isBlank(text)) {
272
            text = i18n.getTranslation(text);
273
            component.setToolTipText(toHTML(text));
274
        }
275
    }
276

    
277
    @Override
278
    public void translate(JLabel component, boolean wrap) {
279
        I18nManager i18n = ToolsLocator.getI18nManager();
280
        String text = component.getText();
281
        if (!StringUtils.isBlank(text)) {
282
            text = i18n.getTranslation(text);
283
            if( wrap ) {
284
                text = toHTML(text);
285
            }
286
            component.setText(text);
287
        }
288
        text = component.getToolTipText();
289
        if (!StringUtils.isBlank(text)) {
290
            text = i18n.getTranslation(text);
291
            component.setToolTipText(toHTML(text));
292
        }
293
    }
294

    
295
    @Override
296
    public void translate(JTabbedPane component, boolean wrap) {
297
        I18nManager i18n = ToolsLocator.getI18nManager();
298

    
299
        for (int i = 0; i < component.getTabCount(); i++) {
300
            String text = component.getTitleAt(i);
301
            if (!StringUtils.isBlank(text)) {
302
                text = i18n.getTranslation(text);
303
                if( wrap ) {
304
                    text = toHTML(text);
305
                }
306
                component.setTitleAt(i, text);
307
            }
308
            text = component.getToolTipTextAt(i);
309
            if (!StringUtils.isBlank(text)) {
310
                text = i18n.getTranslation(text);
311
                component.setToolTipTextAt(i, toHTML(text));
312
            }
313
        }
314
    }
315

    
316
    public static String toHTML(String s) {
317
      s = StringUtils.replace(s, "\n", "<br>");
318
      s = StringUtils.replace(s, "<html>", "");
319
      s = StringUtils.replace(s, "</html>", "");
320
      s = "<html>"+s+"</html>";
321
      return s;
322
    }
323
    
324
    @Override
325
    public void setDefaultPopupMenu(final JTextComponent component) {
326
        ContextMenuUtils.setDefaultContextMenu(component);
327
    }
328

    
329
    @Override
330
    public void setDefaultPopupMenu(final JTextComponent component, String title) {
331
        ContextMenuUtils.setDefaultContextMenu(component, title);
332
    }
333
    
334
    @Override
335
    public void setDefaultPopupMenu(JComboBox component) {
336
        ContextMenuUtils.setDefaultContextMenu(component);
337
    }
338

    
339
    @Override
340
    public void setDefaultPopupMenu(JComboBox component, String title) {
341
        ContextMenuUtils.setDefaultContextMenu(component, title);
342
    }
343

    
344
    @Override
345
    public ChangeListenerHelper createChangeListenerHelper() {
346
        DefaultChangeListenerHelper x = new DefaultChangeListenerHelper();
347
        return x;
348
    }
349

    
350
    @Override
351
    public ColorPickerController createColorPickerController(JTextComponent txtLabel, JButton btnShowDialog, JSlider sldAlpha, boolean allowNull) {
352
        return new ColorPickerControllerImpl(txtLabel, btnShowDialog, sldAlpha, allowNull);
353
    }
354

    
355
    @Override
356
    public ColorPickerController createColorPickerController(JTextComponent txtLabel, JButton btnShowDialog) {
357
        return new ColorPickerControllerImpl(txtLabel, btnShowDialog);
358
    }
359

    
360
    @Override
361
    public ColorPickerController createColorPickerController(JTextComponent txtLabel, JButton btnShowDialog, JSlider sldAlpha) {
362
        return new ColorPickerControllerImpl(txtLabel, btnShowDialog, sldAlpha);
363
    }
364

    
365
    @Override
366
    public DatePickerController createDatePickerController(JTextComponent txtDate, JButton btnDate) {
367
        return new DatePickerControllerImpl(txtDate, btnDate);
368
    }
369

    
370
    @Override
371
    public FilePickerController createFilePickerController(JTextComponent txtFile, JButton btnFile, String dialogTitle, String fileChooserID, File initialPath, boolean seticon) {
372
        return new FilePickerControllerImpl(txtFile, btnFile, dialogTitle, fileChooserID, initialPath, seticon);
373
    }
374

    
375
    @Override
376
    public FilePickerController createFilePickerController(JTextComponent txtFile, JButton btnFile) {
377
        return new FilePickerControllerImpl(txtFile, btnFile);
378
    }
379

    
380
    @Override
381
    public PickerController<byte[]> createByteArrayPickerController(JTextComponent txtText, JButton btnUpload, JButton btnDownload, String fileChooserID, File initialPath) {
382
        return new BytearrayPickerControllerImpl(txtText, btnUpload, btnDownload, fileChooserID, initialPath);
383
    }
384

    
385
    @Override
386
    public PickerController<byte[]> createByteArrayPickerController(JTextComponent txtText, JButton btnUpload, JButton btnDownload) {
387
        return new BytearrayPickerControllerImpl(txtText, btnUpload, btnDownload, null, null);
388
    }
389

    
390
    @Override
391
    public FilePickerController createFilePickerController(JTextComponent txtFile, JButton btnFile, String dialogTitle) {
392
        return new FilePickerControllerImpl(txtFile, btnFile, dialogTitle);
393
    }
394

    
395
    @Override
396
    public FolderPickerController createFolderPickerController(JTextComponent txtFile, JButton btnFile, String dialogTitle, String fileChooserID, File initialPath, boolean seticon) {
397
        return new FolderPickerControllerImpl(txtFile, btnFile, dialogTitle, fileChooserID, initialPath, seticon);
398
    }
399

    
400
    @Override
401
    public FolderPickerController createFolderPickerController(JTextComponent txtFile, JButton btnFile) {
402
        return new FolderPickerControllerImpl(txtFile, btnFile);
403
    }
404

    
405
    @Override
406
    public FolderPickerController createFolderPickerController(JTextComponent txtFile, JButton btnFile, String dialogTitle) {
407
        return new FolderPickerControllerImpl(txtFile, btnFile, dialogTitle);
408
    }
409

    
410
    @Override
411
    public void removeBorder(JComponent component) {
412
        try {
413
            component.setBorder(null);
414
            JComponent p1 = (JComponent) component.getParent();
415
            if (p1 instanceof JViewport) {
416
                p1 = (JComponent) component.getParent();
417
            }
418
            if (p1 instanceof JScrollPane) {
419
                JScrollPane scrollPanel = (JScrollPane) component.getParent();
420
                scrollPanel.setBorder(null);
421
            }
422
        } catch (Exception ex) {
423

    
424
        }
425
    }
426

    
427
    protected ImageIcon getIcon(String name) {
428
        IconThemeManager iconThemeManager = ToolsSwingLocator.getIconThemeManager();
429
        IconTheme theme = iconThemeManager.getCurrent();
430
        ImageIcon icon = theme.get(name);
431
        return icon;
432
    }
433

    
434
    @Override
435
    public void addClearButton(JTextComponent text) {
436
        ClearButtonUtils.addClearButton(text, null);
437
    }
438

    
439
    @Override
440
    public void addClearButton(JComboBox combo) {
441
        ClearButtonUtils.addClearButton(combo);
442
    }
443
    
444
    @Override
445
    public boolean hasClearButton(final JComboBox combo) {
446
        return ClearButtonUtils.hasClearButton(combo);
447
    }
448

    
449
    @Override
450
    public void removeClearButton(final JComboBox combo) {
451
        ClearButtonUtils.removeClearButton(combo);
452
    }
453
    
454
    @Override
455
    public boolean hasClearButton(final JTextComponent text) {
456
        return ClearButtonUtils.hasClearButton(text);
457
    }
458
    
459
    @Override
460
    public void removeClearButton(final JTextComponent text) {
461
        ClearButtonUtils.removeClearButton(text);
462
    }
463
    
464
    @Override
465
    public void addClearButton(final JTextComponent text, final ActionListener action) {
466
        ClearButtonUtils.addClearButton(text, action);
467
    }
468
    
469
    public String showZoomDialog(Component parent, String title, String text, boolean editable) {
470
        DefaultZoomDialog dialog = new DefaultZoomDialog(parent, title, text);
471
        dialog.setEditable(editable);
472
        dialog.setAlwaysOnTop(true);
473
        dialog.setVisible(true);
474
        if (editable) {
475
            return dialog.getText();
476
        }
477
        return text;
478
    }
479
    
480
    @Override
481
    public SimpleImage createSimpleImage() {
482
        SimpleImage x = new DefaultSimpleImage();
483
        return x;
484
    }
485

    
486
    @Override
487
    public SimpleImage createSimpleImage(Object source) {
488
        SimpleImage x = new DefaultSimpleImage(source);
489
        return x;
490
    }
491

    
492
    @Override
493
    public DropDown createDropDown(JComboBox combo) {
494
        DropDown c = new DropDownComboBox(combo);
495
        return c;
496
    }
497

    
498
    @Override
499
    public DropDown createDropDown(JLabel label) {
500
        DropDown c = new DropDownLabel(label);
501
        return c;
502
    }
503

    
504
    @Override
505
    public DropDown createDropDown(AbstractButton button) {
506
        DropDown c = new DropDownButton(button);
507
        return c;
508
    }
509

    
510
    @Override
511
    public DropDown createDropDown(JComponent component) {
512
        DropDown c = new DropDownLabel(component);
513
        return c;
514
    }
515

    
516
    @Override
517
    public CompoundIcon createCompoundIcon(Icon... icons) {
518
        DefaultCompoundIcon i = new DefaultCompoundIcon(icons);
519
        return i;
520
    }
521

    
522
    @Override
523
    public CompoundIcon createCompoundIcon(int orientation, Icon... icons) {
524
        DefaultCompoundIcon i = new DefaultCompoundIcon(orientation, icons);
525
        return i;
526
    }
527

    
528
    @Override
529
    public CompoundIcon createCompoundIcon(int orientation, int gap, Icon... icons) {
530
        DefaultCompoundIcon i = new DefaultCompoundIcon(orientation, gap, icons);
531
        return i;
532
    }
533

    
534
    @Override
535
    public CompoundIcon createCompoundIcon(int orientation, int gap, int alignmentX, int alignmentY, Icon... icons) {
536
        DefaultCompoundIcon i = new DefaultCompoundIcon(orientation, gap, alignmentX, alignmentY, icons);
537
        return i;
538
    }
539

    
540
    @Override
541
    public BookmarksController createBookmarksController(Bookmarks bookmarks, JButton button) {
542
        BookmarksController controller;
543
        controller = new DefaultBookmarksController(bookmarks, button);
544
        return controller;
545
    }
546

    
547
    @Override
548
    public HistoryController createHistoryController(History history, JButton button) {
549
        DefaultHistoryController controller;
550
        controller = new DefaultHistoryController(history, button);
551
        return controller;
552
    }
553

    
554
    @Override
555
    public FilteredTableModel createFilteredTableModel(TableModel tableModel, int filterColumn) {
556
        FilteredTableModelImpl model = new FilteredTableModelImpl(tableModel, filterColumn);
557
        return model;
558
    }
559

    
560
    @Override
561
    public JLabel createTitledSeparator(String title, int height, int titlePosition, int titleJustification) {
562
        TitledSeparator c = new TitledSeparator(title, height, titlePosition, titleJustification);
563
        return c;
564
    }
565

    
566
    @Override
567
    public JLabel createTitledSeparator(String title) {
568
        TitledSeparator c = new TitledSeparator(
569
                title,
570
                2,
571
                TitledBorder.DEFAULT_POSITION,
572
                TitledBorder.DEFAULT_JUSTIFICATION
573
        );
574
        return c;
575
    }
576

    
577
    @Override
578
    public FilteredListModel createFilteredListModel() {
579
        FilteredListModel model = new FilteredListModelImpl(null);
580
        return model;
581
    }
582

    
583
    @Override
584
    public FilteredTreeModel createFilteredTreeModel(JTree tree) {
585
        FilteredTreeModel model = new FilteredTreeModelImpl(tree.getModel());
586
        return model;
587
    }
588

    
589
    @Override
590
    public FilteredListController createFilteredListController(JList list, JTextComponent text, JButton button) {
591
        FilteredListController flc = new DefaultFilteredListController(list, text, button);
592
        return flc;
593
    }
594

    
595
    @Override
596
    public FilteredTreeController createFilteredTreeController(JTree list, JTextComponent text, JButton button) {
597
        FilteredTreeController ftc = new DefaultFilteredTreeController(list, text, button);
598
        return ftc;
599
    }
600

    
601
    @Override
602
    public JWebBrowser createJWebBrowser() {
603
        return this.webBrowserfactory.create();
604
    }
605

    
606
    @Override
607
    public void registerJWebBrowserFactory(JWebBrowserFactory factory) {
608
        this.webBrowserfactory = factory;
609
    }
610

    
611
    public JWebBrowserFactory getJWebBrowserFactory() {
612
        return this.webBrowserfactory;
613
    }
614

    
615
    @Override
616
    public DataTypePickerController createDataTypePickerController(JComboBox cboDataType, JButton btnDataType, boolean allowNull) {
617
        return new DataTypePickerControllerImpl(cboDataType, btnDataType, allowNull);
618
    }
619

    
620
  @Override
621
  public TableColumnAdjuster createTableColumnAdjuster(JTable table) {
622
    return TableColumnAdjusterImpl.install(table);
623
  }
624

    
625
    @Override
626
    public MessageBarController createMessageBarController(JLabel txtLabel, int timeDuration) {
627
       return new MessageBarControllerImpl(txtLabel, timeDuration);
628
    }
629

    
630
    @Override
631
    public DropDown createDropDownIcon(JLabel lblNull) {
632
        return new DropDownLabelIcon(lblNull);
633
    }
634

    
635
    /**
636
     * Stores the provided text data on the clipboard.
637
     * 
638
     * @param data
639
     *            An String containing the data to be stored
640
     *            on the clipboard.
641
     */
642
    @Override
643
    public void putInClipboard(String data) {
644
        StringSelection ss = new StringSelection(data);
645

    
646
        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, ss);
647
    }
648

    
649
    /**
650
     * Gets text data from the Clipboard, if available.
651
     * 
652
     * @return An String containing the clipboard's data, or <code>null</code>
653
     *         if the data was not available.
654
     */
655
    @Override
656
    public String getFromClipboard() {
657
        
658
        try {
659
            Transferable t = Toolkit.getDefaultToolkit()
660
                    .getSystemClipboard()
661
                    .getContents(null);
662
            if(t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
663
                return (String) (t.getTransferData(DataFlavor.stringFlavor));
664
            }
665
        } catch (Exception e) {
666
            return null;
667
        }
668
        return null;
669
    }
670

    
671
}