davmail/archive/jsmooth-0.9.9-7-patch/src/net/charabia/jsmoothgen/application/JSmoothModelBean.java

409 lines
9.6 KiB
Java

/*
JSmooth: a VM wrapper toolkit for Windows
Copyright (C) 2003 Rodrigo Reyes <reyes@charabia.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
* JSmoothModelBean.java
*
* Created on 7 aout 2003, 18:32
*/
package net.charabia.jsmoothgen.application;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.Vector;
public class JSmoothModelBean {
private String m_skeletonName;
private String m_executableName;
private String m_currentDirectory;
private String m_iconLocation;
private boolean m_embedJar = false;
private String m_jarLocation;
private String m_mainClassName;
private String m_arguments;
private String[] m_classPath;
private String m_minimumVersion = "";
private String m_maximumVersion = "";
private String[] m_jvmSearch = null;
private int m_maxHeap = -1;
private int m_initialHeap = -1;
private String m_vmParamter;
private int m_uacRequireAdmin;
private String m_noJvmMessage;
private String m_noJvmURL;
private String m_bundledJVM = null;
private JavaPropertyPair[] m_javaprops = new JavaPropertyPair[0];
private JSmoothModelBean.Property[] m_skelproperties;
static public class Property {
public String Key;
public String Value;
public void setKey(String key) {
this.Key = key;
}
public String getKey() {
return this.Key;
}
public void setValue(String val) {
this.Value = val;
}
public String getValue() {
return this.Value;
}
public String toString() {
return getKey() + "==" + getValue();
}
}
transient Vector m_listeners = new Vector();
public static interface Listener {
public void dataChanged();
}
transient Vector m_skeletonChangedListener = new Vector();
public static interface SkeletonChangedListener {
public void skeletonChanged();
}
/**
* Creates a new instance of JSmoothModelBean
*/
public JSmoothModelBean() {
}
public void addListener(JSmoothModelBean.Listener l) {
m_listeners.add(l);
}
public void removeListener(JSmoothModelBean.Listener l) {
m_listeners.remove(l);
}
public void addSkeletonChangedListener(JSmoothModelBean.SkeletonChangedListener l) {
m_skeletonChangedListener.add(l);
}
public void removeSkeletonChangedListener(JSmoothModelBean.SkeletonChangedListener l) {
m_skeletonChangedListener.remove(l);
}
private void fireChanged() {
for (Iterator i = m_listeners.iterator(); i.hasNext();) {
JSmoothModelBean.Listener l = (JSmoothModelBean.Listener)i.next();
l.dataChanged();
}
}
private void fireSkeletonChanged() {
for (Iterator i = m_skeletonChangedListener.iterator(); i.hasNext();) {
JSmoothModelBean.SkeletonChangedListener l = (JSmoothModelBean.SkeletonChangedListener)i.next();
l.skeletonChanged();
}
}
public void setSkeletonName(String name) {
if (name != m_skeletonName) {
m_skeletonName = name;
fireSkeletonChanged();
fireChanged();
}
}
public String getSkeletonName() {
return m_skeletonName;
}
public void setExecutableName(String name) {
if (name != m_executableName) {
m_executableName = name;
fireChanged();
}
}
public void setCurrentDirectory(String curdir) {
if (curdir != m_currentDirectory) {
m_currentDirectory = curdir;
fireChanged();
}
}
public String getCurrentDirectory() {
return m_currentDirectory;
}
public String getExecutableName() {
return m_executableName;
}
public void setIconLocation(String name) {
if (name != m_iconLocation) {
m_iconLocation = name;
fireChanged();
}
}
public String getIconLocation() {
return m_iconLocation;
}
public boolean getEmbeddedJar() {
return m_embedJar;
}
public void setEmbeddedJar(boolean b) {
m_embedJar = b;
fireChanged();
}
public void setJarLocation(String name) {
if (name != m_jarLocation) {
m_jarLocation = name;
fireChanged();
}
}
public String getJarLocation() {
return m_jarLocation;
}
public void setMainClassName(String name) {
if (name != m_mainClassName) {
m_mainClassName = name;
fireChanged();
}
}
public String getMainClassName() {
return m_mainClassName;
}
public void setArguments(String args) {
m_arguments = args;
fireChanged();
}
public String getArguments() {
return m_arguments;
}
public void setClassPath(String[] cp) {
m_classPath = cp;
fireChanged();
}
public String[] getClassPath() {
return m_classPath;
}
public void setMaximumVersion(String version) {
m_maximumVersion = version;
fireChanged();
}
public String getMaximumVersion() {
return m_maximumVersion;
}
public void setMinimumVersion(String version) {
m_minimumVersion = version;
fireChanged();
}
public String getMinimumVersion() {
return m_minimumVersion;
}
public void setJVMSearchPath(String[] path) {
m_jvmSearch = path;
fireChanged();
}
public String[] getJVMSearchPath() {
return m_jvmSearch;
}
public void setSkeletonProperties(JSmoothModelBean.Property[] props) {
// for (int i=0; i<props.length; i++)
// System.out.println("SET PROPERTY: " + props[i].getIdName() + "=" + props[i].getValue());
m_skelproperties = props;
fireChanged();
}
public JSmoothModelBean.Property[] getSkeletonProperties() {
return m_skelproperties;
}
public void setNoJvmMessage(String msg) {
m_noJvmMessage = msg;
fireChanged();
}
public String getNoJvmMessage() {
return m_noJvmMessage;
}
public void setNoJvmURL(String url) {
m_noJvmURL = url;
fireChanged();
}
public String getNoJvmURL() {
return m_noJvmURL;
}
public String getBundledJVMPath() {
return m_bundledJVM;
}
public void setBundledJVMPath(String path) {
m_bundledJVM = path;
fireChanged();
}
public void setJavaProperties(JavaPropertyPair[] pairs) {
m_javaprops = pairs;
}
public JavaPropertyPair[] getJavaProperties() {
return m_javaprops;
}
public void setMaximumMemoryHeap(int size) {
m_maxHeap = size;
}
public int getMaximumMemoryHeap() {
return m_maxHeap;
}
public void setInitialMemoryHeap(int size) {
m_initialHeap = size;
}
public int getInitialMemoryHeap() {
return m_initialHeap;
}
public void setVmParameter(String parameter) {
m_vmParamter = parameter;
}
public String getVmParameter() {
return m_vmParamter;
}
public void setUacRequireAdministrator(int parameter) {
m_uacRequireAdmin = parameter;
}
public int getUacRequireAdministrator() {
return m_uacRequireAdmin;
}
public boolean isUacRequireAdmin() {
return m_uacRequireAdmin > 0;
}
public String[] normalizePaths(java.io.File filebase) {
return normalizePaths(filebase, true);
}
public String[] normalizePaths(java.io.File filebase, boolean toRelativePath) {
// System.out.println("Normalize Path " + filebase + " / " + toRelativePath);
Vector result = new Vector();
m_iconLocation = checkRelativePath(filebase, m_iconLocation, result, "Icon location", toRelativePath);
m_jarLocation = checkRelativePath(filebase, m_jarLocation, result, "Jar location", toRelativePath);
m_bundledJVM = checkRelativePath(filebase, m_bundledJVM, result, "Bundle JVM location", toRelativePath);
m_executableName = checkRelativePath(filebase, m_executableName, result, "Executable location", toRelativePath);
if (m_executableName != null) {
File exebase = new File(m_executableName);
if (exebase.isAbsolute() == false)
exebase = new File(filebase, exebase.toString()).getParentFile();
// System.out.println("EXE FILEBASE: " + exebase.toString());
if ((m_currentDirectory != null) && (m_currentDirectory.indexOf("${") >= 0))
m_currentDirectory = checkRelativePath(exebase, m_currentDirectory, result, "Current directory", toRelativePath);
}
if (m_classPath != null) {
for (int i = 0; i < m_classPath.length; i++) {
m_classPath[i] = checkRelativePath(filebase, m_classPath[i], result, "Classpath entry (" + i + ")", toRelativePath);
}
}
if (result.size() == 0)
return null;
String[] res = new String[result.size()];
result.toArray(res);
return res;
}
private String checkRelativePath(java.io.File root, String value, java.util.Vector errors, String name, boolean toRelativePath) {
if (value == null)
return value;
if (toRelativePath) {
File nf = JSmoothModelPersistency.makePathRelativeIfPossible(root, new File(value));
if (nf.isAbsolute()) {
errors.add(name);
}
return nf.toString();
} else {
File nf = new File(value);
if (nf.isAbsolute() == false) {
nf = new File(root, value);
nf = nf.getAbsoluteFile();
try {
nf = nf.getCanonicalFile();
nf = nf.getAbsoluteFile();
} catch (IOException iox) {
// do nothing
}
}
return nf.toString();
}
}
}