gvsig-scripting / org.gvsig.scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.app / org.gvsig.scripting.app.mainplugin / src / main / java / org / gvsig / scripting / app / extension / ScriptingMain.java @ 1063
History | View | Annotate | Download (6.44 KB)
1 | 1063 | jjdelcerro | package org.gvsig.scripting.app.extension; |
---|---|---|---|
2 | |||
3 | import java.io.File; |
||
4 | import java.net.URL; |
||
5 | import java.util.ArrayList; |
||
6 | import java.util.HashMap; |
||
7 | import java.util.List; |
||
8 | import java.util.Map; |
||
9 | import javax.swing.UIManager; |
||
10 | import org.apache.commons.cli.CommandLine; |
||
11 | import org.apache.commons.cli.CommandLineParser; |
||
12 | import org.apache.commons.cli.Options; |
||
13 | import org.apache.commons.cli.PosixParser; |
||
14 | import org.apache.commons.io.FileUtils; |
||
15 | import org.gvsig.about.AboutLocator; |
||
16 | import org.gvsig.about.AboutManager; |
||
17 | import org.gvsig.scripting.ScriptingManager; |
||
18 | import org.gvsig.scripting.swing.api.ScriptingSwingLocator; |
||
19 | import org.gvsig.scripting.swing.api.ScriptingUIManager; |
||
20 | import org.gvsig.tools.ToolsLocator; |
||
21 | import org.gvsig.tools.exception.BaseException; |
||
22 | import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
||
23 | import org.gvsig.tools.packageutils.PackageInfo; |
||
24 | import org.gvsig.tools.packageutils.PackageManager; |
||
25 | import org.gvsig.tools.packageutils.Version; |
||
26 | |||
27 | /**
|
||
28 | *
|
||
29 | * @author jjdelcerro
|
||
30 | */
|
||
31 | public class ScriptingMain { |
||
32 | |||
33 | private File applicationFolder = null; |
||
34 | private Version applicacionVersion = null; |
||
35 | private List<File> pluginsFolder = null; |
||
36 | private File applicationHomeFolder; |
||
37 | private File installFolder; |
||
38 | private int applicacionBuildNumber; |
||
39 | |||
40 | private ScriptingUtils utils;
|
||
41 | |||
42 | public static void main(String args[]) throws Exception { |
||
43 | ScriptingMain main = new ScriptingMain();
|
||
44 | main.doMain(args); |
||
45 | } |
||
46 | |||
47 | public File getApplicationFolder() { |
||
48 | if (applicationFolder == null) { |
||
49 | applicationFolder = new File(System.getProperty("user.dir")); |
||
50 | } |
||
51 | return applicationFolder;
|
||
52 | } |
||
53 | |||
54 | public File getApplicationHomeFolder() { |
||
55 | if (applicationHomeFolder == null) { |
||
56 | applicationHomeFolder = new File(System.getProperty("user.home")); |
||
57 | } |
||
58 | return applicationHomeFolder;
|
||
59 | } |
||
60 | |||
61 | public File getInstallFolder() { |
||
62 | if (installFolder == null) { |
||
63 | installFolder = FileUtils.getFile(getApplicationFolder(), "install");
|
||
64 | } |
||
65 | return this.installFolder; |
||
66 | } |
||
67 | |||
68 | public Version getApplicationVersion() throws BaseException { |
||
69 | if (applicacionVersion == null) { |
||
70 | PackageManager packageManager = ToolsLocator.getPackageManager(); |
||
71 | PackageInfo packageInfo = packageManager.createPackageInfo( |
||
72 | new File(this.applicationFolder, "package.info") |
||
73 | ); |
||
74 | applicacionVersion = (Version) packageInfo.getVersion(); |
||
75 | } |
||
76 | return applicacionVersion;
|
||
77 | } |
||
78 | |||
79 | public int getApplicationBuildNumber() throws BaseException { |
||
80 | if (applicacionBuildNumber == 0) { |
||
81 | applicacionBuildNumber = getApplicationVersion().getBuild(); |
||
82 | } |
||
83 | return this.applicacionBuildNumber; |
||
84 | } |
||
85 | |||
86 | public List<File> getPluginsFolder() { |
||
87 | List<File> folders = new ArrayList<>(); |
||
88 | folders.add(FileUtils.getFile(this.getApplicationFolder(), "gvSIG", "extensiones")); |
||
89 | folders.add(FileUtils.getFile(this.getApplicationHomeFolder(), "gvSIG", "installation", "gvSIG", "extensiones")); |
||
90 | return folders;
|
||
91 | } |
||
92 | |||
93 | public File getPluginHomeFolder() { |
||
94 | File f = this.getApplicationHomeFolder(); |
||
95 | f = FileUtils.getFile(f, "gvSIG", "plugins", "org.gvsig.scripting.app.mainplugin"); |
||
96 | return f;
|
||
97 | } |
||
98 | |||
99 | private void initializeAbout() throws Exception { |
||
100 | AboutManager aboutManager = AboutLocator.getManager(); |
||
101 | |||
102 | String build = String.valueOf(this.getApplicationBuildNumber()); |
||
103 | String version = this.getApplicationVersion().toString(); |
||
104 | |||
105 | Map<String, String> gvsig_vars = new HashMap<>(); |
||
106 | gvsig_vars.put("version", version);
|
||
107 | gvsig_vars.put("build", build);
|
||
108 | aboutManager.setProject( |
||
109 | "gvSIG Desktop",
|
||
110 | getResource("gvsig.html"),
|
||
111 | null,
|
||
112 | gvsig_vars); |
||
113 | aboutManager.getProject().set("build", build);
|
||
114 | |||
115 | aboutManager.addSponsor( |
||
116 | "Generalitat Valenciana",
|
||
117 | getResource("gva.html"),
|
||
118 | 1);
|
||
119 | |||
120 | aboutManager.addDeveloper( |
||
121 | "gvSIG Asocicion",
|
||
122 | getResource("gvSIG-asociacion.html"),
|
||
123 | 2);
|
||
124 | |||
125 | } |
||
126 | |||
127 | public void doMain(String args[]) throws Exception { |
||
128 | |||
129 | String lookAndFeel = "com.jgoodies.looks.plastic.PlasticXPLookAndFeel"; |
||
130 | try {
|
||
131 | UIManager.setLookAndFeel(lookAndFeel);
|
||
132 | } catch(Throwable th) { |
||
133 | |||
134 | } |
||
135 | |||
136 | new DefaultLibrariesInitializer().fullInitialize();
|
||
137 | |||
138 | initializeAbout(); |
||
139 | |||
140 | this.utils = new ScriptingUtils(); |
||
141 | this.utils.initializaPaths(
|
||
142 | this.getPluginsFolder(),
|
||
143 | this.getInstallFolder(),
|
||
144 | this.getPluginHomeFolder(),
|
||
145 | this.getApplicationVersion().format("%M.%m.%r") |
||
146 | ); |
||
147 | |||
148 | ScriptingUIManager uimanager = ScriptingSwingLocator.getUIManager(); |
||
149 | ScriptingManager manager = uimanager.getManager(); |
||
150 | |||
151 | Options options = new Options();
|
||
152 | options.addOption("d",
|
||
153 | "debug",
|
||
154 | false,
|
||
155 | "");
|
||
156 | options.addOption("p",
|
||
157 | "pause",
|
||
158 | false,
|
||
159 | "");
|
||
160 | options.addOption("l",
|
||
161 | "launcher",
|
||
162 | false,
|
||
163 | "Show the launcher window");
|
||
164 | options.addOption("c",
|
||
165 | "composer",
|
||
166 | false,
|
||
167 | "Show the composer window");
|
||
168 | options.addOption("r",
|
||
169 | "run",
|
||
170 | true,
|
||
171 | "Run the specified script");
|
||
172 | options.addOption("h",
|
||
173 | "home",
|
||
174 | true,
|
||
175 | "Specify for the home of the script framework");
|
||
176 | CommandLineParser parser = new PosixParser();
|
||
177 | CommandLine line = null;
|
||
178 | boolean runLauncherAtEnd = true; |
||
179 | |||
180 | line = parser.parse(options, args); |
||
181 | if (line.hasOption("home")) { |
||
182 | manager.setHomeFolder(new File(line.getOptionValue("home"))); |
||
183 | } |
||
184 | if (line.hasOption("composer")) { |
||
185 | runLauncherAtEnd = false;
|
||
186 | utils.runComposer(); |
||
187 | } |
||
188 | if (line.hasOption("run")) { |
||
189 | runLauncherAtEnd = false;
|
||
190 | utils.runScript(line.getOptionValue("run"), line.getArgs());
|
||
191 | } |
||
192 | if( runLauncherAtEnd ) {
|
||
193 | utils.runLauncher(); |
||
194 | } |
||
195 | } |
||
196 | |||
197 | private URL getResource(String name) { |
||
198 | URL resource = this.getClass().getResource(name); |
||
199 | return resource;
|
||
200 | } |
||
201 | |||
202 | } |