Revision 1754

View differences:

org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.lib/src/main/java/org/gvsig/tools/script/Script.java
1 1
package org.gvsig.tools.script;
2 2

  
3
/**
4
 * Represents a script with functions that can be invoked.
5
 * Implement the "equals" method so that it can be used to compare if 
6
 * two Script are the same. It also implements "hashCode".
7
 * 
8
 * You can insert variables in the script through the "put" method. 
9
 * @author jjdelcerro
10
 */
3 11
public interface Script {
12
    
4 13
    public String getName();
5 14
    public String getCode();
6 15
    public String getTypeName();
......
8 17
    public void put(String name, Object value);
9 18
    
10 19
    public Object invokeFunction(String funcname, Object[] args) throws NoSuchMethodException;
20

  
21
    @Override
22
    public boolean equals(Object obj);
23

  
24
    @Override
25
    public int hashCode();
26
    
11 27
}
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/dynclass/DefaultJModeler.java
93 93

  
94 94
    @Override
95 95
    public void showWindow(JComponent component, String tittle, MODE mode) {
96
        this.showWindow(component, tittle, mode, null);
96
        this.showWindow(component, tittle, mode, null, 0);
97 97
    }
98 98

  
99 99
    @Override
100 100
    public void showWindow(JComponent component, String tittle, MODE mode, Image icon) {
101
        this.showWindow(component, tittle, mode, icon, 0);
102
    }
103

  
104
    @Override
105
    public void showWindow(JComponent component, String tittle, MODE mode, Image icon, int flags) {
101 106
        final JInternalFrame frame = new JInternalFrame(tittle, true, true, true, true);
102 107
        frameCount++;
103 108
        frame.setLocation(xOffset * frameCount, yOffset * frameCount);
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/pickercontroller/FilePickerControllerImpl.java
1 1
package org.gvsig.tools.swing.impl.pickercontroller;
2 2

  
3
import java.awt.BorderLayout;
3 4
import java.awt.event.ActionEvent;
4 5
import java.awt.event.ActionListener;
5 6
import java.io.File;
......
7 8
import javax.swing.ImageIcon;
8 9
import javax.swing.JButton;
9 10
import javax.swing.JFileChooser;
11
import javax.swing.JLabel;
10 12
import javax.swing.JTextField;
11 13
import javax.swing.filechooser.FileFilter;
12 14
import org.apache.commons.lang3.ArrayUtils;
......
46 48
            ImageIcon icon = new ImageIcon(imageResource);
47 49
            theme.registerDefault("tools", "picker", "picker-file", icon, imageResource);
48 50
        }
51
        imageResource = DatePickerControllerImpl.class.getClassLoader().getResource("org/gvsig/tools/swing/picker/picker-cleartext.png");
52
        if (imageResource != null) {
53
            IconThemeManager iconThemeManager = ToolsSwingLocator.getIconThemeManager();
54
            IconTheme theme = iconThemeManager.getCurrent();
55
            ImageIcon icon = new ImageIcon(imageResource);
56
            theme.registerDefault("tools", "picker", "picker-cleartext", icon, imageResource);
57
        }
49 58
    }
59
    private final JButton btnClear;
50 60
    
51 61
    public FilePickerControllerImpl(JTextField txtFile, JButton btnFile, String dialogTitle) {
52 62
        this(txtFile, btnFile, dialogTitle, null, null, true);
......
79 89
                doSelectFile();
80 90
            }
81 91
        });
92
        this.btnClear = new JButton(getIcon("picker-cleartext"));
93
        btnClear.setBorderPainted( false );
94
        btnClear.setFocusPainted( false );
95
        btnClear.setContentAreaFilled( false );        
96
        btnClear.setOpaque(false);        
97
        btnClear.addActionListener(new ActionListener() {
98
            @Override
99
            public void actionPerformed(ActionEvent e) {
100
                doClear();
101
            }
102
        });
82 103
        this.txtFile.setEditable(false);
104
        this.txtFile.setLayout(new BorderLayout());
105
        this.txtFile.add(btnClear, BorderLayout.EAST);
106
        
83 107
    }
84 108

  
109
    private void doClear() {
110
        this.set(null);
111
    }
112
            
85 113
    @Override
86 114
    public boolean isEmpty() {
87 115
        return this.value==null;
......
95 123
    @Override
96 124
    public void set(File value) {
97 125
        this.value = value;
98
        this.txtFile.setText(value.toString());
126
        if( value==null ) {
127
            this.txtFile.setText("");
128
        } else {
129
            this.txtFile.setText(value.toString());
130
        }
99 131
    }
100 132

  
101 133
    @Override
102 134
    public void setEnabled(boolean enabled) {
103 135
        this.btnFile.setEnabled(enabled);
104 136
        this.txtFile.setEnabled(enabled);
137
        this.btnClear.setEnabled(enabled);
105 138
    }
106 139

  
107 140
    @Override
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/windowmanager/DefaultWindowManager.java
31 31
import javax.swing.JComponent;
32 32
import javax.swing.JDialog;
33 33
import javax.swing.JFrame;
34
import org.gvsig.tools.swing.api.ToolsSwingLocator;
35 34
import org.gvsig.tools.swing.api.windowmanager.Dialog;
36
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
37 35

  
38 36
import org.gvsig.tools.swing.api.windowmanager.WindowManager.MODE;
39 37
import static org.gvsig.tools.swing.api.windowmanager.WindowManager.MODE.DIALOG;
......
44 42
public class DefaultWindowManager implements WindowManager_v2 {
45 43

  
46 44
    @Override
47
    public void showWindow(JComponent component, String title, MODE mode, Image icon) {
48
        switch (mode) {
49
            case TOOL:
50
            case WINDOW:
51
                MyFrame frame = new MyFrame(title);
52
                frame.setContentPane(component);
53
                component.addComponentListener(frame);
54
                frame.setIconImage(icon);
55
                frame.pack();
56
                frame.setLocationRelativeTo(null);
57
                frame.setVisible(true);
58
                break;
59
            case DIALOG:
60
                MyJDialog dialog = new MyJDialog(title, true);
61

  
62
                dialog.setContentPane(component);
63
                component.addComponentListener(dialog);
64

  
65
                dialog.setIconImage(icon);
66
                dialog.pack();
67
                dialog.setLocationRelativeTo(null);
68
                dialog.setVisible(true);
69
                break;
70

  
71
        }
45
    public void showWindow(JComponent component, String title, MODE mode) {
46
        this.showWindow(component, title, mode, null, 0);
72 47
    }
73 48

  
74 49
    @Override
75
    public void showWindow(JComponent component, String title, MODE mode) {
50
    public void showWindow(JComponent component, String title, MODE mode, Image icon) {
51
        this.showWindow(component, title, mode, icon, 0);
52
    }
53
    
54
    @Override
55
    public void showWindow(JComponent component, String title, MODE mode, Image icon, int flags) {
76 56
        switch (mode) {
77 57
            case TOOL:
78 58
            case WINDOW:
79 59
                MyFrame frame = new MyFrame(title);
80
                //frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
81

  
82 60
                frame.setContentPane(component);
83 61
                component.addComponentListener(frame);
62
                if( icon!=null ) {
63
                    frame.setIconImage(icon);
64
                }
84 65
                frame.pack();
85 66
                frame.setLocationRelativeTo(null);
86 67
                frame.setVisible(true);
87 68
                break;
88 69
            case DIALOG:
89 70
                MyJDialog dialog = new MyJDialog(title, true);
90

  
91 71
                dialog.setContentPane(component);
92 72
                component.addComponentListener(dialog);
73
                if( icon!=null ) {
74
                    dialog.setIconImage(icon);
75
                }
93 76
                dialog.pack();
94 77
                dialog.setLocationRelativeTo(null);
95 78
                dialog.setVisible(true);
96 79
                break;
80

  
97 81
        }
98 82
    }
99 83

  
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/ToolsSwingDefaultImplLibrary.java
35 35
import org.gvsig.tools.swing.impl.pickercontroller.DatePickerControllerImpl;
36 36
import org.gvsig.tools.swing.impl.pickercontroller.FilePickerControllerImpl;
37 37
import org.gvsig.tools.swing.impl.pickercontroller.FolderPickerControllerImpl;
38
import org.gvsig.tools.swing.impl.script.DefaultScriptSwingManager;
38 39
import org.gvsig.tools.swing.impl.task.DefaultTaskStatusSwingManager;
39 40
import org.gvsig.tools.swing.impl.threadsafedialogs.DefaultThreadSafeDialogsManager;
40 41
import org.gvsig.tools.swing.impl.usability.DefaultUsabilitySwingManager;
......
70 71
        DatePickerControllerImpl.selfRegister();
71 72
        FilePickerControllerImpl.selfRegister();
72 73
        FolderPickerControllerImpl.selfRegister();
74
        
75
        DefaultScriptSwingManager.selfRegister();
73 76
    }
74 77

  
75 78
    @Override
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/script/ScriptListPickerController.java
1
package org.gvsig.tools.swing.impl.script;
2

  
3
import java.util.List;
4
import javax.swing.JButton;
5
import javax.swing.JComboBox;
6
import org.gvsig.tools.script.Script;
7
import org.gvsig.tools.swing.api.pickercontroller.AbstractPickerController;
8

  
9
/**
10
 *
11
 * @author jjdelcerro
12
 */
13
public class ScriptListPickerController extends AbstractPickerController<List<Script>> {
14
    private List<Script> scripts;
15
    private final JComboBox combo;
16
    private final JButton btnRemove;
17
    private final JButton btnChooser;
18
    
19
    public ScriptListPickerController(JComboBox combo, JButton remove, JButton chooser) {
20
        this.combo = combo;
21
        this.btnChooser = chooser;
22
        this.btnRemove = remove;
23
        
24
        this.combo.setEnabled(false);
25
        this.btnRemove.setEnabled(false);
26
        this.btnRemove.setIcon(this.getIcon("picker-script-remove"));
27
        this.btnRemove.setText("");
28
        this.btnChooser.setEnabled(false);
29
        this.btnChooser.setIcon(this.getIcon("picker-script"));
30
        this.btnChooser.setText("");
31
    }
32
    
33
    @Override
34
    public List<Script> get() {
35
        return this.scripts;
36
    }
37

  
38
    @Override
39
    public void set(List<Script> value) {
40
        this.scripts = value;
41
    }
42

  
43
    @Override
44
    public void coerceAndSet(Object value) {
45
        if( value instanceof List ) {
46
            this.scripts = (List<Script>) value;
47
            return;
48
        }
49
        String s = "null";
50
        if( value != null ) {
51
            s = value.getClass().getName();
52
        }
53
        throw new IllegalArgumentException("Can't coerce '"+s+"' to List of scripts.");
54
    }
55

  
56
    @Override
57
    public void setEnabled(boolean enabled) {
58
    }
59

  
60
    @Override
61
    public boolean isEnabled() {
62
        return false;
63
    }
64
    
65
}
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/script/ScriptPickerController.java
1
package org.gvsig.tools.swing.impl.script;
2

  
3
import javax.swing.JButton;
4
import javax.swing.JTextField;
5
import org.gvsig.tools.script.Script;
6
import org.gvsig.tools.swing.api.pickercontroller.AbstractPickerController;
7

  
8
/**
9
 *
10
 * @author jjdelcerro
11
 */
12
public class ScriptPickerController extends AbstractPickerController<Script> {
13
    private Script script;
14
    private final JTextField txtText;
15
    private final JButton btnChooser;
16
    
17
    public ScriptPickerController(JTextField text, JButton chooser) {
18
        this.txtText = text;
19
        this.btnChooser = chooser;
20
        
21
        this.txtText.setEditable(false);
22
        this.btnChooser.setEnabled(false);
23
        this.btnChooser.setIcon(this.getIcon("picker-script"));
24
        this.btnChooser.setText("");
25
    }
26
    
27
    @Override
28
    public Script get() {
29
        return this.script;
30
    }
31

  
32
    @Override
33
    public void set(Script value) {
34
        this.script = value;
35
    }
36

  
37
    @Override
38
    public void coerceAndSet(Object value) {
39
        if( value instanceof Script ) {
40
            this.script = (Script) value;
41
            return;
42
        }
43
        String s = "null";
44
        if( value != null ) {
45
            s = value.getClass().getName();
46
        }
47
        throw new IllegalArgumentException("Can't coerce '"+s+"' to Script.");
48
    }
49

  
50
    @Override
51
    public void setEnabled(boolean enabled) {
52
    }
53

  
54
    @Override
55
    public boolean isEnabled() {
56
        return false;
57
    }
58
    
59
}
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/script/DefaultScriptChooserPanel.java
1
package org.gvsig.tools.swing.impl.script;
2

  
3
import java.awt.BorderLayout;
4
import javax.swing.JComponent;
5
import javax.swing.JLabel;
6
import javax.swing.JPanel;
7
import org.gvsig.tools.ToolsLocator;
8
import org.gvsig.tools.i18n.I18nManager;
9
import org.gvsig.tools.script.Script;
10
import org.gvsig.tools.swing.api.script.ScriptSwingManager.ScriptChooserPanel;
11
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
12

  
13
/**
14
 *
15
 * @author jjdelcerro
16
 */
17
public class DefaultScriptChooserPanel 
18
        extends JPanel
19
        implements ScriptChooserPanel 
20
    {
21

  
22
    public DefaultScriptChooserPanel() {
23
        this.initComponents();
24
    }
25
    
26
    private void initComponents() {
27
        I18nManager i18n = ToolsLocator.getI18nManager();
28
        this.setLayout(new BorderLayout());
29
        this.add(new JLabel(i18n.getTranslation("_This_functionality_is_not_available")),BorderLayout.CENTER);
30
    }
31
    
32
    @Override
33
    public int showDialog() {
34
        return WindowManager_v2.BUTTON_CANCEL;      
35
    }
36

  
37
    @Override
38
    public Script getScript() {
39
        return null;
40
    }
41

  
42
    @Override
43
    public int getAction() {
44
        return WindowManager_v2.BUTTON_CANCEL;
45
    }
46

  
47
    @Override
48
    public JComponent asJComponent() {
49
        return this;
50
    }
51
    
52
}
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/script/DefaultScriptSwingManager.java
1
package org.gvsig.tools.swing.impl.script;
2

  
3
import java.net.URL;
4
import java.util.List;
5
import javax.swing.ImageIcon;
6
import javax.swing.JButton;
7
import javax.swing.JComboBox;
8
import javax.swing.JTextField;
9
import org.gvsig.tools.script.Script;
10
import org.gvsig.tools.swing.api.ToolsSwingLocator;
11
import org.gvsig.tools.swing.api.pickercontroller.PickerController;
12
import org.gvsig.tools.swing.api.script.ScriptSwingManager;
13
import org.gvsig.tools.swing.icontheme.IconTheme;
14
import org.gvsig.tools.swing.icontheme.IconThemeManager;
15
import org.gvsig.tools.swing.impl.pickercontroller.DatePickerControllerImpl;
16

  
17
/**
18
 *
19
 * @author jjdelcerro
20
 */
21
public class DefaultScriptSwingManager implements ScriptSwingManager {
22
    
23
    public static void selfRegister() {
24
        URL imageResource = DatePickerControllerImpl.class.getClassLoader().getResource("org/gvsig/tools/swing/picker/picker-script.png");
25
        if (imageResource != null) {
26
            IconThemeManager iconThemeManager = ToolsSwingLocator.getIconThemeManager();
27
            IconTheme theme = iconThemeManager.getCurrent();
28
            ImageIcon icon = new ImageIcon(imageResource);
29
            theme.registerDefault("tools", "picker", "picker-script", icon, imageResource);
30
        }
31
        imageResource = DatePickerControllerImpl.class.getClassLoader().getResource("org/gvsig/tools/swing/picker/picker-script-remove.png");
32
        if (imageResource != null) {
33
            IconThemeManager iconThemeManager = ToolsSwingLocator.getIconThemeManager();
34
            IconTheme theme = iconThemeManager.getCurrent();
35
            ImageIcon icon = new ImageIcon(imageResource);
36
            theme.registerDefault("tools", "picker", "picker-script-remove", icon, imageResource);
37
        }
38
        ToolsSwingLocator.registerDefaultScriptSwingManager(DefaultScriptSwingManager.class);
39
    }
40
    
41
    @Override
42
    public ScriptChooserPanel createScriptChooserPanel() {
43
        return new DefaultScriptChooserPanel();
44
    }
45

  
46
    @Override
47
    public PickerController<Script> createScriptPickerController(JTextField text, JButton chooser) {
48
        ScriptPickerController x = new ScriptPickerController(text, chooser);
49
        return x;
50
    }
51

  
52
    @Override
53
    public PickerController<List<Script>> createListScriptPickerController(JComboBox combo, JButton remove, JButton chooser) {
54
        ScriptListPickerController x = new ScriptListPickerController(combo, remove, chooser);
55
        return x;
56
    }
57
    
58
}
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/windowmanager/WindowManager_v2.java
19 19

  
20 20
    public void showWindow(JComponent componet, String tittle, MODE mode, Image icon);
21 21

  
22
    public void showWindow(JComponent component, String title, MODE mode, Image icon, int flags);
23

  
22 24
}
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/script/ScriptSwingManager.java
1
package org.gvsig.tools.swing.api.script;
2

  
3
import java.util.List;
4
import javax.swing.JButton;
5
import javax.swing.JComboBox;
6
import javax.swing.JTextField;
7
import org.gvsig.tools.script.Script;
8
import org.gvsig.tools.swing.api.Component;
9
import org.gvsig.tools.swing.api.pickercontroller.PickerController;
10

  
11
/**
12
 *
13
 * @author jjdelcerro
14
 */
15
public interface ScriptSwingManager {
16
    
17
    public interface ScriptChooserPanel extends Component {
18
        public int showDialog();
19
        
20
        public Script getScript();
21
        
22
        public int getAction();
23
    }
24
    
25
    public ScriptChooserPanel createScriptChooserPanel();
26
   
27
    public  PickerController<Script> createScriptPickerController(JTextField text, JButton chooser);
28

  
29
    public  PickerController<List<Script>> createListScriptPickerController(JComboBox combo, JButton remove, JButton chooser);
30
}
org.gvsig.tools/library/trunk/org.gvsig.tools/org.gvsig.tools.swing/org.gvsig.tools.swing.api/src/main/java/org/gvsig/tools/swing/api/ToolsSwingLocator.java
28 28
import org.gvsig.tools.locator.LocatorException;
29 29
import org.gvsig.tools.swing.api.evaluator.ComponentSwingManager;
30 30
import org.gvsig.tools.swing.api.reminder.DialogReminderManager;
31
import org.gvsig.tools.swing.api.script.ScriptSwingManager;
31 32
import org.gvsig.tools.swing.api.task.TaskStatusSwingManager;
32 33
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
33 34
import org.gvsig.tools.swing.api.usability.UsabilitySwingManager;
......
52 53
        "Tools Usability Swing Manager";
53 54

  
54 55
    private static final String TASKSTATUS_SWING_MANAGER_NAME = "Tools.task.swing.manager";
55

  
56 56
    private static final String TASKSTATUS_SWING_MANAGER_DESCRIPTION = "Tools Task Swing Manager";
57 57

  
58 58
    private static final String WINDOW_MANAGER_NAME = "Tools.swing.windowmanager";
......
78 78
    public static final String PLUGINS_DIALOGREMINDER_MANAGER_NAME = "DialogReminderManager";
79 79
    private static final String PLUGINS_DIALOGREMINDER_MANAGER_DESCRIPTION = "DialogReminderManager";
80 80

  
81

  
82
    private static final String SCRIPT_SWING_MANAGER_NAME = "Tools.script.swing.manager";
83
    private static final String SCRIPT_SWING_MANAGER_DESCRIPTION = "Tools Script Swing Manager";
84

  
81 85
    /**
82 86
     * Unique instance.
83 87
     */
......
297 301
            getInstance().registerDefault(PLUGINS_DIALOGREMINDER_MANAGER_NAME, PLUGINS_DIALOGREMINDER_MANAGER_DESCRIPTION,
298 302
        clazz);
299 303
    }
304

  
305
    public static ScriptSwingManager getScriptSwingManager() throws LocatorException {
306
        return (ScriptSwingManager) (DialogReminderManager) getInstance().get(SCRIPT_SWING_MANAGER_NAME);
307
    }
308

  
309
    public static void registerScriptSwingManager(Class clazz) {
310
        getInstance().register(SCRIPT_SWING_MANAGER_NAME, SCRIPT_SWING_MANAGER_DESCRIPTION,
311
                clazz);
312
    }
313

  
314
    public static void registerDefaultScriptSwingManager(Class clazz) {
315
            getInstance().registerDefault(
316
                    SCRIPT_SWING_MANAGER_NAME, 
317
                    SCRIPT_SWING_MANAGER_DESCRIPTION,
318
                    clazz
319
            );
320
    }
321

  
300 322
}

Also available in: Unified diff