Initial commit of the v4.5.0 opensource release of WebOS Quick Install

This commit is contained in:
Jason Robitaille committed 2013-03-08 22:31:21 -06:00
commit a1c1a4b85c
72 files changed
+16940

No files matched your search

+15
View File
@@ -0,0 +1,15 @@
== Simplified BSD *** MODIFIED FOR NON-COMMERCIAL USE ONLY!!! *** ==
WebOS Quick Install
Copyright (c) 2009-2013, Jason Robitaille www.canuckcoding.ca
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Any redistribution, use, or modification is done solely for personal benefit and not for any commercial purpose or for monetary gain
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Binary file not shown.
+74
View File
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See commented blocks below for -->
<!-- some examples of how to customize the build. -->
<!-- (If you delete it and reopen the project it will be recreated.) -->
<!-- By default, only the Clean and Build commands use this build script. -->
<!-- Commands such as Run, Debug, and Test only use this build script if -->
<!-- the Compile on Save feature is turned off for the project. -->
<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
<!-- in the project's Project Properties dialog box.-->
<project name="WebOS_Quick_Install_v4" default="default" basedir=".">
<description>Builds, tests, and runs the project WebOS Quick Install v4.</description>
<import file="nbproject/build-impl.xml"/>
<!--
There exist several targets which are by default empty and which can be
used for execution of your tasks. These targets are usually executed
before and after some main targets. They are:
-pre-init: called before initialization of project properties
-post-init: called after initialization of project properties
-pre-compile: called before javac compilation
-post-compile: called after javac compilation
-pre-compile-single: called before javac compilation of single file
-post-compile-single: called after javac compilation of single file
-pre-compile-test: called before javac compilation of JUnit tests
-post-compile-test: called after javac compilation of JUnit tests
-pre-compile-test-single: called before javac compilation of single JUnit test
-post-compile-test-single: called after javac compilation of single JUunit test
-pre-jar: called before JAR building
-post-jar: called after JAR building
-post-clean: called after cleaning build products
(Targets beginning with '-' are not intended to be called on their own.)
Example of inserting an obfuscator after compilation could look like this:
<target name="-post-compile">
<obfuscate>
<fileset dir="${build.classes.dir}"/>
</obfuscate>
</target>
For list of available properties check the imported
nbproject/build-impl.xml file.
Another way to customize the build is by overriding existing main targets.
The targets of interest are:
-init-macrodef-javac: defines macro for javac compilation
-init-macrodef-junit: defines macro for junit execution
-init-macrodef-debug: defines macro for class debugging
-init-macrodef-java: defines macro for class execution
-do-jar-with-manifest: JAR building (if you are using a manifest)
-do-jar-without-manifest: JAR building (if you are not using a manifest)
run: execution of project
-javadoc-build: Javadoc generation
test-report: JUnit report generation
An example of overriding the target for project execution could look like this:
<target name="run" depends="WebOS_Quick_Install_v4-impl.jar">
<exec dir="bin" executable="launcher.exe">
<arg file="${dist.jar}"/>
</exec>
</target>
Notice that the overridden target depends on the jar target and not only on
the compile target as the regular run target does. Again, for a list of available
properties which you can use, check the target you are overriding in the
nbproject/build-impl.xml file.
-->
</project>
File diff suppressed because it is too large. Load diff
+8
View File
@@ -0,0 +1,8 @@
build.xml.data.CRC32=daa99d1c
build.xml.script.CRC32=07fb21b2
build.xml.stylesheet.CRC32=28e38971@1.56.1.46
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=daa99d1c
nbproject/build-impl.xml.script.CRC32=6a017077
nbproject/build-impl.xml.stylesheet.CRC32=c6d2a60f@1.56.1.46
+81
View File
@@ -0,0 +1,81 @@
application.desc=An advanced tool for installing and managine packages on webOS devices.
application.homepage=http://canuckcoding.ca
application.splash=
application.title=WebOS Quick Install
application.vendor=Jason Robitaille
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
build.generated.sources.dir=${build.dir}/generated-sources
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
debug.classpath=\
${run.classpath}
debug.test.classpath=\
${run.test.classpath}
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/WebOS Quick Install v4.jar
dist.javadoc.dir=${dist.dir}/javadoc
excludes=
file.reference.filedrop.jar=C:\\Users\\Jason\\NetBeansProjects\\filedrop.jar
file.reference.json.jar=C:\\Users\\Jason\\NetBeansProjects\\json.jar
file.reference.tar.jar=C:\\Users\\Jason\\NetBeansProjects\\tar.jar
file.reference.webOSLib.jar=C:\\Users\\Jason\\NetBeansProjects\\webOSLib.jar
includes=**
jar.compress=false
javac.classpath=\
${libs.swing-app-framework.classpath}:\
${libs.swing-layout.classpath}:\
${file.reference.filedrop.jar}:\
${file.reference.tar.jar}:\
${file.reference.json.jar}:\
${file.reference.webOSLib.jar}
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
javac.source=1.5
javac.target=1.5
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}:\
${libs.junit.classpath}:\
${libs.junit_4.classpath}
javadoc.additionalparam=
javadoc.author=false
javadoc.encoding=${source.encoding}
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=false
javadoc.splitindex=true
javadoc.use=true
javadoc.version=false
javadoc.windowtitle=
jnlp.codebase.type=local
jnlp.codebase.url=file:/C:/Users/Jason/NetBeansProjects/WebOS%20Quick%20Install%20v4/dist/
jnlp.descriptor=application
jnlp.enabled=false
jnlp.offline-allowed=false
jnlp.signed=false
main.class=ca.canucksoftware.wosqi.WebOSQuickInstallApp
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
platform.active=default_platform
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
# or test-sys-prop.name=value to set system properties for unit tests):
run.jvmargs=
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
source.encoding=UTF-8
src.dir=src
test.src.dir=test
+19
View File
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.java.j2seproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
<name>WebOS Quick Install v4</name>
<minimum-ant-version>1.6.5</minimum-ant-version>
<source-roots>
<root id="src.dir"/>
</source-roots>
<test-roots>
<root id="test.src.dir"/>
</test-roots>
</data>
<swingapp xmlns="http://www.netbeans.org/ns/form-swingapp/1">
<application-class name="ca.canucksoftware.wosqi.WebOSQuickInstallApp"/>
</swingapp>
</configuration>
</project>
@@ -0,0 +1 @@
ca.canucksoftware.wosqi.WebOSQuickInstallApp
@@ -0,0 +1,140 @@
package ca.canucksoftware.ipkg;
import ca.canucksoftware.utils.OnlineFile;
import ca.canucksoftware.webos.InstalledEntry;
import java.text.DateFormat;
import java.util.Date;
import java.util.regex.Pattern;
import org.json.JSONObject;
/**
* @author Jason Robitaille
*/
public class PackageEntry {
public String name;
public String id;
public String version;
public String developer;
public long size;
public String md5sum;
public JSONObject source;
public String[] depends;
public String arch;
public String file;
public PackageEntry() {
name = null;
id = null;
version = null;
developer = null;
size = 0;
md5sum = null;
source = null;
depends = null;
arch = null;
file = null;
}
public boolean newerThan(PackageEntry app) {
return isGreaterVersionThan(app.version);
}
public boolean isUpdate(InstalledEntry app) {
return isGreaterVersionThan(app.getVersion());
}
private boolean isGreaterVersionThan(String otherVersion) {
boolean result = false;
Pattern p = Pattern.compile("[.-]");
String[] self = p.split(version);
String[] other = p.split(otherVersion);
for(int i=0; i<other.length; i++) {
int selfVal = Integer.parseInt(self[i]);
int otherVal = Integer.parseInt(other[i]);
if(selfVal > otherVal) {
result = true;
break;
} else if (selfVal < otherVal) {
result = false;
break;
}
if(self.length-1==i && other.length-1>i) {
otherVal = Integer.parseInt(other[i+1]);
if(otherVal>=0) {
result = false;
} else {
result = true;
}
break;
}
if(other.length-1==i && self.length-1>i) {
selfVal = Integer.parseInt(self[i+1]);
if(selfVal>0) {
result = true;
} else {
result = false;
}
result = true;
break;
}
}
return result;
}
public String getDownloadUrl() {
String url = null;
OnlineFile online;
if(source!=null) {
if(source.has("Location")) {
try {
online = new OnlineFile(source.getString("Location"));
if(online.exists()) {
url = online.toString();
}
} catch(Exception e) {}
}
}
if((url==null) && (file!=null)) {
online = new OnlineFile(file);
if(online.exists()) {
url = online.toString();
} else {
url = null;
}
}
return url;
}
public String getFormattedDate() {
String result = null;
if(source!=null) {
if(source.has("LastUpdated")) {
try {
Date d = new Date(Long.parseLong(source
.getString("LastUpdated"))*1000);
result = DateFormat.getDateTimeInstance().format(d);
} catch(Exception e) {}
}
}
return result;
}
@Override
public String toString() {
return name;
}
@Override
public boolean equals(Object o) {
boolean result = false;
if(o instanceof String) {
String currId = (String) o;
result = currId.equals(id);
} else if(o instanceof PackageEntry) {
PackageEntry pkgCurr = (PackageEntry) o;
result = pkgCurr.id.equals(id);
}
return result;
}
}
+135
View File
@@ -0,0 +1,135 @@
/*
* PackageFeed.java
*/
package ca.canucksoftware.ipkg;
import ca.canucksoftware.utils.OnlineFile;
import java.util.ArrayList;
import java.io.File;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.zip.GZIPInputStream;
import org.json.JSONObject;
public class PackageFeed {
public ArrayList<PackageEntry> packages;
private File feed;
private String urlBase;
public PackageFeed(File f, String base){
feed = f;
urlBase = base;
packages = new ArrayList(0);
scan();
}
private void scan() {
BufferedReader input = null;
packages.clear();
try {
if(feed.getName().toLowerCase().endsWith(".gz")) {
input = new BufferedReader(new InputStreamReader(
new GZIPInputStream(new FileInputStream(feed)), "UTF-8"));
} else {
input = new BufferedReader(new InputStreamReader(
new FileInputStream(feed), "UTF-8"));
}
} catch(Exception e) {
System.err.println("Error opening package list " + feed.getAbsolutePath());
input = null;
}
if(input!=null) {
try {
String line = input.readLine();
while(line!=null) {
PackageEntry curr = new PackageEntry();
line = line.trim();
while(!line.equals("")) {
if(!line.endsWith(":")) {
if(line.startsWith("Package")) {
curr.id = line.substring(line.indexOf(":")+1).trim();
} else if(line.startsWith("Description")){
curr.name =line.substring(line.indexOf(":")+1).trim();
} else if(line.startsWith("Version")){
curr.version = line.substring(line.indexOf(":")+1).trim();
} else if(line.startsWith("Depends")) {
curr.depends = line.substring(line.indexOf(":")+1).split(",");
for(int i=0; i<curr.depends.length; i++) {
curr.depends[i] = curr.depends[i].trim();
}
} else if(line.startsWith("Maintainer")){
curr.developer = line.substring(line.indexOf(":")+1)
.replaceAll("\\<.*?\\>", "").trim();
} else if(line.startsWith("Size")) {
String size = line.substring(line.indexOf(":")+1).trim();
if(size.length()>0) {
curr.size = Long.parseLong(size);
}
} else if(line.startsWith("Architecture")) {
curr.arch = line.substring(line.indexOf(":")+1).trim().toLowerCase();
} else if(line.startsWith("MD5Sum")) {
curr.md5sum = line.substring(line.indexOf(":")+1).trim();
} else if(line.startsWith("Filename")) {
curr.file = urlBase + line.substring(line.indexOf(":")+1).trim();
} else if(line.startsWith("Source")) {
try {
curr.source = new JSONObject(line.substring(line.indexOf(":")+1).trim());
} catch(Exception e) {
if(curr.id!=null) {
System.err.println("Error reading source JSON of " + curr.id);
curr.id = null;
break;
}
}
}
}
line = input.readLine();
}
if(curr.id!=null && curr.name!=null) {
if(!packages.contains(curr)) {
packages.add(curr);
}
}
line = input.readLine();
}
} catch(Exception e) {
System.err.println("Error parsing package feed: " + e.getMessage());
}
}
if(input!=null)
try {
input.close();
} catch(Exception e) {}
}
public int indexOf(String id) {
int index = -1;
for(int i=0; i<packages.size(); i++) {
if(packages.get(i).id.equalsIgnoreCase(id)) {
index = i;
break;
}
}
return index;
}
public static PackageFeed Download(String url) {
PackageFeed result = null;
String base = null;
int index = url.lastIndexOf("/");
if(index>-1) {
base = url.substring(0, index+1);
}
OnlineFile online = new OnlineFile(url);
File f = online.download();
if(f==null) { //2nd try if 1st failed
f = online.download();
}
if(base!=null && f!=null) {
result = new PackageFeed(f, base);
}
return result;
}
}
@@ -0,0 +1,26 @@
package ca.canucksoftware.ipkg;
/**
* @author Jason Robitaille
*/
public enum PackageFilter {
Applications("Application"),
Kernels("Kernel"),
Linux_Apps("Linux Application"),
Linux_Daemons("Linux Daemon"),
Patches("Patch"),
Plugins("Plugin"),
Services("Service"),
Themes("Theme"),
None(null);
private String type;
PackageFilter(String val) {
type = val;
}
@Override
public String toString() {
return type;
}
}
@@ -0,0 +1,323 @@
package ca.canucksoftware.ipkg;
import ca.canucksoftware.webos.InstalledEntry;
import ca.canucksoftware.webos.DeviceInfo;
import ca.canucksoftware.wosqi.WebOSQuickInstallApp;
import java.util.ArrayList;
import java.util.Collections;
import java.util.ResourceBundle;
import java.util.prefs.Preferences;
import javax.swing.JTextArea;
import org.json.JSONArray;
/**
* @author Jason Robitaille
*/
public class PackageManager {
public final String ALL_CATEGORIES;
private final String[] defaultFeeds;
private boolean[] feedStates;
private String[] feedUrls;
private PackageFeed[] feeds;
private ArrayList<PackageEntry> packages;
private ArrayList<PackageEntry> filtered;
private ArrayList<InstalledEntry> installed;
private DeviceInfo device;
private JTextArea label;
private ResourceBundle bundle;
public PackageManager(DeviceInfo info, ArrayList<InstalledEntry> apps) {
this(info, apps, null);
}
public PackageManager(DeviceInfo info, ArrayList<InstalledEntry> apps, JTextArea display) {
device = info;
installed = apps;
label = display;
bundle = WebOSQuickInstallApp.bundle;
ALL_CATEGORIES = "--" + bundle.getString("ALL") + "--";
defaultFeeds = new String[] {
"http://ipkg.preware.org/feeds/precentral/Packages.gz",
"http://ipkg.preware.org/feeds/webos-internals/all/Packages.gz",
"http://ipkg.preware.org/feeds/webos-internals/" + device.arch() + "/Packages.gz",
"http://ipkg.preware.org/feeds/webos-patches/" + device.version() + "/Packages.gz",
"http://ipkg.preware.org/feeds/webos-kernels/" + device.version() + "/Packages.gz",
"http://www.prethemer.com/feeds/preware/themes/Packages.gz",
"http://ipkg.preware.org/feeds/precentral-themes/Packages.gz",
"http://webos-clock-themer.googlecode.com/svn/trunk/WebOS%20Clock%20Theme%20Builder/feed/Packages.gz"
};
Preferences prefs = Preferences.systemRoot();
int numFeeds = prefs.getInt("numCustomFeeds", 0);
feedStates = new boolean[defaultFeeds.length + numFeeds];
feedUrls = new String[defaultFeeds.length + numFeeds];
for(int i=0; i<defaultFeeds.length; i++) {
feedStates[i] = prefs.getBoolean("defaultFeedState-" + i, true);
}
feeds = new PackageFeed[defaultFeeds.length + numFeeds];
packages = new ArrayList(0);
for(int i=0; i<defaultFeeds.length; i++) {
feedUrls[i] = defaultFeeds[i];
if(feedStates[i]) {
System.out.println("Downloading and parsing: " + feedUrls[i]);
if(label!=null) {
label.setText(feedUrls[i]);
}
feeds[i] = PackageFeed.Download(feedUrls[i]);
if(feeds[i]!=null) {
addToPackages(feeds[i].packages);
} else {
System.err.println("Failed to load feed: " + feedUrls[i]);
}
}
}
for(int i=defaultFeeds.length; i<feedUrls.length; i++) {
String currUrl = prefs.get("customfeed" + (i-defaultFeeds.length), null);
if(currUrl!=null) {
feedUrls[i] = currUrl;
feedStates[i] = prefs.getBoolean("customFeedState-" + (i-defaultFeeds.length), true);
if(feedStates[i]) {
System.out.println("Downloading and parsing: " + feedUrls[i]);
if(label!=null) {
label.setText(feedUrls[i]);
}
feeds[i] = PackageFeed.Download(feedUrls[i]);
if(feeds[i]!=null) {
addToPackages(feeds[i].packages);
} else {
System.err.println("Failed to load feed: " + feedUrls[i]);
}
}
}
}
Collections.sort(packages, new PackageSorter(true));
filtered = packages;
}
private void addToPackages(ArrayList<PackageEntry> list) {
for(int i=0; i<list.size(); i++) {
PackageEntry curr = list.get(i);
int index = indexOf(curr.id);
if(index>-1) {
PackageEntry existing = packages.get(index);
if(curr.newerThan(existing)) {
packages.set(index, curr);
}
} else {
packages.add(curr);
}
}
}
public PackageEntry getEntryById(String id) {
PackageEntry result = null;
int index = indexOf(id);
if(index>-1) {
result = packages.get(index);
}
return result;
}
private int indexOf(String id) {
int result = -1;
for(int i=0; i<packages.size(); i++) {
if(packages.get(i).id.equals(id)) {
result = i;
break;
}
}
return result;
}
public void setFilter(PackageFilter filter) {
filtered = new ArrayList(0);
for(int i=0; i<packages.size(); i++) {
PackageEntry curr = (PackageEntry) packages.get(i);
if(filter==PackageFilter.None) {
filtered.add(curr);
} else {
String type = PackageFilter.Applications.toString();
if(curr.source!=null) {
if(curr.source.has("Type")) {
try {
type = curr.source.getString("Type");
} catch(Exception e) {}
}
}
if(type.equals(filter.toString())) {
filtered.add(curr);
}
}
}
}
public ArrayList<String> getCategories() {
ArrayList<String> result = new ArrayList(0);
result.add(ALL_CATEGORIES);
for(int i=0; i<filtered.size(); i++) {
PackageEntry curr = filtered.get(i);
if(curr.source!=null) {
if(curr.source.has("Category")) {
try {
String category = curr.source.getString("Category");
if(category.length()>0 &&
!category.toLowerCase().equals("unavailable")) {
if(!result.contains(category)) {
result.add(category);
}
}
} catch(Exception e) {}
}
}
}
Collections.sort(result);
return result;
}
public ArrayList<PackageEntry> getPackagesByCategory(String category) {
return getPackagesByCategory(category, false);
}
public ArrayList<PackageEntry> getPackagesByCategory(String category,
boolean includeInstalled) {
ArrayList<PackageEntry> results = new ArrayList(0);
for(int i=0; i<filtered.size(); i++) {
PackageEntry curr = filtered.get(i);
if(category.equals(ALL_CATEGORIES)) {
if(okToAdd(curr, includeInstalled)) {
results.add(curr);
}
} else {
if(curr.source!=null) {
if(curr.source.has("Category")) {
try {
String currCategory = curr.source.getString("Category");
if(currCategory.equals(category)) {
if(okToAdd(curr, includeInstalled)) {
results.add(curr);
}
}
} catch(Exception e) {}
}
}
}
}
return results;
}
private boolean okToAdd(PackageEntry item, boolean includeInstalled) {
boolean result = true;
if(!includeInstalled) {
result &= (installed.indexOf(new InstalledEntry(item.id))==-1);
}
result &= item.arch.equals(device.arch()) || item.arch.equals("any") ||
item.arch.equals("all") || device.arch().startsWith(item.arch);
if(result && item.source!=null) {
if(item.source.has("DeviceCompatibility")) {
try {
String deviceName = device.model().replace("Palm ", "").replace(" ", "");
JSONArray array = item.source.getJSONArray("DeviceCompatibility");
result &= array.toString().contains(deviceName);
} catch(Exception e) {}
}
String[] deviceVer = device.version().split("\\.");
if(result && item.source.has("MinWebOSVersion")) {
try {
String[] min = item.source.getString("MinWebOSVersion").split("\\.");
for(int i=0; i<min.length; i++) {
int verVal = Integer.parseInt(deviceVer[i]);
int minVal = Integer.parseInt(min[i]);
if(verVal > minVal) {
result &= true;
break;
} else if (verVal < minVal) {
result &= false;
break;
}
if(deviceVer.length-1==i && min.length-1>i) {
minVal = Integer.parseInt(min[i+1]);
if(minVal>0) {
result &= false;
} else {
result &= true;
}
break;
}
if(min.length-1==i && deviceVer.length-1>i) {
result &=true;
break;
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
if(result && item.source.has("MaxWebOSVersion")) {
try {
String[] max = item.source.getString("MaxWebOSVersion").split("\\.");
for(int i=0; i<max.length; i++) {
int verVal = Integer.parseInt(deviceVer[i]);
int maxVal = Integer.parseInt(max[i]);
if(verVal < maxVal) {
result &= true;
break;
} else if (verVal > maxVal) {
result &= false;
break;
}
if(deviceVer.length-1==i && max.length-1>i) {
result &= true;
break;
}
if(max.length-1==i && deviceVer.length-1>i) {
verVal = Integer.parseInt(deviceVer[i+1]);
if(verVal>0) {
result &= false;
} else {
result &= true;
}
break;
}
}
} catch(Exception e) {}
}
if(result && item.source.has("Category")) {
try {
String category = item.source.getString("Category");
if(category.toLowerCase().equals("unavailable")) {
result &= false;
}
} catch(Exception e) {}
}
}
return result;
}
public ArrayList<PackageEntry> getUpdates() {
ArrayList<PackageEntry> results = new ArrayList(0);
for(int i=0; i<packages.size(); i++) {
PackageEntry curr = (PackageEntry) packages.get(i);
int index = installed.indexOf(new InstalledEntry(curr.id));
if(index>-1) {
if(curr.isUpdate(installed.get(index))) {
results.add(curr);
}
}
}
return results;
}
public void setInstalledAppList(ArrayList<InstalledEntry> apps) {
installed = apps;
}
public boolean hasPackages() {
return (packages.size()>0);
}
public boolean isInstalled(PackageEntry pkg) {
return installed.contains(new InstalledEntry(pkg.id));
}
}
@@ -0,0 +1,30 @@
package ca.canucksoftware.ipkg;
import java.util.Comparator;
/**
* @author Jason Robitaille
*/
public class PackageSorter implements Comparator {
boolean ascending;
PackageSorter(boolean ascending) {
this.ascending = ascending;
}
public int compare(Object a, Object b) {
int i;
PackageEntry data1 = (PackageEntry)a;
PackageEntry data2 = (PackageEntry)b;
if (ascending) {
i = data1.name.compareToIgnoreCase(data2.name);
if(i==0)
i = data1.id.compareToIgnoreCase(data2.id);
} else {
i = data2.name.compareToIgnoreCase(data1.name);
if(i==0)
i = data2.id.compareToIgnoreCase(data1.id);
}
return i;
}
}
+101
View File
@@ -0,0 +1,101 @@
package ca.canucksoftware.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.jdesktop.application.Application;
/**
*
* @author Jason
*/
public class FileUtils {
public static File appDirectory() {
File app, dir;
try {
app = new File(Application.getInstance()
.getClass().getProtectionDomain().getCodeSource().getLocation().toURI());
dir = app.getParentFile();
} catch(Exception e) {
app = new File(Application.getInstance().getClass().getProtectionDomain()
.getCodeSource().getLocation()
.getPath().replaceAll("%20", " "));
dir = app.getParentFile();
}
return dir;
}
public static void copy(File from, File to) throws IOException {
FileInputStream fis = new FileInputStream(from);
FileOutputStream fos = new FileOutputStream(to);
try {
byte[] buf = new byte[1024];
int i = 0;
while ((i = fis.read(buf)) != -1) {
fos.write(buf, 0, i);
}
} catch (IOException e) {
throw e;
} finally {
if (fis != null)
fis.close();
if (fos != null)
fos.close();
}
}
public static String getFilename(File file) {
return getFilename(file.getName());
}
public static String getFilename(String file) {
String name = file;
int index = name.lastIndexOf("\\");
if(index>-1) {
name = name.substring(index+1, name.length());
} else {
index = name.lastIndexOf("/");
if(index>-1)
name = name.substring(index+1, name.length());
}
return name;
}
public static String formatFilesize(File file) {
return formatFilesize(file.length());
}
public static String formatFilesize(long size) {
String result = "";
if(size<1000) { //bytes
result = size + "B";
} else if((size/1024)<1000) { //kilobytes
result = roundNicely(((double)size)/1024.0) + "KB";
} else {
result = roundNicely((((double)size)/1024.0)/1024.0) + "MB";
}
return result;
}
private static String roundNicely(double dbl) {
long rounded = Math.round((dbl*100.0));
String result = String.valueOf(((double)rounded)/100.0);
if(dbl<10) {
result = String.valueOf(Math.round(dbl*100.0)/100.0);
} else if(dbl<100) {
result = String.valueOf(Math.round(dbl*10.0)/10.0);
} else {
result = String.valueOf(((long)dbl));
}
if(result.endsWith(".0")) {
result = result.replace(".0", "");
}
return result;
}
public static String getMD5Sum(File file) {
return MD5.getMD5Checksum(file);
}
}
+55
View File
@@ -0,0 +1,55 @@
package ca.canucksoftware.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.security.MessageDigest;
/**
* @author Jason Robitaille
*/
public class MD5 {
private static final byte[] HEX_CHAR_TABLE = {
(byte)'0', (byte)'1', (byte)'2', (byte)'3',
(byte)'4', (byte)'5', (byte)'6', (byte)'7',
(byte)'8', (byte)'9', (byte)'a', (byte)'b',
(byte)'c', (byte)'d', (byte)'e', (byte)'f'
};
public static byte[] createChecksum(File f) throws Exception {
InputStream fis = new FileInputStream(f);
byte[] buffer = new byte[2048];
MessageDigest complete = MessageDigest.getInstance("MD5");
int numRead;
do {
numRead = fis.read(buffer);
if (numRead > 0) {
complete.update(buffer, 0, numRead);
}
} while (numRead != -1);
fis.close();
return complete.digest();
}
public static String getMD5Checksum(File f) {
String result = null;
try {
byte[] raw = createChecksum(f);
result = getHexString(raw);
} catch(Exception e) {}
return result;
}
private static String getHexString(byte[] raw) throws Exception {
byte[] hex = new byte[2 * raw.length];
int index = 0;
for (byte b : raw) {
int v = b & 0xFF;
hex[index++] = HEX_CHAR_TABLE[v >>> 4];
hex[index++] = HEX_CHAR_TABLE[v & 0xF];
}
return new String(hex, "ASCII");
}
}
+205
View File
@@ -0,0 +1,205 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
<Property name="modal" type="boolean" value="true"/>
<Property name="name" type="java.lang.String" value="aboutBox" noResource="true"/>
<Property name="resizable" type="boolean" value="false"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="keyPressed" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="formKeyPressed"/>
<EventHandler event="keyTyped" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="formKeyTyped"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" alignment="0" pref="350" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" alignment="0" pref="341" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane1">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="c0" green="c0" red="c0" type="rgb"/>
</Property>
<Property name="name" type="java.lang.String" value="jLayeredPane1" noResource="true"/>
<Property name="opaque" type="boolean" value="true"/>
</Properties>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JButton" name="closeButton">
<Properties>
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
<action class="ca.canucksoftware.WebOSQuickInstallAboutBox" id="closeAboutBox" methodName="closeAboutBox"/>
</Property>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="c0" green="c0" red="c0" type="rgb"/>
</Property>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="closeButton" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="About.closeButton.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="focusable" type="boolean" value="false"/>
<Property name="name" type="java.lang.String" value="closeButton" noResource="true"/>
</Properties>
<Events>
<EventHandler event="keyTyped" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="closeButtonKeyTyped"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="130" y="310" width="90" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel5">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel5" italic="true" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="horizontalAlignment" type="int" value="0"/>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/ca/canucksoftware/wosqi/resources/donate.gif"/>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="About.jLabel5.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="horizontalTextPosition" type="int" value="0"/>
<Property name="name" type="java.lang.String" value="jLabel5" noResource="true"/>
<Property name="verticalTextPosition" type="int" value="1"/>
</Properties>
<Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jLabel5MouseClicked"/>
<EventHandler event="mouseMoved" listener="java.awt.event.MouseMotionListener" parameters="java.awt.event.MouseEvent" handler="jLabel5MouseMoved"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="120" width="330" height="50" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="horizontalAlignment" type="int" value="0"/>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/ca/canucksoftware/wosqi/resources/title.png"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="0" y="0" width="350" height="60" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel6">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel6" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="About.jLabel6.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel6" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="200" width="310" height="110" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="appVersionLabel">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font bold="true" component="appVersionLabel" property="font" relativeSize="true" size="5"/>
</FontInfo>
</Property>
<Property name="horizontalAlignment" type="int" value="0"/>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="About.appVersionLabel.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="appVersionLabel" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="50" width="330" height="30" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel4">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel4" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="horizontalAlignment" type="int" value="0"/>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="About.jLabel4.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel4" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="170" width="310" height="40" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel2" property="font" relativeSize="true" size="3"/>
</FontInfo>
</Property>
<Property name="horizontalAlignment" type="int" value="0"/>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="About.jLabel2.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="80" width="330" height="30" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Form>
+173
View File
@@ -0,0 +1,173 @@
package ca.canucksoftware.wosqi;
import org.jdesktop.application.Action;
import java.awt.Desktop;
import java.net.URI;
import java.awt.Cursor;
import java.util.ResourceBundle;
public class About extends javax.swing.JDialog {
private ResourceBundle bundle;
public About(java.awt.Frame parent) {
super(parent);
bundle = WebOSQuickInstallApp.bundle;
initComponents();
getRootPane().setDefaultButton(closeButton);
jLabel5.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
}
@Action
public void closeAboutBox() {
dispose();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jLayeredPane1 = new javax.swing.JLayeredPane();
closeButton = new javax.swing.JButton();
jLabel5 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
javax.swing.JLabel appVersionLabel = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setModal(true);
setName("aboutBox"); // NOI18N
setResizable(false);
addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
formKeyPressed(evt);
}
public void keyTyped(java.awt.event.KeyEvent evt) {
formKeyTyped(evt);
}
});
jLayeredPane1.setBackground(new java.awt.Color(192, 192, 192));
jLayeredPane1.setName("jLayeredPane1"); // NOI18N
jLayeredPane1.setOpaque(true);
javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(ca.canucksoftware.wosqi.WebOSQuickInstallApp.class).getContext().getActionMap(About.class, this);
closeButton.setAction(actionMap.get("closeAboutBox")); // NOI18N
closeButton.setBackground(new java.awt.Color(192, 192, 192));
closeButton.setFont(closeButton.getFont());
closeButton.setText(bundle.getString("About.closeButton.text")); // NOI18N
closeButton.setFocusable(false);
closeButton.setName("closeButton"); // NOI18N
closeButton.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
closeButtonKeyTyped(evt);
}
});
closeButton.setBounds(130, 310, 90, 25);
jLayeredPane1.add(closeButton, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel5.setFont(jLabel5.getFont().deriveFont((jLabel5.getFont().getStyle() | java.awt.Font.ITALIC), jLabel5.getFont().getSize()+1));
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/donate.gif"))); // NOI18N
jLabel5.setText(bundle.getString("About.jLabel5.text")); // NOI18N
jLabel5.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jLabel5.setName("jLabel5"); // NOI18N
jLabel5.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
jLabel5.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jLabel5MouseClicked(evt);
}
});
jLabel5.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseMoved(java.awt.event.MouseEvent evt) {
jLabel5MouseMoved(evt);
}
});
jLabel5.setBounds(10, 120, 330, 50);
jLayeredPane1.add(jLabel5, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/title.png"))); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
jLabel1.setBounds(0, 0, 350, 60);
jLayeredPane1.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel6.setFont(jLabel6.getFont());
jLabel6.setText(bundle.getString("About.jLabel6.text")); // NOI18N
jLabel6.setName("jLabel6"); // NOI18N
jLabel6.setBounds(20, 200, 310, 110);
jLayeredPane1.add(jLabel6, javax.swing.JLayeredPane.DEFAULT_LAYER);
appVersionLabel.setFont(appVersionLabel.getFont().deriveFont(appVersionLabel.getFont().getStyle() | java.awt.Font.BOLD, appVersionLabel.getFont().getSize()+5));
appVersionLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
appVersionLabel.setText(bundle.getString("About.appVersionLabel.text")); // NOI18N
appVersionLabel.setName("appVersionLabel"); // NOI18N
appVersionLabel.setBounds(10, 50, 330, 30);
jLayeredPane1.add(appVersionLabel, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel4.setFont(jLabel4.getFont());
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel4.setText(bundle.getString("About.jLabel4.text")); // NOI18N
jLabel4.setName("jLabel4"); // NOI18N
jLabel4.setBounds(20, 170, 310, 40);
jLayeredPane1.add(jLabel4, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getSize()+3f));
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel2.setText(bundle.getString("About.jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
jLabel2.setBounds(10, 80, 330, 30);
jLayeredPane1.add(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 350, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 341, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void formKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_formKeyPressed
}//GEN-LAST:event_formKeyPressed
private void formKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_formKeyTyped
}//GEN-LAST:event_formKeyTyped
private void closeButtonKeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_closeButtonKeyTyped
}//GEN-LAST:event_closeButtonKeyTyped
private void jLabel5MouseMoved(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel5MouseMoved
}//GEN-LAST:event_jLabel5MouseMoved
private void jLabel5MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel5MouseClicked
try {
Desktop.getDesktop().browse(new URI("https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7G5QLAXMVVSGY"));
} catch(Exception e) {}
}//GEN-LAST:event_jLabel5MouseClicked
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton closeButton;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLayeredPane jLayeredPane1;
// End of variables declaration//GEN-END:variables
}
@@ -0,0 +1,324 @@
# To change this template, choose Tools | Templates
# and open the template in the editor.
MainView.jLabel2.text=Device:
MainView.fileMenu.text=File
MainView.jLayeredPane7.border.title=Files to Install
MainView.jButton3.text=Install
MainView.toolMenu.text=Tools
MainView.helpMenu.text=Help
MainView.jMenuItem1.text=Add File...
MainView.jMenuItem2.text=Reinstall Novacom
MainView.jMenuItem3.text=Send File
MainView.jMenuItem4.text=Receive File
MainView.jMenuItem5.text=Device Management
MainView.jMenuItem6.text=Usage
MainView.jMenuItem7.text=Disclaimer
MainView.aboutMenuItem.text=About
Usage.jLayeredPane2.border.title=How To Use
Usage.jTextPane1.text=<html><body style="font:1em">In order to get WebOS Quick Install to work properly, there are a few minor requirements:<br/><ul><li/>Novacom driver installed on this computer.<br/><br/>If you want to reinstall the driver, click the "Reinstall Novacom" option in the top File menu.<br/><br/><li/>Developer mode enabled.<br/><br/>This can be done by typing "upupdowndownleftrightleftrightbastart", opening the DevMode app, and enabling the feature.<br/><br/><li/>When you plug in your device, choose "Just charge".</ul></body>
Usage.jTextPane1.contentType=text/html
ReveiveFile.jLabel2.text=File:
ReceiveFile.jButton1.text=...
ReveiveFile.jLabel1.text=Destination:
ReceiveFile.jButton2.text=Get From Device
ReceiveFile.jButton3.text=Cancel
SendFile.jButton1.text=...
SendFile.jLabel2.text=File:
SendFile.jLabel1.text=Destination:
SendFile.jButton3.text=Cancel
SendFile.jButton2.text=Send To Device
DeviceManagement.jLabel2.text=
DeviceManagement.jLabel3.text=
DeviceManagement.jLabel9.text=
DeviceManagement.jButton1.text=Uninstall
DeviceManagement.jLabel8.text=
DeviceManagement.jLayeredPane3.border.title=User-Installed Content
DeviceManagement.jLabel4.text=
DeviceManagement.jLabel5.text=
DeviceManagement.jTable1.columnModel.title1=
DeviceManagement.jTable1.columnModel.title0=Name
DeviceManagement.jLayeredPane2.border.title=Device Info
DeviceManagement.jLabel1.text=
DeviceManagement.jLabel10.text=
DeviceManagement.jLabel11.text=
DeviceManagement.jLabel12.text=
DeviceManagement.jLabel13.text=
LOADING_LIST...=Loading list...
{0}_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN.={0} is disconnected. Please reconnect then try again.
DEVICE_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN.=Device is disconnected. Please reconnect then try again.
DEVICE\:=Device:
OS\:=OS:
ARCHITECTURE\:=Architecture:
BUILD_NAME\:=Build Name:
BUILD_TIME\:=Build Time:
CPU_TYPE\:=CPU Type:
CPU_SPEED\:=CPU Speed:
CPU_HARDWARE\:=CPU Hardware:
MODEM_TYPE\:=Modem Type:
MODEM_FIRMWARE\:=Modem Firmware:
DEPENDANT_PACKAGES_EXIST_WARNING=Warning: The follow packages are dependant on \"{0}\" and will be remove along with it:
WARNING=Warning
PROCESSING_FINISHED_DOWNLOAD._THIS_MAY_TAKE_A_FEW_MINUTES.=Processing finished download. This may take a few minutes.
INSTALLING_DRIVER...=Installing driver...
DRIVER_INSTALLED_SUCCESSFULLY.=Driver installed successfully.
ERROR\:_DRIVER_INSTALLATION_FAILED=ERROR: Driver installation failed
ERROR\:=ERROR:
PLEASE_WAIT...=Please wait...
SELECT=Select
FILE_TRANSFERRED_SUCCESSFULLY.=File transferred successfully.
FILE_TRANSFER_FAILED.=File transfer failed.
SYSTEM_IS_BUSY._TRY_AGAIN_LATER.=System is busy. Try again later.
CONNECTING...=Connecting...
DOWNLOADING\:=Downloading:
TRANSFERRING_AND_APPLYING\:=Transferring and applying:
TRANSFERRING\:=Transferring:
INSTALLING\:=Installing:
INSTALL=Install
NO_DEVICES_ARE_CONNECTED._CONNECT_A_DEVICE_THEN_RELAUNCH_WEBOS_QUICK_INSTALL.=No devices are connected. Connect a device then relaunch WebOS Quick Install.
NO_DEVICES_FOUND=No Devices Found
FULL_WOSQI_DISCLAIMER=This program is intended for use with WebOS applications that are in-testing, which under section 4.2 of the Palm SDK License Agreement allows for such unapproved applications to be installed on Palm devices. By using this program, the user understands that webOS applications installed may be dangerous and have not been approved for safety or stability by Palm Inc and could void your device's warranty. Installing webOS packages are done so at your own risk and neither the developer of WebOS Quick Install, nor Palm Inc can be held liable.
DISCLAIMER=Disclaimer
FOR_WEBOS_QUICK_INSTALL_TO_RUN_CORRECTLY,_YOUR_COMPUTER_NEEDS_TO_HAVE_THE_NOVACOM_DRIVER_INSTALLED._WOULD_YOU_LIKE_TO_INSTALL_IT_NOW?=For WebOS Quick Install to run correctly, your computer needs to have the Novacom driver installed. Would you like to install it now?
NOVACOM_DRIVER_MISSING=Novacom Driver Missing
JAR_FILES_(*.JAR)=Jar Files (*.jar)
WEBOS_FILES_(*.IPK,_*.PATCH,_*.DIFF)=webOS Files (*.ipk, *.patch, *.diff)
REPEATING_CONNECTION_WARNING=There are no devices currently connected. Please connect a device to continue.
WEBOS_DOCTOR_NEEDED_FOR_DRIVERS=In order to install the Novacom driver on your system, a webOSDoctor is temporarily required. You can download it now (approx 200MB) or, if you already have one downloaded, you can select that one, and the driver will be installed.
WEBOSDOCTOR_REQUIRED=webOSDoctor Required
DOWNLOAD=Download
SELECT_FILE...=Select File...
CANCEL=Cancel
InstalledPkgInfo.jLabel1.text=Name:
InstalledPkgInfo.jLabel2.text=Version:
InstalledPkgInfo.jLabel4.text=ID:
InstalledPkgInfo.jButton1.text=Close
InstalledPkgInfo.jLabel11.text=Author:
InstalledPkgInfo.title=Package Info
UNKNOWN=Unknown
InstalledPatchInfo.title=Package Info
InstalledPatchInfo.jButton1.text=Close
InstalledPatchInfo.jLabel4.text=ID:
InstalledPatchInfo.jLabel2.text=Version:
InstalledPatchInfo.jLabel1.text=Name:
InstalledPatchInfo.jLabel5.text=Description:
InstalledPatchInfo.jLabel11.text=Author:
About.closeButton.text=Close
About.jLabel5.text=Help support development
About.appVersionLabel.text=Version 4.5.0
About.jLabel2.text=Freeware
About.jLabel4.text=<html>Copyright \u00A9 2009-2013 Jason Robitaille.
About.jLabel6.text=<html><p align="justify">Jason Robitaille and Canuck Coding are in no way affiliated with HP, LG or their affiliates. Palm, Pre, Pixi, Veer, TouchPad, Enyo, and webOS are among the trademarks owned by or licensed to Hewlett-Packard Development Company, L.P. www.hpwebos.com</p>
FeedLoader.jLabel5.text=Downloading and parsing:
FeedLoader.jLabel6.text=
FeedViewer.jLayeredPane1.TabConstraints.tabTitle=Updates
FeedViewer.jLayeredPane2.TabConstraints.tabTitle=Applications
FeedViewer.jLayeredPane3.TabConstraints.tabTitle=Services
FeedViewer.jLayeredPane4.TabConstraints.tabTitle=Plugins
FeedViewer.jLayeredPane5.TabConstraints.tabTitle=Linux Apps
FeedViewer.jLayeredPane6.TabConstraints.tabTitle=Kernels
FeedViewer.jLayeredPane7.TabConstraints.tabTitle=Patches
FeedViewer.jLayeredPane8.TabConstraints.tabTitle=Themes
FeedViewer.jTextField1.text=
FeedViewer.jButton1.text=
FeedViewer.jButton2.text=Install
FeedViewer.jLabel1.text=<html>
FeedViewer.jLabel2.text=<html>
FeedViewer.jTextPane1.contentType=text/html
FeedViewer.jTextPane1.text=<html>
FeedViewer.jLabel4.text=<html><b>Feed:</b>
FeedViewer.jLabel3.text=<html><b>License:</b>
FeedViewer.jLabel5.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel6.text=<html><b>Last Updated:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel8.text=<html><b>Description:</b>
FeedViewer.jLabel7.text=<html>
FeedViewer.jLabel9.text=<html><b>Developer:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel10.text=<html>
FeedViewer.jLabel11.text=<html><a href="#">Homepage</a>
FeedViewer.jTextField2.text=
FeedViewer.jLabel22.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel21.text=<html>
FeedViewer.jLabel20.text=<html><b>Developer:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel19.text=<html>
FeedViewer.jLabel18.text=<html><b>Description:</b>
FeedViewer.jLabel17.text=<html><b>Last Updated:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel16.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel15.text=<html><b>License:</b>
FeedViewer.jLabel14.text=<html><b>Feed:</b>
FeedViewer.jTextPane2.text=<html>
FeedViewer.jTextPane2.contentType=text/html
FeedViewer.jLabel13.text=<html>
FeedViewer.jLabel12.text=<html>
FeedViewer.jButton4.text=Install
FeedViewer.jButton3.text=
FeedViewer.jLabel33.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel32.text=<html>
FeedViewer.jLabel31.text=<html><b>Developer:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel30.text=<html>
FeedViewer.jLabel29.text=<html><b>Description:</b>
FeedViewer.jLabel28.text=<html><b>Last Updated:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel27.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel26.text=<html><b>License:</b>
FeedViewer.jLabel25.text=<html><b>Feed:</b>
FeedViewer.jTextPane3.text=<html>
FeedViewer.jTextPane3.contentType=text/html
FeedViewer.jLabel24.text=<html>
FeedViewer.jLabel23.text=<html>
FeedViewer.jButton6.text=Install
FeedViewer.jButton5.text=
FeedViewer.jTextField3.text=
FeedViewer.jLabel44.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel43.text=<html>
FeedViewer.jLabel42.text=<html><b>Developer:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel41.text=<html>
FeedViewer.jLabel40.text=<html><b>Description:</b>
FeedViewer.jLabel39.text=<html><b>Last Updated:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel38.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel37.text=<html><b>License:</b>
FeedViewer.jLabel36.text=<html><b>Feed:</b>
FeedViewer.jTextPane4.text=<html>
FeedViewer.jTextPane4.contentType=text/html
FeedViewer.jLabel35.text=<html>
FeedViewer.jLabel34.text=<html>
FeedViewer.jButton8.text=Install
FeedViewer.jButton7.text=
FeedViewer.jTextField4.text=
FeedViewer.jTextField5.text=
FeedViewer.jLabel55.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel54.text=<html>
FeedViewer.jLabel53.text=<html><b>Developer:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel52.text=<html>
FeedViewer.jLabel51.text=<html><b>Description:</b>
FeedViewer.jLabel50.text=<html><b>Last Updated:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel49.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel48.text=<html><b>License:</b>
FeedViewer.jLabel47.text=<html><b>Feed:</b>
FeedViewer.jTextPane5.text=<html>
FeedViewer.jTextPane5.contentType=text/html
FeedViewer.jLabel46.text=<html>
FeedViewer.jLabel45.text=<html>
FeedViewer.jButton10.text=Install
FeedViewer.jButton9.text=
FeedViewer.jLabel66.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel65.text=<html>
FeedViewer.jLabel64.text=<html><b>Developer:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel63.text=<html>
FeedViewer.jLabel62.text=<html><b>Description:</b>
FeedViewer.jLabel61.text=<html><b>Last Updated:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel60.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel59.text=<html><b>License:</b>
FeedViewer.jLabel58.text=<html><b>Feed:</b>
FeedViewer.jTextPane6.text=<html>
FeedViewer.jTextPane6.contentType=text/html
FeedViewer.jLabel57.text=<html>
FeedViewer.jLabel56.text=<html>
FeedViewer.jButton12.text=Install
FeedViewer.jButton11.text=
FeedViewer.jTextField6.text=
FeedViewer.jLabel77.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel76.text=<html>
FeedViewer.jLabel75.text=<html><b>Developer:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel74.text=<html>
FeedViewer.jLabel73.text=<html><b>Description:</b>
FeedViewer.jLabel72.text=<html><b>Last Updated:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel71.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel70.text=<html><b>License:</b>
FeedViewer.jLabel69.text=<html><b>Feed:</b>
FeedViewer.jTextPane7.text=<html>
FeedViewer.jTextPane7.contentType=text/html
FeedViewer.jLabel68.text=<html>
FeedViewer.jLabel67.text=<html>
FeedViewer.jButton14.text=Install
FeedViewer.jButton13.text=
FeedViewer.jTextField7.text=
FeedViewer.jLabel88.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel87.text=<html>
FeedViewer.jLabel86.text=<html><b>Developer:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel85.text=<html>
FeedViewer.jLabel84.text=<html><b>Description:</b>
FeedViewer.jLabel83.text=<html><b>Last Updated:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel82.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel81.text=<html><b>License:</b>
FeedViewer.jLabel80.text=<html><b>Feed:</b>
FeedViewer.jTextPane8.text=<html>
FeedViewer.jTextPane8.contentType=text/html
FeedViewer.jLabel79.text=<html>
FeedViewer.jLabel78.text=
FeedViewer.jButton16.text=Update
FeedViewer.jLayeredPane9.TabConstraints.tabTitle=Linux Daemons
FeedViewer.jLabel99.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel98.text=<html>
FeedViewer.jLabel97.text=<html><b>Developer:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel96.text=<html>
FeedViewer.jLabel95.text=<html><b>Description:</b>
FeedViewer.jLabel94.text=<html><b>Last Updated:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel93.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel92.text=<html><b>License:</b>
FeedViewer.jLabel91.text=<html><b>Feed:</b>
FeedViewer.jTextPane9.text=<html>
FeedViewer.jTextPane9.contentType=text/html
FeedViewer.jLabel90.text=<html>
FeedViewer.jLabel89.text=<html>
FeedViewer.jButton18.text=Install
FeedViewer.jButton17.text=
FeedViewer.jTextField9.text=
SendFile.title=Send File
ReceiveFile.title=Receive File
FeedViewer.availablePackagesTabs.TabConstraints.tabTitle=Available Packages
Installer.jLabel5.text=
FeedViewer.jButton15.text=Update All
ALL=All
WEBOS_PACKAGE_FILE=WebOS Package File
WEBOS_PATCH_FILE=WebOS Patch File
WEBOS_DIFF_FILE=WebOS Diff File
UNKNOWN_FILE=Unknown File
ERROR\:_FEED_LOADING_FAILED=ERROR: Feed loading failed
ERROR\:_DRIVER_INSTALLATION_FAILED=ERROR: Driver installation failed
ERROR\:_UNABLE_TO_DOWNLOAD_{0}=ERROR: Unable to download {0}
VERSION\:=Version:
VERSION\:=Version:
DEVELOPER\:=Developer:
DEVELOPER\:=Developer:
DEVELOPER\:=Developer:
LAST_UPDATED\:=Last Updated:
LAST_UPDATED\:=Last Updated:
LAST_UPDATED\:=Last Updated:
LAST_UPDATED\:=Last Updated:
NO_PACKAGES_FOUND=No Packages Found
DEPENDANCY_INSTALL_WARNING=Warning: \"{0}\" is dependant on the following packages and will be installed along with it:
NO_UPDATES_FOUND=No Updates Found
MainView.installTable.columnModel.title2=Type
MainView.installTable.columnModel.title1=Size
MainView.installTable.columnModel.title0=Name
Settings.title=Settings
Settings.jLabel1.text=Language:
MainView.jMenuItem8.text=Settings
<SYSTEM_DEFAULT>=<System Default>
ENGLISH=English
FRENCH=French
GERMAN=German
SIMPLIFIED_CHINESE=Simplified Chinese
THE_NEW_LANGUAGE_WILL_TAKE_EFFECT_THE_NEXT_TIME_WEBOS_QUICK_INSTALL_IS_LAUNCHED.=The new language will take effect the next time WebOS Quick Install is launched.
LANGUAGE_CHANGED.=Language Changed
ERROR\:_INVALID_FEED_URL=ERROR: Invalid feed url
CUSTOM_FEED_URL\:=Custom feed url:
EXIT=Exit
DoctorDownloader.jLabel1.text_1=<html>Downloading Novacom Drivers
DoctorDownloader.jProgressBar1.string=...
MainView.jMenuItem9.text=Linux Commandline
Settings.jTable1.columnModel.title3=
Settings.jTable1.columnModel.title2=
Settings.jTable1.columnModel.title0=
Settings.jTable1.columnModel.title1=
Settings.jLabel2.text=Default Feeds:
Settings.jLabel3.text=Custom Feeds:
Settings.jButton1.text=Delete stored DevMode passwords
FEED_PRECENTRAL=webOS Nation
FEED_WEBOSINTERNALS=WebOS-Internals
FEED_PATCHES=WebOS Patches
FEED_KERNELS=WebOS Kernels
FEED_PRETHEMER=PreThemer
FEED_PCTHEMES=webOS Nation Themes
FEED_CLOCK=Clock Themes
Settings.jCheckBox1.text=<html>Use device name when possible
OK=OK
@@ -0,0 +1,313 @@
# To change this template, choose Tools | Templates
# and open the template in the editor.
MainView.jLabel2.text=Ger\u00E4t:
MainView.fileMenu.text=Datei
MainView.jLayeredPane7.border.title=Zu installierende Dateien
MainView.jButton3.text=Installieren
MainView.toolMenu.text=Tools
MainView.helpMenu.text=Hilfe
MainView.jMenuItem1.text=Datei hinzuf\u00FCgen...
MainView.jMenuItem2.text=Novacom reinstallieren
MainView.jMenuItem3.text=Datei senden
MainView.jMenuItem4.text=Datei empfangen
MainView.jMenuItem5.text=Ger\u00E4tmanagement
MainView.jMenuItem6.text=Benutzung
MainView.jMenuItem7.text=Haftungsausschluss
MainView.aboutMenuItem.text=\u00DCber
DoctorDownloader.jLabel1.text_1=<html>Novacom lade herunter
Usage.jLayeredPane2.border.title=Anleitung
Usage.jTextPane1.text=<html><body style="font:1em">Damit WebOS Quick Install richtig funktionieren kann, m\u00FCssen einige Voraussetzungen erf\u00FCllt sein:<br/><ul><li/>Der Novacom-Treiber muss auf diesem Computer installiert sein.<br/><br/>Falls Sie den Treiber reinstallieren wollen, w\u00E4hlen Sie 'Novacom reinstallieren" aus dem Datei-Men\u00FC.<br/><br/><li/>Der Entwicklermodus muss aktiviert sein.<br/><br/>Dieses kann durch das Eintippen von 'upupdowndownleftrightleftrightbastart', dem \u00D6ffnen des DevMode-Programmes und der Aktivierung der Option erreicht werden.<br/><br/><li/>Wenn Sie Ihr Ger\u00E4t anschlie\u00DFen, w\u00E4hlen Sie "Nur aufladen".</ul></body>
Usage.jTextPane1.contentType=text/html
ReveiveFile.jLabel2.text=Datei:
ReceiveFile.jButton1.text=...
ReveiveFile.jLabel1.text=Ziel:
ReceiveFile.jButton2.text=vom Ger\u00E4t holen
ReceiveFile.jButton3.text=Abbrechen
SendFile.jButton1.text=...
SendFile.jLabel2.text=Datei:
SendFile.jLabel1.text=Ziel:
SendFile.jButton3.text=Abbrechen
SendFile.jButton2.text=zum Ger\u00E4t senden
DeviceManagement.jLabel2.text=
DeviceManagement.jLabel3.text=
DeviceManagement.jLabel9.text=
DeviceManagement.jButton1.text=Deinstallieren
DeviceManagement.jLabel8.text=
DeviceManagement.jLayeredPane3.border.title=Vom Nutzer Installierter Inhalt
DeviceManagement.jLabel4.text=
DeviceManagement.jLabel5.text=
DeviceManagement.jTable1.columnModel.title1=
DeviceManagement.jTable1.columnModel.title0=Name
DeviceManagement.jLayeredPane2.border.title=Ger\u00E4teinformation
DeviceManagement.jLabel1.text=
DeviceManagement.jLabel10.text=
DeviceManagement.jLabel11.text=
DeviceManagement.jLabel12.text=
DeviceManagement.jLabel13.text=
LOADING_LIST...=Liste wird geladen...
{0}_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN.={0} ist nicht verbunden. Bitte verbinden Sie es und versuchen Sie es erneut.
DEVICE_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN.=Ger\u00E4t ist nicht verbunden. Bitte verbinden Sie es und versuchen Sie es erneut.
DEVICE\:=Ger\u00E4t:
OS\:=OS:
ARCHITECTURE\:=Architektur:
BUILD_NAME\:=Build-Name:
BUILD_TIME\:=Build-Zeit:
CPU_TYPE\:=CPU-Typ:
CPU_SPEED\:=CPU-Geschwindigkeit:
CPU_HARDWARE\:=CPU-Hardware:
MODEM_TYPE\:=Modem-Typ:
MODEM_FIRMWARE\:=Modem-Firmware:
DEPENDANT_PACKAGES_EXIST_WARNING=Achtung: Weitere Pakete sind von \"{0}\" abh\u00E4ngig und werden zusammen damit entfernt:
WARNING=Achtung
PROCESSING_FINISHED_DOWNLOAD._THIS_MAY_TAKE_A_FEW_MINUTES.=Beendeter Download wird bearbeitet. Dieses kann einige Minuten dauern.
INSTALLING_DRIVER...=Treiber wird installiert...
DRIVER_INSTALLED_SUCCESSFULLY.=Treiber wurde erfolgreich installiert.
ERROR\:_DRIVER_INSTALLATION_FAILED=FEHLER: Installation des Treibers fehlgeschlagen
ERROR\:=FEHLER:
PLEASE_WAIT...=Bitte warten Sie...
SELECT=Ausw\u00E4hlen
FILE_TRANSFERRED_SUCCESSFULLY.=Datei erfolgreich \u00FCbertragen.
FILE_TRANSFER_FAILED.=Datei\u00FCbertragung fehlgeschlagen.
SYSTEM_IS_BUSY._TRY_AGAIN_LATER.=Das System ist ausgelastet. Versuchen Sie es sp\u00E4ter erneut.
CONNECTING...=Verbinde...
DOWNLOADING\:=Lade herunter:
TRANSFERRING_AND_APPLYING\:=\u00DCbertrage und wende an:
TRANSFERRING\:=\u00DCbertrage:
INSTALLING\:=Installiere:
INSTALL=Installieren
NO_DEVICES_ARE_CONNECTED._CONNECT_A_DEVICE_THEN_RELAUNCH_WEBOS_QUICK_INSTALL.=Es sind keine Ger\u00E4te verbunden. Verbinden Sie ein Ger\u00E4t und starten Sie WebOS Quick Install erneut.
NO_DEVICES_FOUND=Keine Ger\u00E4te gefunden
FULL_WOSQI_DISCLAIMER=Dieses Programm ist f\u00FCr den Einsatz mit - im Test befindlichen - WebOS-Applikationen vorgesehen, was nach Absatz 4.2 der Palm SDK Lizenzvereinbarung die Installation solcher ungenehmigter Applikationen auf Palm Ger\u00E4ten erm\u00F6glicht. Mit der Benutzung dieses Programms versteht der Anwender, dass dabei installierte WebOS-Applikationen gef\u00E4hrlich sein k\u00F6nnten, deren Sicherheit oder Stabilit\u00E4t nicht von Palm Inc. best\u00E4tigt wird und er die Garantie f\u00FCr sein Ger\u00E4t verlieren k\u00F6nnte. Die Installation von WebOS-Paketen geschieht deshalb auf eigenes Risiko und weder der Entwickler von WebOS Quick Install noch Palm Inc. k\u00F6nnen daf\u00FCr zur Verantwortung gezogen werden.
DISCLAIMER=Haftungsausschluss
FOR_WEBOS_QUICK_INSTALL_TO_RUN_CORRECTLY,_YOUR_COMPUTER_NEEDS_TO_HAVE_THE_NOVACOM_DRIVER_INSTALLED._WOULD_YOU_LIKE_TO_INSTALL_IT_NOW?=Damit WebOS Quick Install richtig arbeiten kann, muss der Novacom-Treiber auf Ihrem Computer installiert sein. Wollen Sie ihn jetzt installieren?
NOVACOM_DRIVER_MISSING=Novacom-Treiber Fehlt
JAR_FILES_(*.JAR)=Jar-Dateien (*.jar)
WEBOS_FILES_(*.IPK,_*.PATCH,_*.DIFF)=webOS-Dateien (*.ipk, *.patch, *.diff)
REPEATING_CONNECTION_WARNING=Zur Zeit sind keine Ger\u00E4te verbunden. Bitte verbinden Sie ein Ger\u00E4t, um fortzufahren.
WEBOS_DOCTOR_NEEDED_FOR_DRIVERS=Zeitweise ist ein webOSDoctor notwendig, damit der Novacom-Treiber auf Ihrem System installiert werden kann. Sie k\u00F6nnen ihn jetzt herunterladen (ca. 200MB) oder - falls Sie bereits einen heruntergeladen haben - diesen ausw\u00E4hlen und der Treiber wird installiert.
WEBOSDOCTOR_REQUIRED=webOSDoctor wird ben\u00F6tigt
DOWNLOAD=Download
SELECT_FILE...=Datei ausw\u00E4hlen...
CANCEL=Abbrechen
InstalledPkgInfo.jLabel1.text=Name:
InstalledPkgInfo.jLabel2.text=Version:
InstalledPkgInfo.jLabel4.text=ID:
InstalledPkgInfo.jButton1.text=Schlie\u00DFen
InstalledPkgInfo.jLabel11.text=Author:
InstalledPkgInfo.title=Paketinformation
UNKNOWN=Unbekannt
InstalledPatchInfo.title=Paketinformation
InstalledPatchInfo.jButton1.text=Schlie\u00DFen
InstalledPatchInfo.jLabel4.text=ID:
InstalledPatchInfo.jLabel2.text=Version:
InstalledPatchInfo.jLabel1.text=Name:
InstalledPatchInfo.jLabel5.text=Beschreibung:
InstalledPatchInfo.jLabel11.text=Author:
About.closeButton.text=Schlie\u00DFen
About.jLabel5.text=Unterst\u00FCtzen Sie die Entwicklung
About.appVersionLabel.text=Version 4.5.0
About.jLabel2.text=Deutsche \u00DCbersetzung von Tobias Kaller
About.jLabel4.text=<html>Copyright \u00A9 2009-2013 Jason Robitaille. All rights reserved.
About.jLabel6.text=<html><p align="justify">Jason Robitaille and Canuck Coding are in no way affiliated with HP, LG or their affiliates. Palm, Pre, Pixi, Veer, TouchPad, and WebOS are among the trademarks owned by or licensed to Hewlett-Packard Development Company, L.P. www.hpwebos.com</p>
FeedLoader.jLabel5.text=Lade herunter und verarbeite:
FeedLoader.jLabel6.text=
FeedViewer.jLayeredPane1.TabConstraints.tabTitle=Updates
FeedViewer.jLayeredPane2.TabConstraints.tabTitle=Anwendungen
FeedViewer.jLayeredPane3.TabConstraints.tabTitle=Dienste
FeedViewer.jLayeredPane4.TabConstraints.tabTitle=Plugins
FeedViewer.jLayeredPane5.TabConstraints.tabTitle=Linux Programme
FeedViewer.jLayeredPane6.TabConstraints.tabTitle=Kernels
FeedViewer.jLayeredPane7.TabConstraints.tabTitle=Patches
FeedViewer.jLayeredPane8.TabConstraints.tabTitle=Themes
FeedViewer.jTextField1.text=
FeedViewer.jButton1.text=
FeedViewer.jButton2.text=Installieren
FeedViewer.jLabel1.text=<html>
FeedViewer.jLabel2.text=<html>
FeedViewer.jTextPane1.contentType=text/html
FeedViewer.jTextPane1.text=<html>
FeedViewer.jLabel4.text=<html><b>Feed:</b>
FeedViewer.jLabel3.text=<html><b>Lizenz:</b>
FeedViewer.jLabel5.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel6.text=<html><b>Zuletzt aktualisiert:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel8.text=<html><b>Beschreibung:</b>
FeedViewer.jLabel7.text=<html>
FeedViewer.jLabel9.text=<html><b>Entwickler:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel10.text=<html>
FeedViewer.jLabel11.text=<html><a href="#">Homepage</a>
FeedViewer.jTextField2.text=
FeedViewer.jLabel22.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel21.text=<html>
FeedViewer.jLabel20.text=<html><b>Entwickler:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel19.text=<html>
FeedViewer.jLabel18.text=<html><b>Beschreibung:</b>
FeedViewer.jLabel17.text=<html><b>Zuletzt aktualisiert:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel16.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel15.text=<html><b>Lizenz:</b>
FeedViewer.jLabel14.text=<html><b>Feed:</b>
FeedViewer.jTextPane2.text=<html>
FeedViewer.jTextPane2.contentType=text/html
FeedViewer.jLabel13.text=<html>
FeedViewer.jLabel12.text=<html>
FeedViewer.jButton4.text=Installieren
FeedViewer.jButton3.text=
FeedViewer.jLabel33.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel32.text=<html>
FeedViewer.jLabel31.text=<html><b>Entwickler:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel30.text=<html>
FeedViewer.jLabel29.text=<html><b>Beschreibung:</b>
FeedViewer.jLabel28.text=<html><b>Zuletzt aktualisiert:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel27.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel26.text=<html><b>Lizenz:</b>
FeedViewer.jLabel25.text=<html><b>Feed:</b>
FeedViewer.jTextPane3.text=<html>
FeedViewer.jTextPane3.contentType=text/html
FeedViewer.jLabel24.text=<html>
FeedViewer.jLabel23.text=<html>
FeedViewer.jButton6.text=Installieren
FeedViewer.jButton5.text=
FeedViewer.jTextField3.text=
FeedViewer.jLabel44.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel43.text=<html>
FeedViewer.jLabel42.text=<html><b>Entwickler:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel41.text=<html>
FeedViewer.jLabel40.text=<html><b>Beschreibung:</b>
FeedViewer.jLabel39.text=<html><b>Zuletzt aktualisiert:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel38.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel37.text=<html><b>Lizenz:</b>
FeedViewer.jLabel36.text=<html><b>Feed:</b>
FeedViewer.jTextPane4.text=<html>
FeedViewer.jTextPane4.contentType=text/html
FeedViewer.jLabel35.text=<html>
FeedViewer.jLabel34.text=<html>
FeedViewer.jButton8.text=Installieren
FeedViewer.jButton7.text=
FeedViewer.jTextField4.text=
FeedViewer.jTextField5.text=
FeedViewer.jLabel55.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel54.text=<html>
FeedViewer.jLabel53.text=<html><b>Entwickler:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel52.text=<html>
FeedViewer.jLabel51.text=<html><b>Beschreibung:</b>
FeedViewer.jLabel50.text=<html><b>Zuletzt aktualisiert:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel49.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel48.text=<html><b>Lizenz:</b>
FeedViewer.jLabel47.text=<html><b>Feed:</b>
FeedViewer.jTextPane5.text=<html>
FeedViewer.jTextPane5.contentType=text/html
FeedViewer.jLabel46.text=<html>
FeedViewer.jLabel45.text=<html>
FeedViewer.jButton10.text=Installieren
FeedViewer.jButton9.text=
FeedViewer.jLabel66.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel65.text=<html>
FeedViewer.jLabel64.text=<html><b>Entwickler:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel63.text=<html>
FeedViewer.jLabel62.text=<html><b>Beschreibung:</b>
FeedViewer.jLabel61.text=<html><b>Zuletzt aktualisiert:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel60.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel59.text=<html><b>Lizenz:</b>
FeedViewer.jLabel58.text=<html><b>Feed:</b>
FeedViewer.jTextPane6.text=<html>
FeedViewer.jTextPane6.contentType=text/html
FeedViewer.jLabel57.text=<html>
FeedViewer.jLabel56.text=<html>
FeedViewer.jButton12.text=Installieren
FeedViewer.jButton11.text=
FeedViewer.jTextField6.text=
FeedViewer.jLabel77.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel76.text=<html>
FeedViewer.jLabel75.text=<html><b>Entwickler:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel74.text=<html>
FeedViewer.jLabel73.text=<html><b>Beschreibung:</b>
FeedViewer.jLabel72.text=<html><b>Zuletzt aktualisiert:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel71.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel70.text=<html><b>Lizenz:</b>
FeedViewer.jLabel69.text=<html><b>Feed:</b>
FeedViewer.jTextPane7.text=<html>
FeedViewer.jTextPane7.contentType=text/html
FeedViewer.jLabel68.text=<html>
FeedViewer.jLabel67.text=<html>
FeedViewer.jButton14.text=Installieren
FeedViewer.jButton13.text=
FeedViewer.jTextField7.text=
FeedViewer.jLabel88.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel87.text=<html>
FeedViewer.jLabel86.text=<html><b>Entwickler:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel85.text=<html>
FeedViewer.jLabel84.text=<html><b>Beschreibung:</b>
FeedViewer.jLabel83.text=<html><b>Zuletzt aktualisiert:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel82.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel81.text=<html><b>Lizenz:</b>
FeedViewer.jLabel80.text=<html><b>Feed:</b>
FeedViewer.jTextPane8.text=<html>
FeedViewer.jTextPane8.contentType=text/html
FeedViewer.jLabel79.text=<html>
FeedViewer.jLabel78.text=
FeedViewer.jButton16.text=Aktualisiere
FeedViewer.jLayeredPane9.TabConstraints.tabTitle=Linux Daemons
FeedViewer.jLabel99.text=<html><a href="#">Homepage</a>
FeedViewer.jLabel98.text=<html>
FeedViewer.jLabel97.text=<html><b>Entwickler:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel96.text=<html>
FeedViewer.jLabel95.text=<html><b>Beschreibung:</b>
FeedViewer.jLabel94.text=<html><b>Zuletzt aktualisiert:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel93.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel92.text=<html><b>Lizenz:</b>
FeedViewer.jLabel91.text=<html><b>Feed:</b>
FeedViewer.jTextPane9.text=<html>
FeedViewer.jTextPane9.contentType=text/html
FeedViewer.jLabel90.text=<html>
FeedViewer.jLabel89.text=<html>
FeedViewer.jButton18.text=Installieren
FeedViewer.jButton17.text=
FeedViewer.jTextField9.text=
SendFile.title=Datei senden
ReceiveFile.title=Datei empfangen
FeedViewer.availablePackagesTabs.TabConstraints.tabTitle=verf\u00FCgbare Pakete
Installer.jLabel5.text=
FeedViewer.jButton15.text=Alle aktualisieren
ALL=Alle
WEBOS_PACKAGE_FILE=WebOS Paket Datei
WEBOS_PATCH_FILE=WebOS Patch Datei
WEBOS_DIFF_FILE=WebOS Diff Datei
UNKNOWN_FILE=Unbekannte Datei
ERROR\:_FEED_LOADING_FAILED=FEHLER: Laden der Feeds fehlgeschlagen
ERROR\:_DRIVER_INSTALLATION_FAILED=FEHLER: Installation des Treibers fehlgeschlagen
ERROR\:_UNABLE_TO_DOWNLOAD_{0}=FEHLER: {0} konnte nicht heruntergeladen werden
VERSION\:=Version:
DEVELOPER\:=Entwickler:
LAST_UPDATED\:=Zuletzt aktualisiert:
NO_PACKAGES_FOUND=Keine Pakete Gefunden
DEPENDANCY_INSTALL_WARNING=Achtung: \"{0}\" ist von den folgenden Paketen abh\u00E4ngig und wird zusammen damit installiert:
NO_UPDATES_FOUND=Updates Gefunden
MainView.installTable.columnModel.title2=Art
MainView.installTable.columnModel.title1=Gr\u00F6\u00DFe
MainView.installTable.columnModel.title0=Name
Settings.title=Grundeinstellungen
Settings.jLabel1.text=Sprache:
MainView.jMenuItem8.text=Grundeinstellungen
<SYSTEM_DEFAULT>=<Systemvorgabe>
ENGLISH=Englisch
FRENCH=Franz\u00F6sisch
GERMAN=Deutsch
SIMPLIFIED_CHINESE=Vereinfachtes Chinesisch
THE_NEW_LANGUAGE_WILL_TAKE_EFFECT_THE_NEXT_TIME_WEBOS_QUICK_INSTALL_IS_LAUNCHED.=Die neu ausgew\u00E4hlte Sprache wird bei dem n\u00E4chsten Start von WebOS Quick Install aktiv.
LANGUAGE_CHANGED.=Sprache wurde ge\u00E4ndert
ERROR\:_INVALID_FEED_URL=FEHLER: Ung\u00FCltige Feed-URL
CUSTOM_FEED_URL\:=Benutzerdefinierte Feed-URL
EXIT=Beenden
MainView.jMenuItem9.text=Linux-Befehlszeile
Settings.jLabel2.text=Voreingestellte Feeds:
Settings.jLabel3.text=Eigene Feeds:
Settings.jButton1.text=Gespeichertes Passwort f\u00FCr Entwicklermodus l\u00F6schen
FEED_PRECENTRAL=webOS Nation
FEED_WEBOSINTERNALS=WebOS-Internals
FEED_PATCHES=WebOS Patches
FEED_KERNELS=WebOS Kernels
FEED_PRETHEMER=PreThemer
FEED_PCTHEMES=webOS Nation Themes
FEED_CLOCK=Clock Themes
Settings.jCheckBox1.text=<html>Wenn m\u00F6glich Ger\u00E4tenamen benutzen
OK=OK
@@ -0,0 +1,313 @@
# To change this template, choose Tools | Templates
# and open the template in the editor.
MainView.jLabel2.text=Device:
MainView.fileMenu.text=Fichier
MainView.jLayeredPane7.border.title=Fichiers \u00E0 installer
MainView.jButton3.text=Installer
MainView.toolMenu.text=Outils
MainView.helpMenu.text=Aide
MainView.jMenuItem1.text=Ajouter un fichier ...
MainView.jMenuItem2.text=R\u00E9installer Novacom
MainView.jMenuItem3.text=Envoyer un fichier
MainView.jMenuItem4.text=Recevoir un fichier
MainView.jMenuItem5.text=Gestion des p\u00E9riph\u00E9riques
MainView.jMenuItem6.text=Utilisation
MainView.jMenuItem7.text=Responsabilit\u00E9
MainView.aboutMenuItem.text=A propos
DoctorDownloader.jLabel1.text_1=<html>Novacom T\u00E9l\u00E9chargement
Usage.jLayeredPane2.border.title=Comment utiliser
Usage.jTextPane1.text=<html><body style="font:1em">Avant WebOS Quick Install fonctionne correctement, il y a quelques exigences mineures:<br/><ul><li/>Driver Novacom install\u00E9 sur cet ordinateur<br/><br/>Si vous voulez r\u00E9installer le composant, cliquez sur le "R\u00E9installer Novacom" option dans le menu principal Fichier.<br/><br/><li/>Mode d\u00E9veloppeur activ\u00E9.<br/><br/>Cela peut \u00EAtre fait par tapant 'upupdowndownleftrightleftrightbastart', Ouvrez DevMode l'application, et d'activer la fonction.<br/><br/><li/Lorsque vous branchez votre appareil, choisissez "Charger".</ul></body>
Usage.jTextPane1.contentType=text/html
ReveiveFile.jLabel2.text=Fichier:
ReceiveFile.jButton1.text=...
ReveiveFile.jLabel1.text=Destination:
ReceiveFile.jButton2.text=Obtenir de p\u00E9riph\u00E9rique
ReceiveFile.jButton3.text=Annuler
SendFile.jButton1.text=...
SendFile.jLabel2.text=Fichier:
SendFile.jLabel1.text=Destination:
SendFile.jButton3.text=Annuler
SendFile.jButton2.text=Envoyer au p\u00E9riph\u00E9rique
DeviceManagement.jLabel2.text=
DeviceManagement.jLabel3.text=
DeviceManagement.jLabel9.text=
DeviceManagement.jButton1.text=D\u00E9sinstaller
DeviceManagement.jLabel8.text=
DeviceManagement.jLayeredPane3.border.title=Contenu Utilisateur-install\u00E9
DeviceManagement.jLabel4.text=
DeviceManagement.jLabel5.text=
DeviceManagement.jTable1.columnModel.title1=
DeviceManagement.jTable1.columnModel.title0=Nom
DeviceManagement.jLayeredPane2.border.title=Info appareil
DeviceManagement.jLabel1.text=
DeviceManagement.jLabel10.text=
DeviceManagement.jLabel11.text=
DeviceManagement.jLabel12.text=
DeviceManagement.jLabel13.text=
LOADING_LIST...=Chargement de la liste...
{0}_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN.={0} est d\u00E9branch\u00E9. S'il vous pla\u00EEt se reconnecter puis r\u00E9essayez.
DEVICE_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN.=L'appareil est d\u00E9branch\u00E9. S'il vous pla\u00EEt se reconnecter puis r\u00E9essayez.
DEVICE\:=Device:
OS\:=OS:
ARCHITECTURE\:=Architecture:
BUILD_NAME\:=Construire nom:
BUILD_TIME\:=Temps de construction:
CPU_TYPE\:=Type de processeur:
CPU_SPEED\:=Vitesse du processeur:
CPU_HARDWARE\:=Mat\u00E9riel du processeur:
MODEM_TYPE\:=Type de modem:
MODEM_FIRMWARE\:=Firmware de modem:
DEPENDANT_PACKAGES_EXIST_WARNING=Attention: Le suivi des paquets d\u00E9pendent de \"{0}\" et seront retirer avec elle:
WARNING=Attention
PROCESSING_FINISHED_DOWNLOAD._THIS_MAY_TAKE_A_FEW_MINUTES.=Traitement termin\u00E9 le t\u00E9l\u00E9chargement. Cela peut prendre quelques minutes.
INSTALLING_DRIVER...=Installation du driver...
DRIVER_INSTALLED_SUCCESSFULLY.=Driver install\u00E9 avec succ\u00E8s.
ERROR\:_DRIVER_INSTALLATION_FAILED=ERREUR: L'installation du driver a \u00E9chou\u00E9
ERROR\:=ERREUR:
PLEASE_WAIT...=S'il vous pla\u00EEt patienter...
SELECT=Select
FILE_TRANSFERRED_SUCCESSFULLY.=Dossier transf\u00E9r\u00E9 avec succ\u00E8s.
FILE_TRANSFER_FAILED.=Le transfert de fichiers a \u00E9chou\u00E9.
SYSTEM_IS_BUSY._TRY_AGAIN_LATER.=Le syst\u00E8me est occup\u00E9. R\u00E9essayez plus tard.
CONNECTING...=Connecting...
DOWNLOADING\:=T\u00E9l\u00E9chargement:
TRANSFERRING_AND_APPLYING\:=Transfert et de l'application:
TRANSFERRING\:=Transfert:
INSTALLING\:=Installation:
INSTALL=Installer
NO_DEVICES_ARE_CONNECTED._CONNECT_A_DEVICE_THEN_RELAUNCH_WEBOS_QUICK_INSTALL.=Pas de p\u00E9riph\u00E9riques sont connect\u00E9s. Connectez un p\u00E9riph\u00E9rique puis relancer WebOS Quick Install.
NO_DEVICES_FOUND=Aucun p\u00E9riph\u00E9rique trouv\u00E9
FULL_WOSQI_DISCLAIMER=Ce programme est destin\u00E9 \u00E0 \u00EAtre utilis\u00E9 avec des applications WebOS qui sont dans l'essai, qui, en vertu de l'article 4.2 de l'Accord Palm licence du kit SDK permet de telles applications non autoris\u00E9es \u00E0 \u00EAtre install\u00E9 sur les appareils Palm. En utilisant ce programme, l'utilisateur comprend que les applications install\u00E9es webOS peut \u00EAtre dangereux et n'ont pas \u00E9t\u00E9 approuv\u00E9s pour la s\u00E9curit\u00E9 ou la stabilit\u00E9 par Palm Inc et pourrait annuler la garantie de votre appareil. Installation des paquetages webOS sont fait \u00E0 vos risques et p\u00E9rils et ni le d\u00E9veloppeur de WebOS Quick Install, ni Palm Inc peut \u00EAtre tenu responsable.
DISCLAIMER=Responsabilit\u00E9
FOR_WEBOS_QUICK_INSTALL_TO_RUN_CORRECTLY,_YOUR_COMPUTER_NEEDS_TO_HAVE_THE_NOVACOM_DRIVER_INSTALLED._WOULD_YOU_LIKE_TO_INSTALL_IT_NOW?=Pour WebOS Quick Install afin de fonctionner correctement, votre ordinateur doit avoir install\u00E9 le driver Novacom. Souhaitez-vous l'installer maintenant?
NOVACOM_DRIVER_MISSING=Driver Novacom manquant
JAR_FILES_(*.JAR)=Fichiers JAR (*.jar)
WEBOS_FILES_(*.IPK,_*.PATCH,_*.DIFF)=Fichiers webOS (*.ipk, *.patch, *.diff)
REPEATING_CONNECTION_WARNING=Il n'y a pas de dispositifs actuellement connect\u00E9. S'il vous pla\u00EEt connecter un p\u00E9riph\u00E9rique de continuer.
WEBOS_DOCTOR_NEEDED_FOR_DRIVERS=Pour installer le driver Novacom sur votre syst\u00E8me, un webOSDoctor est temporairement n\u00E9cessaire. Vous pouvez le t\u00E9l\u00E9charger maintenant (environ 200 MB) ou, si vous avez d\u00E9j\u00E0 un t\u00E9l\u00E9charg\u00E9, vous pouvez s\u00E9lectionner celui-l\u00E0, et le driver sera install\u00E9.
WEBOSDOCTOR_REQUIRED=webOSDoctor requis
DOWNLOAD=T\u00E9l\u00E9charger
SELECT_FILE...=S\u00E9lectionner un fichier...
CANCEL=Annuler
InstalledPkgInfo.jLabel1.text=Nom:
InstalledPkgInfo.jLabel2.text=Version:
InstalledPkgInfo.jLabel4.text=ID:
InstalledPkgInfo.jButton1.text=Fermer
InstalledPkgInfo.jLabel11.text=Auteur:
InstalledPkgInfo.title=Info Package
UNKNOWN=Inconnu
InstalledPatchInfo.title=Info Package
InstalledPatchInfo.jButton1.text=Fermer
InstalledPatchInfo.jLabel4.text=ID:
InstalledPatchInfo.jLabel2.text=Version:
InstalledPatchInfo.jLabel1.text=Nom:
InstalledPatchInfo.jLabel5.text=Description:
InstalledPatchInfo.jLabel11.text=Auteur:
About.closeButton.text=Fermer
About.jLabel5.text=Aide de soutien au d\u00E9veloppement
About.appVersionLabel.text=Version 4.5.0
About.jLabel2.text=La traduction de fran\u00E7ais a fait par Jake Morrison.
About.jLabel4.text=<html>Copyright \u00A9 2009-2013 Jason Robitaille. Tous droits r\u00E9serv\u00E9s.
About.jLabel6.text=<html><p align="justify">Jason Robitaille et Canuck Coding sont en aucun cas affili\u00E9 avec HP ou LG ou des sous filiales. Palm, Pre, Pixi, Veer, TouchPad, et WebOS sont des marques commerciales ou des marques d\u00E9pos\u00E9es appartenant \u00E0 ou sous licence de Hewlett-Packard www.hpwebos.com</p>
FeedLoader.jLabel5.text=Le t\u00E9l\u00E9chargement et l'analyse:
FeedLoader.jLabel6.text=
FeedViewer.jLayeredPane1.TabConstraints.tabTitle=Mises \u00E0 jour
FeedViewer.jLayeredPane2.TabConstraints.tabTitle=Applications
FeedViewer.jLayeredPane3.TabConstraints.tabTitle=Services
FeedViewer.jLayeredPane4.TabConstraints.tabTitle=Plugins
FeedViewer.jLayeredPane5.TabConstraints.tabTitle=Apps de Linux
FeedViewer.jLayeredPane6.TabConstraints.tabTitle=Page d'accueil
FeedViewer.jLayeredPane7.TabConstraints.tabTitle=Patches
FeedViewer.jLayeredPane8.TabConstraints.tabTitle=Th\u00E8mes
FeedViewer.jTextField1.text=
FeedViewer.jButton1.text=
FeedViewer.jButton2.text=Installer
FeedViewer.jLabel1.text=<html>
FeedViewer.jLabel2.text=<html>
FeedViewer.jTextPane1.contentType=text/html
FeedViewer.jTextPane1.text=<html>
FeedViewer.jLabel4.text=<html><b>Feed:</b>
FeedViewer.jLabel3.text=<html><b>License:</b>
FeedViewer.jLabel5.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel6.text=<html><b>Derni\u00E8re mise \u00E0 jour:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel8.text=<html><b>Description:</b>
FeedViewer.jLabel7.text=<html>
FeedViewer.jLabel9.text=<html><b>D\u00E9veloppeur:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel10.text=<html>
FeedViewer.jLabel11.text=<html><a href="#">Page d'accueil</a>
FeedViewer.jTextField2.text=
FeedViewer.jLabel22.text=<html><a href="#">Page d'accueil</a>
FeedViewer.jLabel21.text=<html>
FeedViewer.jLabel20.text=<html><b>D\u00E9veloppeur:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel19.text=<html>
FeedViewer.jLabel18.text=<html><b>Description:</b>
FeedViewer.jLabel17.text=<html><b>Derni\u00E8re mise \u00E0 jour:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel16.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel15.text=<html><b>License:</b>
FeedViewer.jLabel14.text=<html><b>Feed:</b>
FeedViewer.jTextPane2.text=<html>
FeedViewer.jTextPane2.contentType=text/html
FeedViewer.jLabel13.text=<html>
FeedViewer.jLabel12.text=<html>
FeedViewer.jButton4.text=Installer
FeedViewer.jButton3.text=
FeedViewer.jLabel33.text=<html><a href="#">Page d'accueil</a>
FeedViewer.jLabel32.text=<html>
FeedViewer.jLabel31.text=<html><b>D\u00E9veloppeur:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel30.text=<html>
FeedViewer.jLabel29.text=<html><b>Description:</b>
FeedViewer.jLabel28.text=<html><b>Derni\u00E8re mise \u00E0 jour:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel27.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel26.text=<html><b>License:</b>
FeedViewer.jLabel25.text=<html><b>Feed:</b>
FeedViewer.jTextPane3.text=<html>
FeedViewer.jTextPane3.contentType=text/html
FeedViewer.jLabel24.text=<html>
FeedViewer.jLabel23.text=<html>
FeedViewer.jButton6.text=Installer
FeedViewer.jButton5.text=
FeedViewer.jTextField3.text=
FeedViewer.jLabel44.text=<html><a href="#">Page d'accueil</a>
FeedViewer.jLabel43.text=<html>
FeedViewer.jLabel42.text=<html><b>D\u00E9veloppeur:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel41.text=<html>
FeedViewer.jLabel40.text=<html><b>Description:</b>
FeedViewer.jLabel39.text=<html><b>Derni\u00E8re mise \u00E0 jour:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel38.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel37.text=<html><b>License:</b>
FeedViewer.jLabel36.text=<html><b>Feed:</b>
FeedViewer.jTextPane4.text=<html>
FeedViewer.jTextPane4.contentType=text/html
FeedViewer.jLabel35.text=<html>
FeedViewer.jLabel34.text=<html>
FeedViewer.jButton8.text=Installer
FeedViewer.jButton7.text=
FeedViewer.jTextField4.text=
FeedViewer.jTextField5.text=
FeedViewer.jLabel55.text=<html><a href="#">Page d'accueil</a>
FeedViewer.jLabel54.text=<html>
FeedViewer.jLabel53.text=<html><b>D\u00E9veloppeur:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel52.text=<html>
FeedViewer.jLabel51.text=<html><b>Description:</b>
FeedViewer.jLabel50.text=<html><b>Derni\u00E8re mise \u00E0 jour:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel49.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel48.text=<html><b>License:</b>
FeedViewer.jLabel47.text=<html><b>Feed:</b>
FeedViewer.jTextPane5.text=<html>
FeedViewer.jTextPane5.contentType=text/html
FeedViewer.jLabel46.text=<html>
FeedViewer.jLabel45.text=<html>
FeedViewer.jButton10.text=Installer
FeedViewer.jButton9.text=
FeedViewer.jLabel66.text=<html><a href="#">Page d'accueil</a>
FeedViewer.jLabel65.text=<html>
FeedViewer.jLabel64.text=<html><b>D\u00E9veloppeur:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel63.text=<html>
FeedViewer.jLabel62.text=<html><b>Description:</b>
FeedViewer.jLabel61.text=<html><b>Derni\u00E8re mise \u00E0 jour:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel60.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel59.text=<html><b>License:</b>
FeedViewer.jLabel58.text=<html><b>Feed:</b>
FeedViewer.jTextPane6.text=<html>
FeedViewer.jTextPane6.contentType=text/html
FeedViewer.jLabel57.text=<html>
FeedViewer.jLabel56.text=<html>
FeedViewer.jButton12.text=Installer
FeedViewer.jButton11.text=
FeedViewer.jTextField6.text=
FeedViewer.jLabel77.text=<html><a href="#">Page d'accueil</a>
FeedViewer.jLabel76.text=<html>
FeedViewer.jLabel75.text=<html><b>D\u00E9veloppeur:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel74.text=<html>
FeedViewer.jLabel73.text=<html><b>Description:</b>
FeedViewer.jLabel72.text=<html><b>Derni\u00E8re mise \u00E0 jour:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel71.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel70.text=<html><b>License:</b>
FeedViewer.jLabel69.text=<html><b>Feed:</b>
FeedViewer.jTextPane7.text=<html>
FeedViewer.jTextPane7.contentType=text/html
FeedViewer.jLabel68.text=<html>
FeedViewer.jLabel67.text=<html>
FeedViewer.jButton14.text=Installer
FeedViewer.jButton13.text=
FeedViewer.jTextField7.text=
FeedViewer.jLabel88.text=<html><a href="#">Page d'accueil</a>
FeedViewer.jLabel87.text=<html>
FeedViewer.jLabel86.text=<html><b>D\u00E9veloppeur:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel85.text=<html>
FeedViewer.jLabel84.text=<html><b>Description:</b>
FeedViewer.jLabel83.text=<html><b>Derni\u00E8re mise \u00E0 jour:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel82.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel81.text=<html><b>License:</b>
FeedViewer.jLabel80.text=<html><b>Feed:</b>
FeedViewer.jTextPane8.text=<html>
FeedViewer.jTextPane8.contentType=text/html
FeedViewer.jLabel79.text=<html>
FeedViewer.jLabel78.text=
FeedViewer.jButton16.text=Update
FeedViewer.jLayeredPane9.TabConstraints.tabTitle=Daemon de Linux
FeedViewer.jLabel99.text=<html><a href="#">Page d'accueil</a>
FeedViewer.jLabel98.text=<html>
FeedViewer.jLabel97.text=<html><b>D\u00E9veloppeur:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel96.text=<html>
FeedViewer.jLabel95.text=<html><b>Description:</b>
FeedViewer.jLabel94.text=<html><b>Derni\u00E8re mise \u00E0 jour:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel93.text=<html><b>Version:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel92.text=<html><b>License:</b>
FeedViewer.jLabel91.text=<html><b>Feed:</b>
FeedViewer.jTextPane9.text=<html>
FeedViewer.jTextPane9.contentType=text/html
FeedViewer.jLabel90.text=<html>
FeedViewer.jLabel89.text=<html>
FeedViewer.jButton18.text=Installer
FeedViewer.jButton17.text=
FeedViewer.jTextField9.text=
SendFile.title=Envoyer un fichier
ReceiveFile.title=Recevoir un fichier
FeedViewer.availablePackagesTabs.TabConstraints.tabTitle=Les Paquets Disponibles
Installer.jLabel5.text=
FeedViewer.jButton15.text=Tout mettre \u00E0 jour
ALL=Tous Les
WEBOS_PACKAGE_FILE=Fichier Package de WebOS
WEBOS_PATCH_FILE=Fichier Patch de WebOS
WEBOS_DIFF_FILE=Fichier Diff de WebOS
UNKNOWN_FILE=Fichier Inconnu
ERROR\:_FEED_LOADING_FAILED=ERREUR: Flux chargement a \u00E9chou\u00E9
ERROR\:_DRIVER_INSTALLATION_FAILED=ERREUR: L'installation du driver a \u00E9chou\u00E9
ERROR\:_UNABLE_TO_DOWNLOAD_{0}=ERREUR: Impossible de t\u00E9l\u00E9charger {0}
VERSION\:=Version:
DEVELOPER\:=D\u00E9veloppeur:
LAST_UPDATED\:=Derni\u00E8re mise \u00E0 jour:
NO_PACKAGES_FOUND=Aucun paquet trouv\u00E9
DEPENDANCY_INSTALL_WARNING=Attention: \"{0}\" appname d\u00E9pend des paquets suivants seront install\u00E9s et avec elle:
NO_UPDATES_FOUND=Aucune mise \u00E0 jour introuvable
MainView.installTable.columnModel.title2=Type
MainView.installTable.columnModel.title1=Taille
MainView.installTable.columnModel.title0=Nom
Settings.title=Param\u00E8tres
Settings.jLabel1.text=Langue:
MainView.jMenuItem8.text=Param\u00E8tres
<SYSTEM_DEFAULT>=<Syst\u00E8me par d\u00E9faut>
ENGLISH=Anglais
FRENCH=Fran\u00E7ais
GERMAN=Allemande
SIMPLIFIED_CHINESE=Chinois simplifi\u00E9
THE_NEW_LANGUAGE_WILL_TAKE_EFFECT_THE_NEXT_TIME_WEBOS_QUICK_INSTALL_IS_LAUNCHED.=Le nouveau langue va entrer en vigueur la prochaine fois WebOS Quick Install est lanc\u00E9e.
LANGUAGE_CHANGED.=Langue modifi\u00E9
ERROR\:_INVALID_FEED_URL=ERREUR: URL de flux non valide
CUSTOM_FEED_URL\:=URL de flux personnalis\u00E9es:
EXIT=Quitter
MainView.jMenuItem9.text=Ligne de commande Linux
Settings.jLabel2.text=Flux par D\u00E9faut:
Settings.jLabel3.text=Flux par Personnalis\u00E9:
Settings.jButton1.text=Delete stored DevMode passwords
FEED_PRECENTRAL=webOS Nation
FEED_WEBOSINTERNALS=WebOS-Internals
FEED_PATCHES=Tache de WebOS
FEED_KERNELS=WebOS Kernels
FEED_PRETHEMER=PreThemer
FEED_PCTHEMES=Th\u00E8mes de webOS Nation
FEED_CLOCK=Th\u00E8mes de Horlage
Settings.jCheckBox1.text=<html>Supprimer les mots des passe stock\u00E9s DevMode
RETRY=R\u00E9essayer
@@ -0,0 +1,313 @@
# To change this template, choose Tools | Templates
# and open the template in the editor.
MainView.jLabel2.text=\u8BBE\u5907:
MainView.fileMenu.text=\u6587\u4EF6
MainView.jLayeredPane7.border.title=\u4F9B\u5B89\u88C5\u7684\u6587\u4EF6
MainView.jButton3.text=\u5B89\u88C5
MainView.toolMenu.text=\u5DE5\u5177
MainView.helpMenu.text=\u5E2E\u52A9
MainView.jMenuItem1.text=\u6DFB\u52A0\u6587\u4EF6...
MainView.jMenuItem2.text=\u91CD\u5B89\u88C5Novacom\u9A71\u52A8
MainView.jMenuItem3.text=\u53D1\u9001\u6587\u4EF6
MainView.jMenuItem4.text=\u63A5\u6536\u6587\u4EF6
MainView.jMenuItem5.text=\u8BBE\u5907\u7BA1\u7406
MainView.jMenuItem6.text=\u4F7F\u7528
MainView.jMenuItem7.text=\u653E\u5F03
MainView.aboutMenuItem.text=\u5173\u4E8E
DoctorDownloader.jLabel1.text_1=<html>Novacom\u4E0B\u8F7D\u4E2D
Usage.jLayeredPane2.border.title=\u5982\u4F55\u4F7F\u7528
Usage.jTextPane1.text=<html><body style="font:1em">\u672C\u7A0B\u5E8F\u6B63\u5E38\u8FD0\u884C\u524D\u63D0:<br/><ul><li/>\u5B89\u88C5Novacom\u9A71\u52A8<br/><br/>\u53EF\u70B9\u51FB\u9876\u90E8\u83DC\u5355\u9009\u62E9\u91CD\u65B0\u5B89\u88C5Novacom\u9A71\u52A8<br/><br/><li/>\u5DF2\u5F00\u542F\u5F00\u53D1\u8005\u6A21\u5F0F<br/><br/>\u4E3B\u754C\u9762\u8FDE\u7EED\u8F93\u5165"upupdowndownleftrightleftrightbastart"\u8C03\u51FA\u5F00\u53D1\u8005\u6A21\u5F0F\u9009\u9879<br/><br/><li/>\u624B\u673A\u63A5\u6570\u636E\u7EBF\u8FDE\u7535\u8111\u540E\u9009\u62E9"Just charge".</ul></body>
Usage.jTextPane1.contentType=text/html
ReveiveFile.jLabel2.text=\u6587\u4EF6:
ReceiveFile.jButton1.text=...
ReveiveFile.jLabel1.text=\u76EE\u6807:
ReceiveFile.jButton2.text=\u53D6\u81EA\u8BBE\u5907
ReceiveFile.jButton3.text=\u53D6\u6D88
SendFile.jButton1.text=...
SendFile.jLabel2.text=\u6587\u4EF6:
SendFile.jLabel1.text=\u76EE\u6807:
SendFile.jButton3.text=\u53D6\u6D88
SendFile.jButton2.text=\u53D1\u5F80\u8BBE\u5907
DeviceManagement.jLabel2.text=
DeviceManagement.jLabel3.text=
DeviceManagement.jLabel9.text=
DeviceManagement.jButton1.text=\u5378\u8F7D
DeviceManagement.jLabel8.text=
DeviceManagement.jLayeredPane3.border.title=\u7528\u6237\u5DF2\u5B89\u88C5\u5185\u5BB9
DeviceManagement.jLabel4.text=
DeviceManagement.jLabel5.text=
DeviceManagement.jTable1.columnModel.title1=
DeviceManagement.jTable1.columnModel.title0=\u540D\u79F0
DeviceManagement.jLayeredPane2.border.title=\u8BBE\u5907\u4FE1\u606F
DeviceManagement.jLabel1.text=
DeviceManagement.jLabel10.text=
DeviceManagement.jLabel11.text=
DeviceManagement.jLabel12.text=
DeviceManagement.jLabel13.text=
LOADING_LIST...=\u5217\u8868\u5BFC\u5165\u4E2D...
{0}_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN.={0} \u8FDE\u63A5\u4E2D\u65AD,\u8BF7\u91CD\u8BD5
DEVICE_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN.=\u8FDE\u63A5\u4E2D\u65AD,\u8BF7\u91CD\u8BD5
DEVICE\:=\u8BBE\u5907:
OS\:=\u64CD\u4F5C\u7CFB\u7EDF:
ARCHITECTURE\:=\u7ED3\u6784:
BUILD_NAME\:=\u5EFA\u7ACB\u540D\u79F0:
BUILD_TIME\:=\u5EFA\u7ACB\u65F6\u95F4:
CPU_TYPE\:=CPU\u7C7B\u578B:
CPU_SPEED\:=CPU\u901F\u5EA6:
CPU_HARDWARE\:=CPU\u786C\u4EF6:
MODEM_TYPE\:=\u732B\u7C7B\u578B:
MODEM_FIRMWARE\:=\u732B\u56FA\u4EF6:
DEPENDANT_PACKAGES_EXIST_WARNING=\u6CE8\u610F:\u4EE5\u4E0B\u6587\u4EF6\u4E0E\"{0}\"\u5173\u8054,\u5C06\u4F1A\u4E00\u8D77\u5220\u9664
WARNING=\u6CE8\u610F
PROCESSING_FINISHED_DOWNLOAD._THIS_MAY_TAKE_A_FEW_MINUTES.=\u7A0D\u7B49\u7247\u523B
INSTALLING_DRIVER...=\u6B63\u5728\u5B89\u88C5\u9A71\u52A8...
DRIVER_INSTALLED_SUCCESSFULLY.=\u9A71\u52A8\u5B89\u88C5\u6210\u529F.
ERROR\:_DRIVER_INSTALLATION_FAILED=\u51FA\u9519:\u9A71\u52A8\u5B89\u88C5\u5931\u8D25
ERROR\:=\u51FA\u9519:
PLEASE_WAIT...=\u7A0D\u7B49...
SELECT=\u9009\u62E9
FILE_TRANSFERRED_SUCCESSFULLY.=\u6587\u4EF6\u4F20\u9001\u6210\u529F
FILE_TRANSFER_FAILED.=\u6587\u4EF6\u4F20\u9001\u5931\u8D25
SYSTEM_IS_BUSY._TRY_AGAIN_LATER.=\u7CFB\u7EDF\u5FD9,\u7A0D\u540E\u518D\u8BD5.
CONNECTING...=\u8FDE\u63A5\u4E2D...
DOWNLOADING\:=\u4E0B\u8F7D\u4E2D:
TRANSFERRING_AND_APPLYING\:=\u4F20\u9001\u4E2D:
TRANSFERRING\:=\u4F20\u9001\u4E2D:
INSTALLING\:=\u5B89\u88C5\u4E2D:
INSTALL=\u5B89\u88C5
NO_DEVICES_ARE_CONNECTED._CONNECT_A_DEVICE_THEN_RELAUNCH_WEBOS_QUICK_INSTALL.=\u8BBE\u5907\u672A\u8FDE\u63A5,\u8BF7\u8FDE\u63A5\u540E\u518D\u6B21\u8FD0\u884C
NO_DEVICES_FOUND=\u672A\u53D1\u73B0\u8BBE\u5907
FULL_WOSQI_DISCLAIMER=\u7A0B\u5E8F\u6709\u98CE\u9669,\u540E\u679C\u9700\u81EA\u8D1F,\u8BF7\u8C28\u614E\u4F7F\u7528.
DISCLAIMER=\u653E\u5F03
FOR_WEBOS_QUICK_INSTALL_TO_RUN_CORRECTLY,_YOUR_COMPUTER_NEEDS_TO_HAVE_THE_NOVACOM_DRIVER_INSTALLED._WOULD_YOU_LIKE_TO_INSTALL_IT_NOW?=\u5B89\u88C5Novacom\u9A71\u52A8\u624D\u80FD\u7528,\u73B0\u5728\u5B89\u88C5\u5417?
NOVACOM_DRIVER_MISSING=Novacom\u9A71\u52A8\u7F3A\u5931
JAR_FILES_(*.JAR)=Jar\u6587\u4EF6(*.jar)
WEBOS_FILES_(*.IPK,_*.PATCH,_*.DIFF)=webOS\u6587\u4EF6(*.ipk, *.patch, *.diff)
REPEATING_CONNECTION_WARNING=\u8BF7\u8FDE\u63A5\u597D\u8BBE\u5907\u518D\u7EE7\u7EED.
WEBOS_DOCTOR_NEEDED_FOR_DRIVERS=\u9700\u8981\u9009\u62E9webOSDoctor\u4EE5\u5B89\u88C5Novacom\u9A71\u52A8.\u6CA1\u6709\u5C31\u73B0\u5728\u4E0B\u8F7D\u4E00\u4E2A.
WEBOSDOCTOR_REQUIRED=\u9700\u8981webOSDoctor
DOWNLOAD=\u4E0B\u8F7D
SELECT_FILE...=\u9009\u62E9\u6587\u4EF6...
CANCEL=\u53D6\u6D88
InstalledPkgInfo.jLabel1.text=\u540D\u79F0:
InstalledPkgInfo.jLabel2.text=\u7248\u672C:
InstalledPkgInfo.jLabel4.text=ID:
InstalledPkgInfo.jButton1.text=\u5173\u95ED
InstalledPkgInfo.jLabel11.text=\u4F5C\u8005:
InstalledPkgInfo.title=\u6587\u4EF6\u4FE1\u606F
UNKNOWN=\u672A\u77E5
InstalledPatchInfo.title=\u6587\u4EF6\u4FE1\u606F
InstalledPatchInfo.jButton1.text=\u5173\u95ED
InstalledPatchInfo.jLabel4.text=ID:
InstalledPatchInfo.jLabel2.text=\u7248\u672C:
InstalledPatchInfo.jLabel1.text=\u540D\u79F0:
InstalledPatchInfo.jLabel5.text=\u63CF\u8FF0:
InstalledPatchInfo.jLabel11.text=\u4F5C\u8005:
About.closeButton.text=\u5173\u95ED
About.jLabel5.text=\u5E2E\u52A9
About.appVersionLabel.text=\u7248\u672C\u53F7 4.5.0
About.jLabel2.text=\u7B80\u4F53\u4E2D\u6587\u7FFB\u8BD1:medigi8@twitter
About.jLabel4.text=<html>\u7248\u6743\u5F52Jason Robitaille\u6240\u6709,\u76D7\u7248\u5FC5\u7A76.
About.jLabel6.text=<html><p align="justify">\u6B64\u4E3A\u4E2A\u4EBA\u4F5C\u54C1,\u4E0EPalm\u516C\u53F8\u65E0\u5173.Palm,Pre,Pixi,Veer,TouchPad\u548CWebOS\u6CE8\u518C\u5546\u6807\u5F52 Hewlett-Packard\u516C\u53F8\u6240\u6709.</p>
FeedLoader.jLabel5.text=\u5206\u6790\u4E0B\u8F7D\u4E2D:
FeedLoader.jLabel6.text=
FeedViewer.jLayeredPane1.TabConstraints.tabTitle=\u66F4\u65B0
FeedViewer.jLayeredPane2.TabConstraints.tabTitle=\u5E94\u7528\u8F6F\u4EF6
FeedViewer.jLayeredPane3.TabConstraints.tabTitle=\u670D\u52A1
FeedViewer.jLayeredPane4.TabConstraints.tabTitle=\u63D2\u4EF6
FeedViewer.jLayeredPane5.TabConstraints.tabTitle=Linux\u8F6F\u4EF6
FeedViewer.jLayeredPane6.TabConstraints.tabTitle=\u5185\u6838
FeedViewer.jLayeredPane7.TabConstraints.tabTitle=\u8865\u4E01
FeedViewer.jLayeredPane8.TabConstraints.tabTitle=\u4E3B\u9898
FeedViewer.jTextField1.text=
FeedViewer.jButton1.text=
FeedViewer.jButton2.text=\u5B89\u88C5
FeedViewer.jLabel1.text=<html>
FeedViewer.jLabel2.text=<html>
FeedViewer.jTextPane1.contentType=text/html
FeedViewer.jTextPane1.text=<html>
FeedViewer.jLabel4.text=<html><b>\u6E90:</b>
FeedViewer.jLabel3.text=<html><b>\u8BB8\u53EF:</b>
FeedViewer.jLabel5.text=<html><b>\u7248\u672C:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel6.text=<html><b>\u4E0A\u6B21\u4FEE\u6539:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel8.text=<html><b>\u63CF\u8FF0:</b>
FeedViewer.jLabel7.text=<html>
FeedViewer.jLabel9.text=<html><b>\u4F5C\u8005:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel10.text=<html>
FeedViewer.jLabel11.text=<html><a href="#">\u4E3B\u754C\u9762</a>
FeedViewer.jTextField2.text=
FeedViewer.jLabel22.text=<html><a href="#">\u4E3B\u754C\u9762</a>
FeedViewer.jLabel21.text=<html>
FeedViewer.jLabel20.text=<html><b>\u4F5C\u8005:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel19.text=<html>
FeedViewer.jLabel18.text=<html><b>\u63CF\u8FF0:</b>
FeedViewer.jLabel17.text=<html><b>\u4E0A\u6B21\u4FEE\u6539:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel16.text=<html><b>\u7248\u672C:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel15.text=<html><b>\u8BB8\u53EF:</b>
FeedViewer.jLabel14.text=<html><b>\u6E90:</b>
FeedViewer.jTextPane2.text=<html>
FeedViewer.jTextPane2.contentType=text/html
FeedViewer.jLabel13.text=<html>
FeedViewer.jLabel12.text=<html>
FeedViewer.jButton4.text=\u5B89\u88C5
FeedViewer.jButton3.text=
FeedViewer.jLabel33.text=<html><a href="#">\u4E3B\u754C\u9762</a>
FeedViewer.jLabel32.text=<html>
FeedViewer.jLabel31.text=<html><b>\u4F5C\u8005:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel30.text=<html>
FeedViewer.jLabel29.text=<html><b>\u63CF\u8FF0:</b>
FeedViewer.jLabel28.text=<html><b>\u4E0A\u6B21\u4FEE\u6539:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel27.text=<html><b>\u7248\u672C:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel26.text=<html><b>\u8BB8\u53EF:</b>
FeedViewer.jLabel25.text=<html><b>\u6E90:</b>
FeedViewer.jTextPane3.text=<html>
FeedViewer.jTextPane3.contentType=text/html
FeedViewer.jLabel24.text=<html>
FeedViewer.jLabel23.text=<html>
FeedViewer.jButton6.text=\u5B89\u88C5
FeedViewer.jButton5.text=
FeedViewer.jTextField3.text=
FeedViewer.jLabel44.text=<html><a href="#">\u4E3B\u754C\u9762</a>
FeedViewer.jLabel43.text=<html>
FeedViewer.jLabel42.text=<html><b>\u4F5C\u8005:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel41.text=<html>
FeedViewer.jLabel40.text=<html><b>\u63CF\u8FF0:</b>
FeedViewer.jLabel39.text=<html><b>\u4E0A\u6B21\u4FEE\u6539:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel38.text=<html><b>\u7248\u672C:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel37.text=<html><b>\u8BB8\u53EF:</b>
FeedViewer.jLabel36.text=<html><b>\u6E90:</b>
FeedViewer.jTextPane4.text=<html>
FeedViewer.jTextPane4.contentType=text/html
FeedViewer.jLabel35.text=<html>
FeedViewer.jLabel34.text=<html>
FeedViewer.jButton8.text=\u5B89\u88C5
FeedViewer.jButton7.text=
FeedViewer.jTextField4.text=
FeedViewer.jTextField5.text=
FeedViewer.jLabel55.text=<html><a href="#">\u4E3B\u754C\u9762</a>
FeedViewer.jLabel54.text=<html>
FeedViewer.jLabel53.text=<html><b>\u4F5C\u8005:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel52.text=<html>
FeedViewer.jLabel51.text=<html><b>\u63CF\u8FF0:</b>
FeedViewer.jLabel50.text=<html><b>\u4E0A\u6B21\u4FEE\u6539:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel49.text=<html><b>\u7248\u672C:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel48.text=<html><b>\u8BB8\u53EF:</b>
FeedViewer.jLabel47.text=<html><b>\u6E90:</b>
FeedViewer.jTextPane5.text=<html>
FeedViewer.jTextPane5.contentType=text/html
FeedViewer.jLabel46.text=<html>
FeedViewer.jLabel45.text=<html>
FeedViewer.jButton10.text=\u5B89\u88C5
FeedViewer.jButton9.text=
FeedViewer.jLabel66.text=<html><a href="#">\u4E3B\u754C\u9762</a>
FeedViewer.jLabel65.text=<html>
FeedViewer.jLabel64.text=<html><b>\u4F5C\u8005:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel63.text=<html>
FeedViewer.jLabel62.text=<html><b>\u63CF\u8FF0:</b>
FeedViewer.jLabel61.text=<html><b>\u4E0A\u6B21\u4FEE\u6539:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel60.text=<html><b>\u7248\u672C:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel59.text=<html><b>\u8BB8\u53EF:</b>
FeedViewer.jLabel58.text=<html><b>\u6E90:</b>
FeedViewer.jTextPane6.text=<html>
FeedViewer.jTextPane6.contentType=text/html
FeedViewer.jLabel57.text=<html>
FeedViewer.jLabel56.text=<html>
FeedViewer.jButton12.text=\u5B89\u88C5
FeedViewer.jButton11.text=
FeedViewer.jTextField6.text=
FeedViewer.jLabel77.text=<html><a href="#">\u4E3B\u754C\u9762</a>
FeedViewer.jLabel76.text=<html>
FeedViewer.jLabel75.text=<html><b>\u4F5C\u8005:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel74.text=<html>
FeedViewer.jLabel73.text=<html><b>\u63CF\u8FF0:</b>
FeedViewer.jLabel72.text=<html><b>\u4E0A\u6B21\u4FEE\u6539:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel71.text=<html><b>\u7248\u672C:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel70.text=<html><b>\u8BB8\u53EF:</b>
FeedViewer.jLabel69.text=<html><b>\u6E90:</b>
FeedViewer.jTextPane7.text=<html>
FeedViewer.jTextPane7.contentType=text/html
FeedViewer.jLabel68.text=<html>
FeedViewer.jLabel67.text=<html>
FeedViewer.jButton14.text=\u5B89\u88C5
FeedViewer.jButton13.text=
FeedViewer.jTextField7.text=
FeedViewer.jLabel88.text=<html><a href="#">\u4E3B\u754C\u9762</a>
FeedViewer.jLabel87.text=<html>
FeedViewer.jLabel86.text=<html><b>\u4F5C\u8005:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel85.text=<html>
FeedViewer.jLabel84.text=<html><b>\u63CF\u8FF0:</b>
FeedViewer.jLabel83.text=<html><b>\u4E0A\u6B21\u4FEE\u6539:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel82.text=<html><b>\u7248\u672C:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel81.text=<html><b>\u8BB8\u53EF:</b>
FeedViewer.jLabel80.text=<html><b>\u6E90:</b>
FeedViewer.jTextPane8.text=<html>
FeedViewer.jTextPane8.contentType=text/html
FeedViewer.jLabel79.text=<html>
FeedViewer.jLabel78.text=
FeedViewer.jButton16.text=\u66F4\u65B0
FeedViewer.jLayeredPane9.TabConstraints.tabTitle=Linux\u540E\u53F0\u7A0B\u5E8F
FeedViewer.jLabel99.text=<html><a href="#">\u4E3B\u754C\u9762</a>
FeedViewer.jLabel98.text=<html>
FeedViewer.jLabel97.text=<html><b>\u4F5C\u8005:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel96.text=<html>
FeedViewer.jLabel95.text=<html><b>\u63CF\u8FF0:</b>
FeedViewer.jLabel94.text=<html><b>\u4E0A\u6B21\u4FEE\u6539:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel93.text=<html><b>\u7248\u672C:</b> &nbsp;&nbsp;&nbsp;
FeedViewer.jLabel92.text=<html><b>\u8BB8\u53EF:</b>
FeedViewer.jLabel91.text=<html><b>\u6E90:</b>
FeedViewer.jTextPane9.text=<html>
FeedViewer.jTextPane9.contentType=text/html
FeedViewer.jLabel90.text=<html>
FeedViewer.jLabel89.text=<html>
FeedViewer.jButton18.text=\u5B89\u88C5
FeedViewer.jButton17.text=
FeedViewer.jTextField9.text=
SendFile.title=\u53D1\u9001\u6587\u4EF6
ReceiveFile.title=\u63A5\u6536\u6587\u4EF6
FeedViewer.availablePackagesTabs.TabConstraints.tabTitle=\u53EF\u7528\u8F6F\u4EF6\u5305
Installer.jLabel5.text=
FeedViewer.jButton15.text=\u5168\u90E8\u66F4\u65B0
ALL=\u5168\u90E8
WEBOS_PACKAGE_FILE=WebOS\u8F6F\u4EF6\u5305\u6587\u4EF6
WEBOS_PATCH_FILE=WebOS\u8865\u4E01\u6587\u4EF6
WEBOS_DIFF_FILE=WebOS Diff\u6587\u4EF6
UNKNOWN_FILE=\u672A\u77E5\u6587\u4EF6
ERROR\:_FEED_LOADING_FAILED=\u51FA\u9519:\u5BFC\u5165\u6E90\u65F6\u5931\u8D25
ERROR\:_DRIVER_INSTALLATION_FAILED=\u51FA\u9519:\u9A71\u52A8\u5B89\u88C5\u5931\u8D25
ERROR\:_UNABLE_TO_DOWNLOAD_{0}=\u51FA\u9519:\u65E0\u6CD5\u4E0B\u8F7D{0}
VERSION\:=\u7248\u672C:
DEVELOPER\:=\u4F5C\u8005:
LAST_UPDATED\:=\u4E0A\u6B21\u4FEE\u6539:
NO_PACKAGES_FOUND=\u672A\u53D1\u73B0\u8F6F\u4EF6\u5305
DEPENDANCY_INSTALL_WARNING=\u8B66\u544A:\u4EE5\u4E0B\u6587\u4EF6\u4E0E{0}\u5173\u8054,\u5C06\u4F1A\u4E00\u5E76\u5B89\u88C5
NO_UPDATES_FOUND=\u672A\u53D1\u73B0\u66F4\u65B0
MainView.installTable.columnModel.title2=\u7C7B\u578B
MainView.installTable.columnModel.title1=\u5927\u5C0F
MainView.installTable.columnModel.title0=\u540D\u79F0
Settings.title=\u8BBE\u7F6E
Settings.jLabel1.text=\u8BED\u8A00:
MainView.jMenuItem8.text=\u8BBE\u7F6E
<SYSTEM_DEFAULT>=<\u7CFB\u7EDF\u9ED8\u8BA4>
ENGLISH=\u82F1\u8BED
FRENCH=\u6CD5\u8BED
GERMAN=\u5FB7\u8BED
SIMPLIFIED_CHINESE=\u7B80\u4F53\u4E2D\u6587
THE_NEW_LANGUAGE_WILL_TAKE_EFFECT_THE_NEXT_TIME_WEBOS_QUICK_INSTALL_IS_LAUNCHED.=\u66F4\u6539\u8BED\u8A00\u540E\u9700\u91CD\u542F\u7A0B\u5E8F.
LANGUAGE_CHANGED.=\u8BED\u8A00\u5DF2\u66F4\u6539
ERROR\:_INVALID_FEED_URL=\u51FA\u9519:\u65E0\u6548\u5730\u5740
CUSTOM_FEED_URL\:=\u9972\u6599\u5730\u5740:
EXIT=\u9000\u51FA
MainView.jMenuItem9.text=Linux\u547D\u4EE4\u884C
Settings.jLabel2.text=\u9ED8\u8BA4\u6E90:
Settings.jLabel3.text=\u81EA\u5B9A\u4E49\u6E90:
Settings.jButton1.text=\u5220\u9664\u5DF2\u5B58\u5F00\u53D1\u8005\u6A21\u5F0F\u5BC6\u7801
FEED_PRECENTRAL=webOS Nation
FEED_WEBOSINTERNALS=WebOS-Internals
FEED_PATCHES=WebOS\u8865\u4E01
FEED_KERNELS=WebOS\u5185\u6838
FEED_PRETHEMER=\u4E3B\u9898
FEED_PCTHEMES=webOS Nation \u4E3B\u9898
FEED_CLOCK=\u65F6\u949F\u4E3B\u9898
Settings.jCheckBox1.text=<html>\u5C3D\u53EF\u80FD\u4F7F\u7528\u8BBE\u5907\u540D\u79F0
OK=\u597D
@@ -0,0 +1,365 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.6" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
<Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.jMenuItem5.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="modal" type="boolean" value="true"/>
<Property name="name" type="java.lang.String" value="aboutBox" noResource="true"/>
<Property name="resizable" type="boolean" value="false"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosing"/>
<EventHandler event="keyPressed" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="formKeyPressed"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" min="-2" pref="619" max="-2" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" min="-2" pref="385" max="-2" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane1">
<Properties>
<Property name="name" type="java.lang.String" value="jLayeredPane1" noResource="true"/>
</Properties>
<Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jLayeredPane1MouseClicked"/>
<EventHandler event="keyTyped" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="jLayeredPane1KeyTyped"/>
</Events>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane3">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
<TitledBorder title="User-Installed Content">
<ResourceString PropertyName="titleX" bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jLayeredPane3.border.title" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</TitledBorder>
</Border>
</Property>
<Property name="name" type="java.lang.String" value="jLayeredPane3" noResource="true"/>
</Properties>
<Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jLayeredPane3MouseClicked"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="320" y="10" width="280" height="360" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<Properties>
<Property name="name" type="java.lang.String" value="jScrollPane1" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="50" width="240" height="260" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTable" name="jTable1">
<Properties>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
<Table columnCount="2" rowCount="0">
<Column editable="false" title="Name" type="java.lang.String"/>
<Column editable="true" title="" type="java.lang.Boolean"/>
</Table>
</Property>
<Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor">
<TableColumnModel selectionModel="0">
<Column maxWidth="-1" minWidth="-1" prefWidth="250" resizable="false">
<Title editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jTable1.columnModel.title0" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Title>
<Editor/>
<Renderer/>
</Column>
<Column maxWidth="-1" minWidth="-1" prefWidth="50" resizable="false">
<Title editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jTable1.columnModel.title1" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Title>
<Editor/>
<Renderer/>
</Column>
</TableColumnModel>
</Property>
<Property name="fillsViewportHeight" type="boolean" value="true"/>
<Property name="focusable" type="boolean" value="false"/>
<Property name="gridColor" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="c0" green="c0" red="c0" type="rgb"/>
</Property>
<Property name="name" type="java.lang.String" value="jTable1" noResource="true"/>
<Property name="selectionModel" type="javax.swing.ListSelectionModel" editor="org.netbeans.modules.form.editors2.JTableSelectionModelEditor">
<JTableSelectionModel selectionMode="0"/>
</Property>
<Property name="showVerticalLines" type="boolean" value="false"/>
<Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor">
<TableHeader reorderingAllowed="false" resizingAllowed="false"/>
</Property>
</Properties>
<Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jTable1MouseClicked"/>
<EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jTable1MousePressed"/>
<EventHandler event="mouseReleased" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jTable1MouseReleased"/>
<EventHandler event="keyTyped" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="jTable1KeyTyped"/>
</Events>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JComboBox" name="jComboBox1">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="2">
<StringItem index="0" value="Packages"/>
<StringItem index="1" value="Patches"/>
</StringArray>
</Property>
<Property name="focusable" type="boolean" value="false"/>
<Property name="name" type="java.lang.String" value="jComboBox1" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jComboBox1ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="154" y="20" width="100" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="jButton1">
<Properties>
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
<action class="ca.canucksoftware.WebOSQuickInstallManage" id="uninstall" methodName="uninstall"/>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jButton1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="focusable" type="boolean" value="false"/>
<Property name="name" type="java.lang.String" value="jButton1" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="150" y="320" width="110" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane2">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
<TitledBorder title="Device Info">
<ResourceString PropertyName="titleX" bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jLayeredPane2.border.title" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</TitledBorder>
</Border>
</Property>
<Property name="name" type="java.lang.String" value="jLayeredPane2" noResource="true"/>
</Properties>
<Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jLayeredPane2MouseClicked"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="10" width="280" height="360" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel7">
<Properties>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="name" type="java.lang.String" value="jLabel7" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="190" y="20" width="70" height="70" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel3">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jLabel3.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel3" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="180" width="250" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel13">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jLabel13.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel13" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="300" width="250" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel8">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jLabel8.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel8" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="240" width="250" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel12">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jLabel12.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel12" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="270" width="250" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel11">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jLabel11.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel11" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="330" width="250" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel9">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jLabel9.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel9" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="210" width="250" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel4">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jLabel4.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel4" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="150" width="250" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jLabel1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="60" width="170" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel10">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jLabel10.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel10" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="120" width="250" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jLabel2.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="30" width="170" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel5">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jLabel5.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel5" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="90" width="170" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
</SubComponents>
</Form>
@@ -0,0 +1,650 @@
/*
* WebOSQuickInstallAboutBox.java
*/
package ca.canucksoftware.wosqi;
import ca.canucksoftware.webos.InstalledEntry;
import ca.canucksoftware.webos.DeviceInfo;
import ca.canucksoftware.webos.WebOSConnection;
import java.awt.Color;
import java.net.URL;
import java.text.MessageFormat;
import java.util.ArrayList;
import org.jdesktop.application.Action;
import javax.swing.JOptionPane;
import javax.swing.ImageIcon;
import javax.swing.table.DefaultTableModel;
import java.util.TimerTask;
import java.util.Timer;
import java.util.ResourceBundle;
import javax.swing.JDialog;
import javax.swing.JFrame;
import org.json.JSONArray;
import org.json.JSONObject;
public class DeviceManagement extends javax.swing.JDialog {
private ResourceBundle bundle;
private WebOSConnection webOS;
private DefaultTableModel modTable;
private JSONArray apps;
private ArrayList<InstalledEntry> pkgs;
private ArrayList<InstalledEntry> filtered;
private Timer t;
public DeviceManagement(java.awt.Frame parent, WebOSConnection connection) {
super(parent);
bundle = WebOSQuickInstallApp.bundle;
initComponents();
webOS = connection;
apps = null;
pkgs = null;
filtered = new ArrayList<InstalledEntry>();
jTable1.setAutoCreateColumnsFromModel(false);
modTable = (DefaultTableModel) jTable1.getModel();
modTable.addRow(new Object[] {bundle.getString("LOADING_LIST..."),Boolean.FALSE});
this.getContentPane().requestFocus();
t = new Timer();
if(!webOS.isConnected()) {
DeviceInfo info = webOS.getDeviceInfo();
if(info!=null && !info.model().equals(DeviceInfo.Model.Unknown.toString())) {
JOptionPane.showMessageDialog(rootPane, MessageFormat.format(bundle
.getString("{0}_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN."),
new Object[] {info.model()}));
} else {
JOptionPane.showMessageDialog(rootPane, bundle
.getString("DEVICE_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN."));
}
t.schedule(new DoDispose(), 200);
} else {
t.schedule(new DoLoadDetails(), 100);
webOS.configIpkg();
}
}
private void loadDeviceDetails() {
DeviceInfo info = webOS.getDeviceInfo();
URL imgURL;
if(info.model().equals(DeviceInfo.Model.Emulator.toString())) {
imgURL = getClass().getResource("resources/Emulator 64x64.png");
} else if(info.model().equals(DeviceInfo.Model.Palm_Pixi.toString()) ||
info.model().equals(DeviceInfo.Model.Palm_Pixi_Plus.toString())) {
imgURL = getClass().getResource("resources/Palm Pixi 64x64.png");
} else if(info.model().equals(DeviceInfo.Model.Palm_Pre.toString()) ||
info.model().equals(DeviceInfo.Model.Palm_Pre_Plus.toString())) {
imgURL = getClass().getResource("resources/Palm Pre 64x64.png");
} else if(info.model().equals(DeviceInfo.Model.Palm_Pre_2.toString())) {
imgURL = getClass().getResource("resources/Palm Pre 2 64x64.png");
} else if(info.model().equals(DeviceInfo.Model.HP_Veer.toString())) {
imgURL = getClass().getResource("resources/HP Veer 64x64.png");
} else if(info.model().equals(DeviceInfo.Model.HP_TouchPad.toString())) {
imgURL = getClass().getResource("resources/HP TouchPad 64x64.png");
} else if(info.model().equals(DeviceInfo.Model.HP_Pre_3.toString())) {
imgURL = getClass().getResource("resources/HP Pre 3 64x64.png");
} else { //unknown
imgURL = getClass().getResource("resources/Palm Pre 2 64x64.png");
}
jLabel7.setIcon(new ImageIcon(imgURL));
jLabel2.setText(bundle.getString("DEVICE:") + " " + info.name());
jLabel1.setText(bundle.getString("OS:") + " webOS " + info.version());
jLabel5.setText(bundle.getString("ARCHITECTURE:") + " " + info.arch());
jLabel10.setText(bundle.getString("BUILD_NAME:") + " " + info.buildName());
jLabel4.setText(bundle.getString("BUILD_TIME:") + " " + info.buildTime());
if(!info.model().equals(DeviceInfo.Model.Emulator.toString())) {
try {
String out = webOS.runProgram("/bin/grep", new String[] {"-e", "Processor",
"-e", "BogoMIPS", "-e", "Hardware", "/proc/cpuinfo"});
String[] tokens = out.split("\n");
for(int i=0; i<tokens.length; i++) {
if(tokens[i].startsWith("Processor")) {
jLabel3.setText(bundle.getString("CPU_TYPE:") + " " +
tokens[i].substring(tokens[i].indexOf(":")+2));
} else if(tokens[i].startsWith("BogoMIPS")) {
jLabel9.setText(bundle.getString("CPU_SPEED:") + " " +
tokens[i].substring(tokens[i].indexOf(":")+2) + " MHz");
} else if(tokens[i].startsWith("Hardware")) {
jLabel8.setText(bundle.getString("CPU_HARDWARE:") + " " +
tokens[i].substring(tokens[i].indexOf(":")+2));
}
}
} catch(Exception e) {
System.err.println("Unable to get CPU info");
}
try {
String out = webOS.runProgram("/usr/bin/PmModemInfo", new String[] {"-e"});
String[] tokens = out.split("\n");
jLabel12.setText(bundle.getString("MODEM_TYPE:") + " " +
tokens[0].substring(tokens[0].indexOf("=")+1));
jLabel13.setText(bundle.getString("MODEM_FIRMWARE:") + " " +
tokens[1].substring(tokens[1].indexOf("=")+1));
jLabel11.setText(tokens[2].substring(1,5) + ": " + tokens[2].substring(6));
} catch(Exception e) {
System.err.println("Unable to get modem info");
}
}
t.schedule(new DoLoadPackages(), 100);
}
private void loadPackages() {
if(pkgs==null) {
try {
pkgs = webOS.listInstalled();
apps = getApps();
for(int i=0; i<pkgs.size(); i++) {
InstalledEntry curr = pkgs.get(i);
String name = curr.getName();
if(name.equals("This is a webOS application.")) {
if(apps!=null) {
JSONObject json = getAppInfoFromId(curr.getId());
try {
curr.setName(json.getString("title"));
curr.setDeveloper(json.getString("vendor"));
} catch(Exception e) {}
} else {
curr.setName(curr.getName(webOS));
}
}
}
} catch(StackOverflowError e) {
System.err.println(e.getMessage());
}
}
filtered.clear();
while(modTable.getRowCount()>0) {
modTable.removeRow(0);
}
for(int i=0; i<pkgs.size(); i++) {
InstalledEntry curr = pkgs.get(i);
if((jComboBox1.getSelectedIndex()==1)==
(curr.getId().startsWith("ca.canucksoftware.patches.") ||
curr.getId().startsWith("org.webosinternals.patches."))) {
filtered.add(curr);
modTable.addRow(new Object[] {curr.getName(), Boolean.FALSE});
}
}
}
private JSONArray getApps() {
JSONArray results = null;
try {
String out = webOS.runProgram("/usr/bin/luna-send", new String[] {"-n", "1",
"palm://com.palm.applicationManager/listApps", "{}"});
int leftBrace = out.indexOf("{");
int rightBrace = out.lastIndexOf("}");
if(leftBrace>-1 && rightBrace>-1) {
out = out.substring(leftBrace, rightBrace+1);
results = new JSONObject(out).getJSONArray("apps");
}
} catch(Exception e) {
System.err.println("Unable to get apps list from luna-send: " +
e.getMessage());
}
return results;
}
private JSONObject getAppInfoFromId(String appid) {
JSONObject result = null;
for(int i=0; i<apps.length(); i++) {
try {
JSONObject curr = apps.getJSONObject(i);
if(curr.getString("id").equals(appid)) {
result = curr;
break;
}
} catch(Exception e) {}
}
return result;
}
public void uninstall() {
webOS.remountPartitionReadWrite();
for(int i=0; i<modTable.getRowCount(); i++) {
if(modTable.getValueAt(i, 1)==Boolean.TRUE) {
InstalledEntry curr = filtered.get(i);
ArrayList<String> warn = webOS.whatDependsRecursive(curr.getId());
if(warn.size()>0) {
String warnMsg = "<html><body width=\"300px\">" +
MessageFormat.format(bundle
.getString("DEPENDANT_PACKAGES_EXIST_WARNING"),
new Object[] {modTable.getValueAt(i, 0)}) + "\n";
for(int j=0; j<warn.size(); j++) {
warnMsg += "\n" + pkgs.get(indexOfPackage(warn.get(j))).getName();
}
if(JOptionPane.showConfirmDialog(rootPane, warnMsg,
bundle.getString("WARNING"), JOptionPane.OK_CANCEL_OPTION,
JOptionPane.WARNING_MESSAGE)==JOptionPane.OK_OPTION) {
uninstallPackage(curr);
uninstall();
break;
} else {
break;
}
} else {
if(uninstallPackage(curr)) {
i--;
}
}
}
}
webOS.executeRestartFlags();
}
public int indexOfPackage(String appid) {
int result = -1;
for(int i=0; i<pkgs.size(); i++) {
if(pkgs.get(i).getId().equals(appid)) {
result = i;
break;
}
}
return result;
}
public int indexOfFiltered(String appid) {
int result = -1;
for(int i=0; i<filtered.size(); i++) {
if(filtered.get(i).getId().equals(appid)) {
result = i;
break;
}
}
return result;
}
public boolean uninstallPackage(InstalledEntry entry) {
InstalledEntry curr = entry;
boolean continueOn = true;
ArrayList<String> depends = webOS.whatDepends(entry.getId());
if(depends.size()>0) {
for(int i=0; i<depends.size(); i++) {
int index = indexOfPackage(depends.get(i));
if(index>-1) {
continueOn &= uninstallPackage(pkgs.get(index));
if(!continueOn) {
break;
}
}
}
}
if(continueOn && webOS.uninstall(curr.getId())) {
pkgs.remove(curr);
int index = indexOfFiltered(curr.getId());
if(index>-1) {
modTable.removeRow(index);
filtered.remove(index);
}
continueOn = true;
} else {
continueOn = false;
}
return continueOn;
}
@Action
public void closeManagement() {
dispose();
}
private void setState(boolean enable) {
jComboBox1.setEnabled(enable);
jButton1.setEnabled(enable);
jTable1.setEnabled(enable);
if(enable) {
jTable1.setBackground(new Color(255, 255, 255));
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
} else {
jTable1.setBackground(new Color(230, 230, 230));
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jLayeredPane1 = new javax.swing.JLayeredPane();
jLayeredPane3 = new javax.swing.JLayeredPane();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jComboBox1 = new javax.swing.JComboBox();
jButton1 = new javax.swing.JButton();
jLayeredPane2 = new javax.swing.JLayeredPane();
jLabel7 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jLabel12 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(bundle.getString("MainView.jMenuItem5.text")); // NOI18N
setModal(true);
setName("aboutBox"); // NOI18N
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
formKeyPressed(evt);
}
});
jLayeredPane1.setName("jLayeredPane1"); // NOI18N
jLayeredPane1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jLayeredPane1MouseClicked(evt);
}
});
jLayeredPane1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
jLayeredPane1KeyTyped(evt);
}
});
jLayeredPane3.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("DeviceManagement.jLayeredPane3.border.title"))); // NOI18N
jLayeredPane3.setName("jLayeredPane3"); // NOI18N
jLayeredPane3.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jLayeredPane3MouseClicked(evt);
}
});
jScrollPane1.setName("jScrollPane1"); // NOI18N
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Name", ""
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.Boolean.class
};
boolean[] canEdit = new boolean [] {
false, true
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jTable1.setFillsViewportHeight(true);
jTable1.setFocusable(false);
jTable1.setGridColor(new java.awt.Color(192, 192, 192));
jTable1.setName("jTable1"); // NOI18N
jTable1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
jTable1.setShowVerticalLines(false);
jTable1.getTableHeader().setResizingAllowed(false);
jTable1.getTableHeader().setReorderingAllowed(false);
jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jTable1MouseClicked(evt);
}
public void mousePressed(java.awt.event.MouseEvent evt) {
jTable1MousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
jTable1MouseReleased(evt);
}
});
jTable1.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent evt) {
jTable1KeyTyped(evt);
}
});
jScrollPane1.setViewportView(jTable1);
jTable1.getColumnModel().getColumn(0).setResizable(false);
jTable1.getColumnModel().getColumn(0).setPreferredWidth(250);
jTable1.getColumnModel().getColumn(0).setHeaderValue(bundle.getString("DeviceManagement.jTable1.columnModel.title0")); // NOI18N
jTable1.getColumnModel().getColumn(1).setResizable(false);
jTable1.getColumnModel().getColumn(1).setPreferredWidth(50);
jTable1.getColumnModel().getColumn(1).setHeaderValue(bundle.getString("DeviceManagement.jTable1.columnModel.title1")); // NOI18N
jScrollPane1.setBounds(20, 50, 240, 260);
jLayeredPane3.add(jScrollPane1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Packages", "Patches" }));
jComboBox1.setFocusable(false);
jComboBox1.setName("jComboBox1"); // NOI18N
jComboBox1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jComboBox1ActionPerformed(evt);
}
});
jComboBox1.setBounds(154, 20, 100, 20);
jLayeredPane3.add(jComboBox1, javax.swing.JLayeredPane.DEFAULT_LAYER);
javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(ca.canucksoftware.wosqi.WebOSQuickInstallApp.class).getContext().getActionMap(DeviceManagement.class, this);
jButton1.setAction(actionMap.get("uninstall")); // NOI18N
jButton1.setText(bundle.getString("DeviceManagement.jButton1.text")); // NOI18N
jButton1.setFocusable(false);
jButton1.setName("jButton1"); // NOI18N
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton1.setBounds(150, 320, 110, 23);
jLayeredPane3.add(jButton1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane3.setBounds(320, 10, 280, 360);
jLayeredPane1.add(jLayeredPane3, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane2.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("DeviceManagement.jLayeredPane2.border.title"))); // NOI18N
jLayeredPane2.setName("jLayeredPane2"); // NOI18N
jLayeredPane2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jLayeredPane2MouseClicked(evt);
}
});
jLabel7.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel7.setName("jLabel7"); // NOI18N
jLabel7.setBounds(190, 20, 70, 70);
jLayeredPane2.add(jLabel7, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel3.setText(bundle.getString("DeviceManagement.jLabel3.text")); // NOI18N
jLabel3.setName("jLabel3"); // NOI18N
jLabel3.setBounds(20, 180, 250, 20);
jLayeredPane2.add(jLabel3, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel13.setText(bundle.getString("DeviceManagement.jLabel13.text")); // NOI18N
jLabel13.setName("jLabel13"); // NOI18N
jLabel13.setBounds(20, 300, 250, 20);
jLayeredPane2.add(jLabel13, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel8.setText(bundle.getString("DeviceManagement.jLabel8.text")); // NOI18N
jLabel8.setName("jLabel8"); // NOI18N
jLabel8.setBounds(20, 240, 250, 20);
jLayeredPane2.add(jLabel8, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel12.setText(bundle.getString("DeviceManagement.jLabel12.text")); // NOI18N
jLabel12.setName("jLabel12"); // NOI18N
jLabel12.setBounds(20, 270, 250, 20);
jLayeredPane2.add(jLabel12, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel11.setText(bundle.getString("DeviceManagement.jLabel11.text")); // NOI18N
jLabel11.setName("jLabel11"); // NOI18N
jLabel11.setBounds(20, 330, 250, 20);
jLayeredPane2.add(jLabel11, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel9.setText(bundle.getString("DeviceManagement.jLabel9.text")); // NOI18N
jLabel9.setName("jLabel9"); // NOI18N
jLabel9.setBounds(20, 210, 250, 20);
jLayeredPane2.add(jLabel9, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel4.setText(bundle.getString("DeviceManagement.jLabel4.text")); // NOI18N
jLabel4.setName("jLabel4"); // NOI18N
jLabel4.setBounds(20, 150, 250, 20);
jLayeredPane2.add(jLabel4, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel1.setText(bundle.getString("DeviceManagement.jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
jLabel1.setBounds(20, 60, 170, 20);
jLayeredPane2.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel10.setText(bundle.getString("DeviceManagement.jLabel10.text")); // NOI18N
jLabel10.setName("jLabel10"); // NOI18N
jLabel10.setBounds(20, 120, 250, 20);
jLayeredPane2.add(jLabel10, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel2.setText(bundle.getString("DeviceManagement.jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
jLabel2.setBounds(20, 30, 170, 20);
jLayeredPane2.add(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel5.setText(bundle.getString("DeviceManagement.jLabel5.text")); // NOI18N
jLabel5.setName("jLabel5"); // NOI18N
jLabel5.setBounds(20, 90, 170, 20);
jLayeredPane2.add(jLabel5, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane2.setBounds(20, 10, 280, 360);
jLayeredPane1.add(jLayeredPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 619, javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 385, javax.swing.GroupLayout.PREFERRED_SIZE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void formKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_formKeyPressed
}//GEN-LAST:event_formKeyPressed
private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MouseClicked
}//GEN-LAST:event_jTable1MouseClicked
private void jTable1KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTable1KeyTyped
}//GEN-LAST:event_jTable1KeyTyped
private void jLayeredPane1KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jLayeredPane1KeyTyped
}//GEN-LAST:event_jLayeredPane1KeyTyped
private void jLayeredPane2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLayeredPane2MouseClicked
}//GEN-LAST:event_jLayeredPane2MouseClicked
private void jLayeredPane3MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLayeredPane3MouseClicked
}//GEN-LAST:event_jLayeredPane3MouseClicked
private void jLayeredPane1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLayeredPane1MouseClicked
}//GEN-LAST:event_jLayeredPane1MouseClicked
private void jTable1MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MousePressed
int i = jTable1.rowAtPoint(evt.getPoint());
if(i>-1) {
if(jTable1.columnAtPoint(evt.getPoint())==0) {
JFrame mainFrame = WebOSQuickInstallApp.getApplication().getMainFrame();
if(jComboBox1.getSelectedIndex()==0) {
InstalledPkgInfo info = new InstalledPkgInfo(mainFrame, webOS,
filtered.get(i));
info.setLocationRelativeTo(mainFrame);
WebOSQuickInstallApp.getApplication().show(info);
} else {
InstalledPatchInfo info = new InstalledPatchInfo(mainFrame, webOS,
filtered.get(i));
info.setLocationRelativeTo(mainFrame);
WebOSQuickInstallApp.getApplication().show(info);
}
}
}
int row = jTable1.getSelectedRow();
if(row>-1) {
jTable1.removeRowSelectionInterval(row, row);
}
}//GEN-LAST:event_jTable1MousePressed
private void jTable1MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MouseReleased
int row = jTable1.getSelectedRow();
if(row>-1) {
jTable1.removeRowSelectionInterval(row, row);
}
}//GEN-LAST:event_jTable1MouseReleased
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
}//GEN-LAST:event_formWindowClosing
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox1ActionPerformed
t.schedule(new DoLoadPackages(), 50);
}//GEN-LAST:event_jComboBox1ActionPerformed
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
t.schedule(new DoDeleteApps(), 50);
}//GEN-LAST:event_jButton1ActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JComboBox jComboBox1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JLayeredPane jLayeredPane1;
private javax.swing.JLayeredPane jLayeredPane2;
private javax.swing.JLayeredPane jLayeredPane3;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable jTable1;
// End of variables declaration//GEN-END:variables
class DoLoadDetails extends TimerTask {
public void run() {
loadDeviceDetails();
}
}
class DoLoadPackages extends TimerTask {
public void run() {
loadPackages();
}
}
class DoDeleteApps extends TimerTask {
public void run() {
setState(false);
uninstall();
setState(true);
}
}
class DoDispose extends TimerTask {
public void run() {
dispose();
}
}
}
+164
View File
@@ -0,0 +1,164 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="0"/>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="db" green="db" red="db" type="rgb"/>
</Property>
<Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
<Color id="Wait Cursor"/>
</Property>
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="db" green="db" red="db" type="rgb"/>
</Property>
<Property name="iconImage" type="java.awt.Image" editor="org.netbeans.modules.form.ComponentChooserEditor">
<ComponentRef name="null"/>
</Property>
<Property name="modal" type="boolean" value="true"/>
<Property name="name" type="java.lang.String" value="transfer" noResource="true"/>
<Property name="resizable" type="boolean" value="false"/>
<Property name="undecorated" type="boolean" value="true"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowActivated" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowActivated"/>
<EventHandler event="windowClosed" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosed"/>
<EventHandler event="windowOpened" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowOpened"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" alignment="0" pref="262" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" min="-2" pref="75" max="-2" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane1">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="db" green="db" red="db" type="rgb"/>
</Property>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.CompoundBorderInfo">
<CompoundBorder>
<Border PropertyName="outside" info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
<LineBorder>
<Color PropertyName="color" blue="99" green="99" red="99" type="rgb"/>
</LineBorder>
</Border>
<Border PropertyName="inside" info="org.netbeans.modules.form.compat2.border.BevelBorderInfo">
<BevelBorder>
<Color PropertyName="highlightOuter" blue="c0" green="c0" id="lightGray" palette="1" red="c0" type="palette"/>
<Color PropertyName="highlightInner" blue="cc" green="cc" red="cc" type="rgb"/>
</BevelBorder>
</Border>
</CompoundBorder>
</Border>
</Property>
<Property name="name" type="java.lang.String" value="jLayeredPane1" noResource="true"/>
<Property name="opaque" type="boolean" value="true"/>
</Properties>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JScrollPane" name="jScrollPane2">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="null"/>
</Property>
<Property name="horizontalScrollBarPolicy" type="int" value="31"/>
<Property name="verticalScrollBarPolicy" type="int" value="21"/>
<Property name="name" type="java.lang.String" value="jScrollPane2" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="20" width="240" height="30" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextArea" name="jTextArea2">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="db" green="db" red="db" type="rgb"/>
</Property>
<Property name="columns" type="int" value="20"/>
<Property name="editable" type="boolean" value="false"/>
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
<Font name="Tahoma" size="11" style="0"/>
</Property>
<Property name="lineWrap" type="boolean" value="true"/>
<Property name="rows" type="int" value="2"/>
<Property name="wrapStyleWord" type="boolean" value="true"/>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="null"/>
</Property>
<Property name="name" type="java.lang.String" value="jTextArea2" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JLabel" name="jLabel6">
<Properties>
<Property name="horizontalAlignment" type="int" value="0"/>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/ca/canucksoftware/wosqi/resources/activity.gif"/>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="FeedLoader.jLabel6.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel6" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="0" y="48" width="260" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel5">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font bold="true" component="jLabel5" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="horizontalAlignment" type="int" value="0"/>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="FeedLoader.jLabel5.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel5" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="0" width="240" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Form>
+161
View File
@@ -0,0 +1,161 @@
/*
* WebOSQuickInstallAboutBox.java
*/
package ca.canucksoftware.wosqi;
import ca.canucksoftware.ipkg.PackageManager;
import ca.canucksoftware.webos.DeviceInfo;
import ca.canucksoftware.webos.WebOSConnection;
import java.text.MessageFormat;
import java.util.ResourceBundle;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JOptionPane;
public class FeedLoader extends javax.swing.JDialog {
private ResourceBundle bundle;
private WebOSConnection webOS;
public PackageManager pkgMgr;
public Timer t;
public FeedLoader(java.awt.Frame parent, WebOSConnection connection) {
super(parent);
bundle = WebOSQuickInstallApp.bundle;
initComponents();
t = new Timer();
webOS = connection;
if(!webOS.isConnected()) {
DeviceInfo info = webOS.getDeviceInfo();
if(info!=null && !info.model().equals(DeviceInfo.Model.Unknown.toString())) {
JOptionPane.showMessageDialog(rootPane, MessageFormat.format(bundle
.getString("{0}_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN."),
new Object[] {info.model()}));
} else {
JOptionPane.showMessageDialog(rootPane, bundle
.getString("DEVICE_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN."));
}
t.schedule(new DoDispose(), 200);
} else {
t.schedule(new DoLoad(), 200);
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jLayeredPane1 = new javax.swing.JLayeredPane();
jScrollPane2 = new javax.swing.JScrollPane();
jTextArea2 = new javax.swing.JTextArea();
jLabel6 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
setBackground(new java.awt.Color(219, 219, 219));
setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
setForeground(new java.awt.Color(219, 219, 219));
setIconImage(null);
setModal(true);
setName("transfer"); // NOI18N
setResizable(false);
setUndecorated(true);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowActivated(java.awt.event.WindowEvent evt) {
formWindowActivated(evt);
}
public void windowClosed(java.awt.event.WindowEvent evt) {
formWindowClosed(evt);
}
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
jLayeredPane1.setBackground(new java.awt.Color(219, 219, 219));
jLayeredPane1.setBorder(javax.swing.BorderFactory.createCompoundBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153)), javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED, java.awt.Color.lightGray, new java.awt.Color(204, 204, 204), null, null)));
jLayeredPane1.setName("jLayeredPane1"); // NOI18N
jLayeredPane1.setOpaque(true);
jScrollPane2.setBorder(null);
jScrollPane2.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPane2.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);
jScrollPane2.setName("jScrollPane2"); // NOI18N
jTextArea2.setBackground(new java.awt.Color(219, 219, 219));
jTextArea2.setColumns(20);
jTextArea2.setEditable(false);
jTextArea2.setFont(new java.awt.Font("Tahoma", 0, 11));
jTextArea2.setLineWrap(true);
jTextArea2.setRows(2);
jTextArea2.setWrapStyleWord(true);
jTextArea2.setBorder(null);
jTextArea2.setName("jTextArea2"); // NOI18N
jScrollPane2.setViewportView(jTextArea2);
jScrollPane2.setBounds(10, 20, 240, 30);
jLayeredPane1.add(jScrollPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/activity.gif"))); // NOI18N
jLabel6.setText(bundle.getString("FeedLoader.jLabel6.text")); // NOI18N
jLabel6.setName("jLabel6"); // NOI18N
jLabel6.setBounds(0, 48, 260, 20);
jLayeredPane1.add(jLabel6, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel5.setFont(jLabel5.getFont().deriveFont(jLabel5.getFont().getStyle() | java.awt.Font.BOLD));
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel5.setText(bundle.getString("FeedLoader.jLabel5.text")); // NOI18N
jLabel5.setName("jLabel5"); // NOI18N
jLabel5.setBounds(10, 0, 240, 20);
jLayeredPane1.add(jLabel5, javax.swing.JLayeredPane.DEFAULT_LAYER);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 262, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
}//GEN-LAST:event_formWindowOpened
private void formWindowActivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowActivated
}//GEN-LAST:event_formWindowActivated
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
}//GEN-LAST:event_formWindowClosed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLayeredPane jLayeredPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextArea jTextArea2;
// End of variables declaration//GEN-END:variables
class DoLoad extends TimerTask {
public void run() {
pkgMgr = new PackageManager(webOS.getDeviceInfo(), webOS.listInstalled(),
jTextArea2);
dispose();
}
}
class DoDispose extends TimerTask {
public void run() {
dispose();
}
}
}
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,327 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<NonVisualComponents>
<Component class="javax.swing.ButtonGroup" name="buttonGroup1">
</Component>
</NonVisualComponents>
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
<Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="InstalledPatchInfo.title" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="iconImage" type="java.awt.Image" editor="org.netbeans.modules.form.ComponentChooserEditor">
<ComponentRef name="null"/>
</Property>
<Property name="modal" type="boolean" value="true"/>
<Property name="resizable" type="boolean" value="false"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowActivated" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowActivated"/>
<EventHandler event="windowClosed" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosed"/>
<EventHandler event="windowOpened" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowOpened"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" min="-2" pref="269" max="-2" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Component id="jLayeredPane1" pref="339" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane1">
<Properties>
<Property name="name" type="java.lang.String" value="jLayeredPane1" noResource="true"/>
<Property name="opaque" type="boolean" value="true"/>
</Properties>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane2">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
<EtchetBorder/>
</Border>
</Property>
<Property name="name" type="java.lang.String" value="jLayeredPane2" noResource="true"/>
<Property name="opaque" type="boolean" value="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="10" width="250" height="330" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JButton" name="jButton1">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="InstalledPatchInfo.jButton1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jButton1" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="90" y="298" width="70" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel7">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel7" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="name" type="java.lang.String" value="jLabel7" noResource="true"/>
<Property name="verticalTextPosition" type="int" value="1"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="90" y="10" width="150" height="40" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel6">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel6" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="name" type="java.lang.String" value="jLabel6" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="90" y="50" width="150" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel1" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="InstalledPatchInfo.jLabel1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
<Property name="verticalTextPosition" type="int" value="1"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="10" width="60" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="null"/>
</Property>
<Property name="name" type="java.lang.String" value="jScrollPane1" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="220" width="220" height="70" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextArea" name="jTextArea1">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="f0" green="f0" red="f0" type="rgb"/>
</Property>
<Property name="columns" type="int" value="20"/>
<Property name="editable" type="boolean" value="false"/>
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
<Font name="Tahoma" size="12" style="0"/>
</Property>
<Property name="lineWrap" type="boolean" value="true"/>
<Property name="rows" type="int" value="3"/>
<Property name="wrapStyleWord" type="boolean" value="true"/>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="null"/>
</Property>
<Property name="name" type="java.lang.String" value="jTextArea1" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JScrollPane" name="jScrollPane2">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="null"/>
</Property>
<Property name="name" type="java.lang.String" value="jScrollPane2" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="90" y="90" width="150" height="40" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextArea" name="jTextArea2">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="f0" green="f0" red="f0" type="rgb"/>
</Property>
<Property name="columns" type="int" value="20"/>
<Property name="editable" type="boolean" value="false"/>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jTextArea2" property="font" relativeSize="true" size="-1"/>
</FontInfo>
</Property>
<Property name="rows" type="int" value="1"/>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="null"/>
</Property>
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
<Insets value="[0, 0, 0, 0]"/>
</Property>
<Property name="name" type="java.lang.String" value="jTextArea2" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel2" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="InstalledPatchInfo.jLabel2.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="50" width="70" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel10">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel10" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="name" type="java.lang.String" value="jLabel10" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="90" y="140" width="150" height="50" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel5">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel5" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="InstalledPatchInfo.jLabel5.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel5" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="190" width="80" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel4">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel4" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="InstalledPatchInfo.jLabel4.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="name" type="java.lang.String" value="jLabel4" noResource="true"/>
<Property name="verticalTextPosition" type="int" value="1"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="90" width="40" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel11">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel11" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="InstalledPatchInfo.jLabel11.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="name" type="java.lang.String" value="jLabel11" noResource="true"/>
<Property name="verticalTextPosition" type="int" value="1"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="140" width="70" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
</SubComponents>
</Form>
@@ -0,0 +1,278 @@
/*
* WebOSQuickInstallAboutBox.java
*/
package ca.canucksoftware.wosqi;
import ca.canucksoftware.webos.InstalledEntry;
import ca.canucksoftware.webos.WebOSConnection;
import java.util.ResourceBundle;
import java.util.TimerTask;
import java.util.Timer;
public class InstalledPatchInfo extends javax.swing.JDialog {
private Timer t;
private ResourceBundle bundle;
private WebOSConnection webOS;
private InstalledEntry app;
public InstalledPatchInfo(java.awt.Frame parent, WebOSConnection wc, InstalledEntry ae) {
super(parent);
bundle = WebOSQuickInstallApp.bundle;
initComponents();
webOS = wc;
app = ae;
getRootPane().setDefaultButton(jButton1);
t = new Timer();
jLabel7.setText("<html><p width=\"150\">" + app.getName() + "</p>");
jLabel6.setText(app.getVersion());
jTextArea2.setText(app.getId());
jTextArea2.setCaretPosition(0);
String dev = app.getDeveloper();
if(dev!=null) {
jLabel10.setText("<html><p width=\"150\">" + dev + "</p>");
}
t.schedule(new DoDelayedLoad(), 50);
}
private String removeHTML(String s) {
s = s.replaceAll("</p>", "\n\n");
s = s.replaceAll("<br>", "\n");
s = s.replaceAll("<ul>", "\n");
s = s.replaceAll("<ol>", "\n");
s = s.replaceAll("<li>", "\t- ");
s = s.replaceAll("</li>", "\n");
s = s.replaceAll("\\<.*?\\>", "");
s = s.replaceAll("&rsquo;", "'");
s = s.replaceAll("&nbsp;", " ");
s = s.replaceAll("&#58;", ":");
s = s.replaceAll("&quot;", "\"");
s = s.replaceAll("&amp;", "&");
s = s.replaceAll("&lt;", "<");
s = s.replaceAll("&gt;", ">");
s = s.replaceAll("&raquo;", "\"");
s = s.replaceAll("&laquo;", "\"");
s = s.replaceAll("&raquo;", "\"");
s = s.replaceAll("&copy;", "©");
s = s.replaceAll("&reg;", "®");
return s;
}
public void closeInfo() {
dispose();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
jLayeredPane1 = new javax.swing.JLayeredPane();
jLayeredPane2 = new javax.swing.JLayeredPane();
jButton1 = new javax.swing.JButton();
jLabel7 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jScrollPane2 = new javax.swing.JScrollPane();
jTextArea2 = new javax.swing.JTextArea();
jLabel2 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(bundle.getString("InstalledPatchInfo.title")); // NOI18N
setIconImage(null);
setModal(true);
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowActivated(java.awt.event.WindowEvent evt) {
formWindowActivated(evt);
}
public void windowClosed(java.awt.event.WindowEvent evt) {
formWindowClosed(evt);
}
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
jLayeredPane1.setName("jLayeredPane1"); // NOI18N
jLayeredPane1.setOpaque(true);
jLayeredPane2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jLayeredPane2.setName("jLayeredPane2"); // NOI18N
jLayeredPane2.setOpaque(true);
jButton1.setText(bundle.getString("InstalledPatchInfo.jButton1.text")); // NOI18N
jButton1.setName("jButton1"); // NOI18N
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton1.setBounds(90, 298, 70, 23);
jLayeredPane2.add(jButton1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel7.setFont(jLabel7.getFont().deriveFont(jLabel7.getFont().getSize()+1f));
jLabel7.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel7.setName("jLabel7"); // NOI18N
jLabel7.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
jLabel7.setBounds(90, 10, 150, 40);
jLayeredPane2.add(jLabel7, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel6.setFont(jLabel6.getFont().deriveFont(jLabel6.getFont().getSize()+1f));
jLabel6.setName("jLabel6"); // NOI18N
jLabel6.setBounds(90, 50, 150, 20);
jLayeredPane2.add(jLabel6, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getSize()+1f));
jLabel1.setText(bundle.getString("InstalledPatchInfo.jLabel1.text")); // NOI18N
jLabel1.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel1.setName("jLabel1"); // NOI18N
jLabel1.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
jLabel1.setBounds(20, 10, 60, 20);
jLayeredPane2.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jScrollPane1.setBorder(null);
jScrollPane1.setName("jScrollPane1"); // NOI18N
jTextArea1.setBackground(new java.awt.Color(240, 240, 240));
jTextArea1.setColumns(20);
jTextArea1.setEditable(false);
jTextArea1.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
jTextArea1.setLineWrap(true);
jTextArea1.setRows(3);
jTextArea1.setWrapStyleWord(true);
jTextArea1.setBorder(null);
jTextArea1.setName("jTextArea1"); // NOI18N
jScrollPane1.setViewportView(jTextArea1);
jScrollPane1.setBounds(20, 220, 220, 70);
jLayeredPane2.add(jScrollPane1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jScrollPane2.setBorder(null);
jScrollPane2.setName("jScrollPane2"); // NOI18N
jTextArea2.setBackground(new java.awt.Color(240, 240, 240));
jTextArea2.setColumns(20);
jTextArea2.setEditable(false);
jTextArea2.setFont(jTextArea2.getFont().deriveFont(jTextArea2.getFont().getSize()-1f));
jTextArea2.setRows(1);
jTextArea2.setBorder(null);
jTextArea2.setMargin(new java.awt.Insets(0, 0, 0, 0));
jTextArea2.setName("jTextArea2"); // NOI18N
jScrollPane2.setViewportView(jTextArea2);
jScrollPane2.setBounds(90, 90, 150, 40);
jLayeredPane2.add(jScrollPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getSize()+1f));
jLabel2.setText(bundle.getString("InstalledPatchInfo.jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
jLabel2.setBounds(20, 50, 70, 20);
jLayeredPane2.add(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel10.setFont(jLabel10.getFont().deriveFont(jLabel10.getFont().getSize()+1f));
jLabel10.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel10.setName("jLabel10"); // NOI18N
jLabel10.setBounds(90, 140, 150, 50);
jLayeredPane2.add(jLabel10, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel5.setFont(jLabel5.getFont().deriveFont(jLabel5.getFont().getSize()+1f));
jLabel5.setText(bundle.getString("InstalledPatchInfo.jLabel5.text")); // NOI18N
jLabel5.setName("jLabel5"); // NOI18N
jLabel5.setBounds(20, 190, 80, 20);
jLayeredPane2.add(jLabel5, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel4.setFont(jLabel4.getFont().deriveFont(jLabel4.getFont().getSize()+1f));
jLabel4.setText(bundle.getString("InstalledPatchInfo.jLabel4.text")); // NOI18N
jLabel4.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel4.setName("jLabel4"); // NOI18N
jLabel4.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
jLabel4.setBounds(20, 90, 40, 20);
jLayeredPane2.add(jLabel4, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel11.setFont(jLabel11.getFont().deriveFont(jLabel11.getFont().getSize()+1f));
jLabel11.setText(bundle.getString("InstalledPatchInfo.jLabel11.text")); // NOI18N
jLabel11.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel11.setName("jLabel11"); // NOI18N
jLabel11.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
jLabel11.setBounds(20, 140, 70, 20);
jLayeredPane2.add(jLabel11, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane2.setBounds(10, 10, 250, 330);
jLayeredPane1.add(jLayeredPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 269, javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 339, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
}//GEN-LAST:event_formWindowOpened
private void formWindowActivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowActivated
}//GEN-LAST:event_formWindowActivated
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
}//GEN-LAST:event_formWindowClosed
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
closeInfo();
}//GEN-LAST:event_jButton1ActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLayeredPane jLayeredPane1;
private javax.swing.JLayeredPane jLayeredPane2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextArea jTextArea2;
// End of variables declaration//GEN-END:variables
class DoDelayedLoad extends TimerTask {
public void run() {
app.parseControl(webOS);
String dev = app.getDeveloper();
String descript = app.getDescription();
if(dev==null) {
dev = bundle.getString("UNKNOWN");
}
if(descript==null) {
descript = bundle.getString("UNKNOWN");
} else if(descript.equals("N/A")) {
descript = bundle.getString("UNKNOWN");
}
jLabel10.setText("<html><p width=\"150\">" + dev + "</p>");
jTextArea1.setText(removeHTML(descript));
}
}
}
@@ -0,0 +1,272 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<NonVisualComponents>
<Component class="javax.swing.ButtonGroup" name="buttonGroup1">
</Component>
</NonVisualComponents>
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
<Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="InstalledPkgInfo.title" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="iconImage" type="java.awt.Image" editor="org.netbeans.modules.form.ComponentChooserEditor">
<ComponentRef name="null"/>
</Property>
<Property name="modal" type="boolean" value="true"/>
<Property name="resizable" type="boolean" value="false"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowActivated" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowActivated"/>
<EventHandler event="windowClosed" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosed"/>
<EventHandler event="windowOpened" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowOpened"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" min="-2" pref="269" max="-2" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" alignment="0" pref="239" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane1">
<Properties>
<Property name="name" type="java.lang.String" value="jLayeredPane1" noResource="true"/>
<Property name="opaque" type="boolean" value="true"/>
</Properties>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane2">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
<EtchetBorder/>
</Border>
</Property>
<Property name="name" type="java.lang.String" value="jLayeredPane2" noResource="true"/>
<Property name="opaque" type="boolean" value="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="10" width="250" height="220" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JScrollPane" name="jScrollPane2">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="null"/>
</Property>
<Property name="name" type="java.lang.String" value="jScrollPane2" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="90" y="90" width="150" height="40" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextArea" name="jTextArea2">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="f0" green="f0" red="f0" type="rgb"/>
</Property>
<Property name="columns" type="int" value="20"/>
<Property name="editable" type="boolean" value="false"/>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jTextArea2" property="font" relativeSize="true" size="-1"/>
</FontInfo>
</Property>
<Property name="rows" type="int" value="1"/>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="null"/>
</Property>
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
<Insets value="[0, 0, 0, 0]"/>
</Property>
<Property name="name" type="java.lang.String" value="jTextArea2" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JLabel" name="jLabel11">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel11" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="InstalledPkgInfo.jLabel11.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="name" type="java.lang.String" value="jLabel11" noResource="true"/>
<Property name="verticalTextPosition" type="int" value="1"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="140" width="70" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel10">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel10" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="name" type="java.lang.String" value="jLabel10" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="90" y="140" width="150" height="40" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel6">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel6" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="name" type="java.lang.String" value="jLabel6" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="90" y="50" width="150" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel1" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="InstalledPkgInfo.jLabel1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
<Property name="verticalTextPosition" type="int" value="1"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="10" width="60" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel4">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel4" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="InstalledPkgInfo.jLabel4.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="name" type="java.lang.String" value="jLabel4" noResource="true"/>
<Property name="verticalTextPosition" type="int" value="1"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="90" width="40" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel2" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="InstalledPkgInfo.jLabel2.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="50" width="70" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="jButton1">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jButton1" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="InstalledPkgInfo.jButton1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jButton1" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="90" y="190" width="70" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel7">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel7" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="name" type="java.lang.String" value="jLabel7" noResource="true"/>
<Property name="verticalTextPosition" type="int" value="1"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="90" y="10" width="150" height="40" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
</SubComponents>
</Form>
@@ -0,0 +1,242 @@
/*
* WebOSQuickInstallAboutBox.java
*/
package ca.canucksoftware.wosqi;
import ca.canucksoftware.webos.InstalledEntry;
import ca.canucksoftware.webos.WebOSConnection;
import java.util.ResourceBundle;
import java.util.TimerTask;
import java.util.Timer;
public class InstalledPkgInfo extends javax.swing.JDialog {
private Timer t;
private ResourceBundle bundle;
private WebOSConnection webOS;
private InstalledEntry app;
public InstalledPkgInfo(java.awt.Frame parent, WebOSConnection wc, InstalledEntry ae) {
super(parent);
bundle = WebOSQuickInstallApp.bundle;
initComponents();
webOS = wc;
app = ae;
getRootPane().setDefaultButton(jButton1);
t = new Timer();
jLabel7.setText("<html><p width=\"150\">" + app.getName() + "</p>");
jLabel6.setText(app.getVersion());
jTextArea2.setText(app.getId());
jTextArea2.setCaretPosition(0);
String dev = app.getDeveloper();
if(dev!=null) {
jLabel10.setText("<html><p width=\"150\">" + dev + "</p>");
}
t.schedule(new DoDelayedLoad(), 50);
}
private String removeHTML(String s) {
s = s.replaceAll("</p>", "\n\n");
s = s.replaceAll("<br>", "\n");
s = s.replaceAll("<ul>", "\n");
s = s.replaceAll("<ol>", "\n");
s = s.replaceAll("<li>", "\t- ");
s = s.replaceAll("</li>", "\n");
s = s.replaceAll("\\<.*?\\>", "");
s = s.replaceAll("&rsquo;", "'");
s = s.replaceAll("&nbsp;", " ");
s = s.replaceAll("&#58;", ":");
s = s.replaceAll("&quot;", "\"");
s = s.replaceAll("&amp;", "&");
s = s.replaceAll("&lt;", "<");
s = s.replaceAll("&gt;", ">");
s = s.replaceAll("&raquo;", "\"");
s = s.replaceAll("&laquo;", "\"");
s = s.replaceAll("&raquo;", "\"");
s = s.replaceAll("&copy;", "©");
s = s.replaceAll("&reg;", "®");
return s;
}
public void closeInfo() {
dispose();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
jLayeredPane1 = new javax.swing.JLayeredPane();
jLayeredPane2 = new javax.swing.JLayeredPane();
jScrollPane2 = new javax.swing.JScrollPane();
jTextArea2 = new javax.swing.JTextArea();
jLabel11 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jLabel7 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(bundle.getString("InstalledPkgInfo.title")); // NOI18N
setIconImage(null);
setModal(true);
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowActivated(java.awt.event.WindowEvent evt) {
formWindowActivated(evt);
}
public void windowClosed(java.awt.event.WindowEvent evt) {
formWindowClosed(evt);
}
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
jLayeredPane1.setName("jLayeredPane1"); // NOI18N
jLayeredPane1.setOpaque(true);
jLayeredPane2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jLayeredPane2.setName("jLayeredPane2"); // NOI18N
jLayeredPane2.setOpaque(true);
jScrollPane2.setBorder(null);
jScrollPane2.setName("jScrollPane2"); // NOI18N
jTextArea2.setBackground(new java.awt.Color(240, 240, 240));
jTextArea2.setColumns(20);
jTextArea2.setEditable(false);
jTextArea2.setFont(jTextArea2.getFont().deriveFont(jTextArea2.getFont().getSize()-1f));
jTextArea2.setRows(1);
jTextArea2.setBorder(null);
jTextArea2.setMargin(new java.awt.Insets(0, 0, 0, 0));
jTextArea2.setName("jTextArea2"); // NOI18N
jScrollPane2.setViewportView(jTextArea2);
jScrollPane2.setBounds(90, 90, 150, 40);
jLayeredPane2.add(jScrollPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel11.setFont(jLabel11.getFont().deriveFont(jLabel11.getFont().getSize()+1f));
jLabel11.setText(bundle.getString("InstalledPkgInfo.jLabel11.text")); // NOI18N
jLabel11.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel11.setName("jLabel11"); // NOI18N
jLabel11.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
jLabel11.setBounds(20, 140, 70, 20);
jLayeredPane2.add(jLabel11, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel10.setFont(jLabel10.getFont().deriveFont(jLabel10.getFont().getSize()+1f));
jLabel10.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel10.setName("jLabel10"); // NOI18N
jLabel10.setBounds(90, 140, 150, 40);
jLayeredPane2.add(jLabel10, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel6.setFont(jLabel6.getFont().deriveFont(jLabel6.getFont().getSize()+1f));
jLabel6.setName("jLabel6"); // NOI18N
jLabel6.setBounds(90, 50, 150, 20);
jLayeredPane2.add(jLabel6, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getSize()+1f));
jLabel1.setText(bundle.getString("InstalledPkgInfo.jLabel1.text")); // NOI18N
jLabel1.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel1.setName("jLabel1"); // NOI18N
jLabel1.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
jLabel1.setBounds(20, 10, 60, 20);
jLayeredPane2.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel4.setFont(jLabel4.getFont().deriveFont(jLabel4.getFont().getSize()+1f));
jLabel4.setText(bundle.getString("InstalledPkgInfo.jLabel4.text")); // NOI18N
jLabel4.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel4.setName("jLabel4"); // NOI18N
jLabel4.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
jLabel4.setBounds(20, 90, 40, 20);
jLayeredPane2.add(jLabel4, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getSize()+1f));
jLabel2.setText(bundle.getString("InstalledPkgInfo.jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
jLabel2.setBounds(20, 50, 70, 20);
jLayeredPane2.add(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jButton1.setFont(jButton1.getFont());
jButton1.setText(bundle.getString("InstalledPkgInfo.jButton1.text")); // NOI18N
jButton1.setName("jButton1"); // NOI18N
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton1.setBounds(90, 190, 70, 23);
jLayeredPane2.add(jButton1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel7.setFont(jLabel7.getFont().deriveFont(jLabel7.getFont().getSize()+1f));
jLabel7.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel7.setName("jLabel7"); // NOI18N
jLabel7.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
jLabel7.setBounds(90, 10, 150, 40);
jLayeredPane2.add(jLabel7, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane2.setBounds(10, 10, 250, 220);
jLayeredPane1.add(jLayeredPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 269, javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 239, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
}//GEN-LAST:event_formWindowOpened
private void formWindowActivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowActivated
}//GEN-LAST:event_formWindowActivated
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
}//GEN-LAST:event_formWindowClosed
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
closeInfo();
}//GEN-LAST:event_jButton1ActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLayeredPane jLayeredPane1;
private javax.swing.JLayeredPane jLayeredPane2;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextArea jTextArea2;
// End of variables declaration//GEN-END:variables
class DoDelayedLoad extends TimerTask {
public void run() {
jLabel7.setText("<html><p width=\"150\">" + app.getName(webOS) + "</p>");
app.parseControl(webOS);
String dev = app.getDeveloper();
if(dev==null) {
dev = bundle.getString("UNKNOWN");
}
jLabel10.setText("<html><p width=\"150\">" + dev + "</p>");
}
}
}
+157
View File
@@ -0,0 +1,157 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="0"/>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="db" green="db" red="db" type="rgb"/>
</Property>
<Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
<Color id="Wait Cursor"/>
</Property>
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="db" green="db" red="db" type="rgb"/>
</Property>
<Property name="iconImage" type="java.awt.Image" editor="org.netbeans.modules.form.ComponentChooserEditor">
<ComponentRef name="null"/>
</Property>
<Property name="modal" type="boolean" value="true"/>
<Property name="name" type="java.lang.String" value="transfer" noResource="true"/>
<Property name="resizable" type="boolean" value="false"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowActivated" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowActivated"/>
<EventHandler event="windowClosed" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosed"/>
<EventHandler event="windowOpened" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowOpened"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" min="-2" pref="296" max="-2" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" alignment="0" pref="126" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane1">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="db" green="db" red="db" type="rgb"/>
</Property>
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="e9" green="f1" red="f3" type="rgb"/>
</Property>
<Property name="name" type="java.lang.String" value="jLayeredPane1" noResource="true"/>
<Property name="opaque" type="boolean" value="true"/>
</Properties>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel5">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel5" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="horizontalAlignment" type="int" value="0"/>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Installer.jLabel5.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel5" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="30" y="70" width="240" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="db" green="db" red="db" type="rgb"/>
</Property>
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="db" green="db" red="db" type="rgb"/>
</Property>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/ca/canucksoftware/wosqi/resources/busy_icon.gif"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
<Property name="opaque" type="boolean" value="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="120" y="10" width="60" height="50" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel3">
<Properties>
<Property name="horizontalAlignment" type="int" value="0"/>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/ca/canucksoftware/wosqi/resources/Pre-48x48.png"/>
</Property>
<Property name="verticalAlignment" type="int" value="3"/>
<Property name="name" type="java.lang.String" value="jLabel3" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="170" y="10" width="60" height="50" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel4">
<Properties>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/ca/canucksoftware/wosqi/resources/Computer-48x48.png"/>
</Property>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="name" type="java.lang.String" value="jLabel4" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="70" y="10" width="50" height="50" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel2" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="horizontalAlignment" type="int" value="0"/>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="30" y="90" width="240" height="30" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Form>
+259
View File
@@ -0,0 +1,259 @@
/*
* WebOSQuickInstallAboutBox.java
*/
package ca.canucksoftware.wosqi;
import ca.canucksoftware.ipkg.PackageFeed;
import ca.canucksoftware.utils.FileUtils;
import ca.canucksoftware.utils.OnlineFile;
import ca.canucksoftware.webos.DeviceInfo;
import ca.canucksoftware.webos.Patcher;
import ca.canucksoftware.webos.ScriptType;
import ca.canucksoftware.webos.WebOSConnection;
import java.io.File;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.ResourceBundle;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JOptionPane;
public class Installer extends javax.swing.JDialog {
private ResourceBundle bundle;
private WebOSConnection webOS;
private Patcher patcher;
private ArrayList items;
public Timer t;
public Installer(java.awt.Frame parent, WebOSConnection connection, ArrayList list) {
super(parent);
bundle = WebOSQuickInstallApp.bundle;
initComponents();
t = new Timer();
webOS = connection;
items = list;
if(!webOS.isConnected()) {
DeviceInfo info = webOS.getDeviceInfo();
if(info!=null && !info.model().equals(DeviceInfo.Model.Unknown.toString())) {
JOptionPane.showMessageDialog(rootPane, MessageFormat.format(bundle
.getString("{0}_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN."),
new Object[] {info.model()}));
} else {
JOptionPane.showMessageDialog(rootPane, bundle
.getString("DEVICE_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN."));
}
t.schedule(new DoDispose(), 200);
} else {
if(webOS.isSystemBusy()) {
JOptionPane.showMessageDialog(rootPane,
bundle.getString("SYSTEM_IS_BUSY._TRY_AGAIN_LATER."));
t.schedule(new DoDispose(), 200);
} else {
t.schedule(new DoTransfer(), 200);
}
}
}
private void processList() {
boolean containsPatch = false;
boolean okForPatch = false;
jLabel5.setText(bundle.getString("CONNECTING..."));
webOS.remountPartitionReadWrite();
webOS.mkdir("/media/internal/.developer/");
patcher = new Patcher(webOS);
webOS.sendScript(ScriptType.ScanID);
webOS.configIpkg();
for(int i=0; i<items.size(); i++) {
Object curr = items.get(i);
File currFile = null;
if(curr instanceof String) {
jLabel5.setText(bundle.getString("DOWNLOADING:"));
jLabel2.setText("<html><center>" + FileUtils.getFilename((String) curr) +
"</center></html>");
System.out.println("Downloading: " + ((String) curr));
OnlineFile url = new OnlineFile((String) curr);
currFile = url.download();
if(currFile==null) {
JOptionPane.showMessageDialog(rootPane, MessageFormat.format(
bundle.getString("ERROR:_UNABLE_TO_DOWNLOAD_{0}"),
new Object[] {FileUtils.getFilename((String) curr)}));
}
} else if(curr instanceof File) {
currFile = (File) curr;
}
if(currFile!=null) {
String name = FileUtils.getFilename(currFile);
jLabel2.setText("<html><center>" + name + "</center></html>");
if(isPatch(name)) {
if(!containsPatch) {
webOS.sendScript(ScriptType.Patch);
PackageFeed wosiFeed = PackageFeed.Download("http://ipkg.preware.org/feeds/webos-internals/all/Packages.gz");
int ausmtIndex = wosiFeed.indexOf("org.webosinternals.ausmt");
if(ausmtIndex>-1) {
okForPatch = patcher.meetsRequirements(wosiFeed.packages.get(ausmtIndex).getDownloadUrl());
} else {
okForPatch = false;
}
containsPatch = true;
}
if(okForPatch) {
jLabel5.setText(bundle.getString("TRANSFERRING_AND_APPLYING:"));
if(patcher.install(currFile)) {
webOS.lunaRestartFlag = true;
currFile.delete();
}
}
} else {
jLabel5.setText(bundle.getString("TRANSFERRING:"));
if(webOS.sendFile(currFile, "/media/internal/.developer/" + name)) {
jLabel5.setText(bundle.getString("INSTALLING:"));
if(webOS.install("/media/internal/.developer/" + name)) {
currFile.delete();
} else {
webOS.delete("/media/internal/.developer/" + name);
}
} else {
JOptionPane.showMessageDialog(rootPane, bundle.getString("FILE_TRANSFER_FAILED."));
}
}
}
try {
Thread.sleep(500);
} catch(Exception e) {}
}
webOS.executeRestartFlags();
webOS.removeScript(ScriptType.ScanID);
if(containsPatch) {
webOS.removeScript(ScriptType.Patch);
}
}
private boolean isPatch(String s) {
return (s.endsWith(".patch") || s.endsWith(".diff"));
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jLayeredPane1 = new javax.swing.JLayeredPane();
jLabel5 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
setBackground(new java.awt.Color(219, 219, 219));
setCursor(new java.awt.Cursor(java.awt.Cursor.WAIT_CURSOR));
setForeground(new java.awt.Color(219, 219, 219));
setIconImage(null);
setModal(true);
setName("transfer"); // NOI18N
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowActivated(java.awt.event.WindowEvent evt) {
formWindowActivated(evt);
}
public void windowClosed(java.awt.event.WindowEvent evt) {
formWindowClosed(evt);
}
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
jLayeredPane1.setBackground(new java.awt.Color(219, 219, 219));
jLayeredPane1.setForeground(new java.awt.Color(243, 241, 233));
jLayeredPane1.setName("jLayeredPane1"); // NOI18N
jLayeredPane1.setOpaque(true);
jLabel5.setFont(jLabel5.getFont());
jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel5.setText(bundle.getString("Installer.jLabel5.text")); // NOI18N
jLabel5.setName("jLabel5"); // NOI18N
jLabel5.setBounds(30, 70, 240, 20);
jLayeredPane1.add(jLabel5, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel1.setBackground(new java.awt.Color(219, 219, 219));
jLabel1.setForeground(new java.awt.Color(219, 219, 219));
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/busy_icon.gif"))); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
jLabel1.setOpaque(true);
jLabel1.setBounds(120, 10, 60, 50);
jLayeredPane1.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/Pre-48x48.png"))); // NOI18N
jLabel3.setVerticalAlignment(javax.swing.SwingConstants.BOTTOM);
jLabel3.setName("jLabel3"); // NOI18N
jLabel3.setBounds(170, 10, 60, 50);
jLayeredPane1.add(jLabel3, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/Computer-48x48.png"))); // NOI18N
jLabel4.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel4.setName("jLabel4"); // NOI18N
jLabel4.setBounds(70, 10, 50, 50);
jLayeredPane1.add(jLabel4, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel2.setFont(jLabel2.getFont());
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel2.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel2.setName("jLabel2"); // NOI18N
jLabel2.setBounds(30, 90, 240, 30);
jLayeredPane1.add(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 296, javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 126, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
}//GEN-LAST:event_formWindowOpened
private void formWindowActivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowActivated
}//GEN-LAST:event_formWindowActivated
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
}//GEN-LAST:event_formWindowClosed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLayeredPane jLayeredPane1;
// End of variables declaration//GEN-END:variables
class DoTransfer extends TimerTask {
public void run() {
processList();
dispose();
}
}
class DoDispose extends TimerTask {
public void run() {
dispose();
}
}
}
+523
View File
@@ -0,0 +1,523 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7">
<NonVisualComponents>
<Container class="javax.swing.JPanel" name="mainPanel">
<Properties>
<Property name="name" type="java.lang.String" value="mainView" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new ImagePanel(bgImg)"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" alignment="0" pref="620" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" alignment="0" pref="345" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane1">
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane3">
<Properties>
<Property name="focusable" type="boolean" value="false"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="460" y="160" width="170" height="210" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/ca/canucksoftware/wosqi/resources/pre_shadow.png"/>
</Property>
<Property name="focusable" type="boolean" value="false"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="30" width="150" height="160" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane7">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
<TitledBorder title="Files to Install">
<Border PropertyName="innerBorder" info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
<LineBorder roundedCorners="true">
<Color PropertyName="color" blue="80" green="80" red="80" type="rgb"/>
</LineBorder>
</Border>
<ResourceString PropertyName="titleX" bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.jLayeredPane7.border.title" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</TitledBorder>
</Border>
</Property>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="25" width="590" height="240" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JButton" name="jButton4">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="cb" green="cb" red="cb" type="rgb"/>
</Property>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/ca/canucksoftware/wosqi/resources/remove.png"/>
</Property>
<Property name="focusable" type="boolean" value="false"/>
<Property name="iconTextGap" type="int" value="0"/>
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
<Insets value="[0, 0, 0, 0]"/>
</Property>
<Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[36, 33]"/>
</Property>
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[36, 33]"/>
</Property>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[36, 33]"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton4ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="520" y="70" width="40" height="30" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="jButton5">
<Properties>
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
<action class="ca.canucksoftware.MainView" id="openRepository" methodName="openRepository"/>
</Property>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="cb" green="cb" red="cb" type="rgb"/>
</Property>
<Property name="focusable" type="boolean" value="false"/>
<Property name="iconTextGap" type="int" value="0"/>
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
<Insets value="[0, 0, 0, 0]"/>
</Property>
<Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[36, 33]"/>
</Property>
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[36, 33]"/>
</Property>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[36, 33]"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton5ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="520" y="120" width="40" height="40" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Container class="javax.swing.JScrollPane" name="jScrollPane2">
<Properties>
<Property name="autoscrolls" type="boolean" value="true"/>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[485, 191]"/>
</Property>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="30" width="-1" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTable" name="jTable1">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
<Font name="Tahoma" size="12" style="0"/>
</Property>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
<Table columnCount="3" rowCount="0">
<Column editable="false" title="Name" type="java.lang.String"/>
<Column editable="false" title="Size" type="java.lang.String"/>
<Column editable="false" title="Type" type="java.lang.String"/>
</Table>
</Property>
<Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor">
<TableColumnModel selectionModel="0">
<Column maxWidth="-1" minWidth="-1" prefWidth="350" resizable="false">
<Title editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.installTable.columnModel.title0" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Title>
<Editor/>
<Renderer/>
</Column>
<Column maxWidth="-1" minWidth="-1" prefWidth="125" resizable="false">
<Title editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.installTable.columnModel.title1" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Title>
<Editor/>
<Renderer/>
</Column>
<Column maxWidth="-1" minWidth="-1" prefWidth="250" resizable="false">
<Title editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.installTable.columnModel.title2" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Title>
<Editor/>
<Renderer/>
</Column>
</TableColumnModel>
</Property>
<Property name="fillsViewportHeight" type="boolean" value="true"/>
<Property name="focusable" type="boolean" value="false"/>
<Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[2147483647, 2147483647]"/>
</Property>
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[45, 45]"/>
</Property>
<Property name="name" type="java.lang.String" value="installTable" noResource="true"/>
<Property name="rowHeight" type="int" value="20"/>
<Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.editors2.JTableHeaderEditor">
<TableHeader reorderingAllowed="false" resizingAllowed="true"/>
</Property>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JButton" name="jButton1">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="dc" green="dc" red="dc" type="rgb"/>
</Property>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/ca/canucksoftware/wosqi/resources/add.png"/>
</Property>
<Property name="focusable" type="boolean" value="false"/>
<Property name="iconTextGap" type="int" value="0"/>
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
<Insets value="[0, 0, 0, 0]"/>
</Property>
<Property name="maximumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[36, 33]"/>
</Property>
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[36, 33]"/>
</Property>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[36, 33]"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="520" y="30" width="40" height="30" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="horizontalAlignment" type="int" value="4"/>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.jLabel2.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="focusable" type="boolean" value="false"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="350" y="5" width="100" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="jButton2">
<Properties>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/ca/canucksoftware/wosqi/resources/find-apps-precentralnet.png"/>
</Property>
<Property name="borderPainted" type="boolean" value="false"/>
<Property name="contentAreaFilled" type="boolean" value="false"/>
<Property name="focusable" type="boolean" value="false"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton2ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="280" width="130" height="60" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="jButton3">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="a5" green="a5" red="a5" type="rgb"/>
</Property>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jButton3" property="font" relativeSize="true" size="3"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.jButton3.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="focusable" type="boolean" value="false"/>
<Property name="horizontalTextPosition" type="int" value="0"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton3ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="240" y="290" width="140" height="33" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JComboBox" name="jComboBox1">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="dc" green="dc" red="dc" type="rgb"/>
</Property>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="0"/>
</Property>
<Property name="focusable" type="boolean" value="false"/>
</Properties>
<Events>
<EventHandler event="popupMenuWillBecomeInvisible" listener="javax.swing.event.PopupMenuListener" parameters="javax.swing.event.PopupMenuEvent" handler="jComboBox1PopupMenuWillBecomeInvisible"/>
<EventHandler event="popupMenuWillBecomeVisible" listener="javax.swing.event.PopupMenuListener" parameters="javax.swing.event.PopupMenuEvent" handler="jComboBox1PopupMenuWillBecomeVisible"/>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jComboBox1ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="460" y="5" width="140" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
<Container class="javax.swing.JMenuBar" name="menuBar">
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignAbsoluteLayout">
<Property name="useNullLayout" type="boolean" value="true"/>
</Layout>
<SubComponents>
<Menu class="javax.swing.JMenu" name="fileMenu">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.fileMenu.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
<SubComponents>
<MenuItem class="javax.swing.JMenuItem" name="jMenuItem1">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.jMenuItem1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem1ActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JSeparator" name="jSeparator2">
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="jMenuItem8">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.jMenuItem8.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem8ActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="jMenuItem2">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.jMenuItem2.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem2ActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JSeparator" name="jSeparator1">
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="exitMenuItem">
<Properties>
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
<action class="org.jdesktop.application.Application" id="quit" methodName="quit"/>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="EXIT" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
</MenuItem>
</SubComponents>
</Menu>
<Menu class="javax.swing.JMenu" name="toolMenu">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.toolMenu.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
</Properties>
<SubComponents>
<MenuItem class="javax.swing.JMenuItem" name="jMenuItem3">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.jMenuItem3.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem3ActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="jMenuItem4">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.jMenuItem4.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem4ActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="jMenuItem5">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.jMenuItem5.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem5ActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JSeparator" name="jSeparator3">
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="jMenuItem9">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.jMenuItem9.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem9ActionPerformed"/>
</Events>
</MenuItem>
</SubComponents>
</Menu>
<Menu class="javax.swing.JMenu" name="helpMenu">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.helpMenu.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
</Properties>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
<SubComponents>
<MenuItem class="javax.swing.JMenuItem" name="jMenuItem6">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.jMenuItem6.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem6ActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="jMenuItem7">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.jMenuItem7.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jMenuItem7ActionPerformed"/>
</Events>
</MenuItem>
<MenuItem class="javax.swing.JMenuItem" name="aboutMenuItem">
<Properties>
<Property name="action" type="javax.swing.Action" editor="org.netbeans.modules.swingapp.ActionEditor">
<action class="ca.canucksoftware.wosqi.WebOSQuickInstallView" id="showAboutBox" methodName="showAboutBox"/>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.aboutMenuItem.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="aboutMenuItemActionPerformed"/>
</Events>
<AuxValues>
<AuxValue name="JavaCodeGenerator_VariableLocal" type="java.lang.Boolean" value="true"/>
<AuxValue name="JavaCodeGenerator_VariableModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
</MenuItem>
</SubComponents>
</Menu>
</SubComponents>
</Container>
</NonVisualComponents>
<Properties>
<Property name="component" type="javax.swing.JComponent" editor="org.netbeans.modules.form.ComponentChooserEditor">
<ComponentRef name="mainPanel"/>
</Property>
<Property name="menuBar" type="javax.swing.JMenuBar" editor="org.netbeans.modules.form.ComponentChooserEditor">
<ComponentRef name="menuBar"/>
</Property>
</Properties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
<AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,119,0,0,2,108"/>
</AuxValues>
</Form>
+907
View File
@@ -0,0 +1,907 @@
package ca.canucksoftware.wosqi;
import ca.canucksoftware.ipkg.PackageManager;
import ca.canucksoftware.novacom.Novacom;
import ca.canucksoftware.novacom.DriverInstaller;
import ca.canucksoftware.utils.FileUtils;
import ca.canucksoftware.webos.DeviceInfo;
import ca.canucksoftware.webos.WebOS;
import ca.canucksoftware.webos.WebOSConnection;
import ca.canucksoftware.webos.WebOSDevice;
import ca.canucksoftware.webos.WebOSException;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.net.URI;
import java.net.URL;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
import java.util.prefs.Preferences;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableModel;
import net.iharder.dnd.FileDrop;
import org.jdesktop.application.SingleFrameApplication;
import org.jdesktop.application.FrameView;
import java.util.ResourceBundle;
/**
* The application's main frame.
*/
public class MainView extends FrameView {
private ResourceBundle bundle;
private Image bgImg;
private String chooserPath;
private WebOSDevice[] devices;
private WebOSConnection[] webOS;
private PackageManager[] pkgMgr;
private ArrayList<File> items;
private DefaultTableModel modTable;
private File installDir;
private Timer timer;
public MainView(SingleFrameApplication app) {
super(app);
bundle = WebOSQuickInstallApp.bundle;
URL bgURL = getClass().getResource("resources/background.jpg");
bgImg = new ImageIcon(bgURL).getImage();
URL iconURL = getClass().getResource("resources/icon.png");
getFrame().setIconImage(new ImageIcon(iconURL).getImage());
items = new ArrayList<File>();
initComponents();
jButton2.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
jTable1.setGridColor(Color.CYAN);
modTable = (DefaultTableModel) jTable1.getModel();
installDir = new File(FileUtils.appDirectory(), bundle.getString("INSTALL"));
chooserPath = Preferences.userRoot().get("chooserPath", null);
new FileDrop(jTable1, new FileDrop.Listener() {
public void filesDropped(File[] files ) {
for(int i=0; i<files.length; i++) {
String name = files[i].getName().toLowerCase();
if(name.endsWith(".ipk") || name.endsWith(".patch") ||
name.endsWith(".diff")) {
addFile(files[i]);
}
}
}
});
devices = new WebOSDevice[0];
webOS = new WebOSConnection[0];
loadList();
timer = new Timer();
if(Novacom.isInstalled()) {
reloadDeviceCache();
if(jComboBox1.getItemCount()==0) {
timer.schedule(new FirstCheckConnection(), 100);
}
} else {
timer.schedule(new DoInstallDrivers(), 100);
}
}
private void loadList() {
if(!installDir.isDirectory()) {
installDir.mkdirs();
}
items.clear();
while(modTable.getRowCount()>0) {
modTable.removeRow(0);
}
File[] files = installDir.listFiles(new WebOSFileFilter());
for(int i=0; i<files.length; i++) {
items.add(files[i]);
addRow(files[i]);
}
}
private void addRow(File current){
String type;
if (current.getName().toLowerCase().endsWith(".ipk")) {
type = " " + bundle.getString("WEBOS_PACKAGE_FILE");
} else if (current.getName().toLowerCase().endsWith(".patch")) {
type = " " + bundle.getString("WEBOS_PATCH_FILE");
} else if (current.getName().toLowerCase().endsWith(".diff")) {
type = " " + bundle.getString("WEBOS_DIFF_FILE");
} else {
type = " " + bundle.getString("UNKNOWN_FILE");
}
modTable.addRow(new Object[]{" " + FileUtils.getFilename(current),
FileUtils.formatFilesize(current), type});
}
private void removeRow(){
int index = jTable1.getSelectedRow();
items.get(index).delete();
items.remove(index);
modTable.removeRow(index);
}
private void addDialog() {
JFileChooser fc = new JFileChooser();
fc.setAcceptAllFileFilterUsed(false);
fc.setFileFilter(new WebOSChooseFilter());
fc.setMultiSelectionEnabled(true);
if(chooserPath!=null)
fc.setCurrentDirectory(new File(chooserPath));
fc.setDialogTitle("");
disableNewFolderButton(fc);
if(fc.showDialog(getFrame(), bundle.getString("SELECT"))==
JFileChooser.APPROVE_OPTION) {
File[] files = fc.getSelectedFiles();
if(files.length>0) {
chooserPath = files[0].getParentFile().getAbsolutePath();
Preferences.userRoot().put("chooserPath", chooserPath);
}
for(int i=0; i<files.length; i++){
addFile(files[i]);
}
}
}
private void disableNewFolderButton(Container c) {
int len = c.getComponentCount();
for(int i=0; i<len; i++) {
Component comp = c.getComponent(i);
if(comp instanceof JButton) {
JButton b = (JButton)comp;
Icon icon = b.getIcon();
if(icon != null && (icon == UIManager.getIcon("FileChooser.newFolderIcon")
|| icon == UIManager.getIcon("FileChooser.upFolderIcon")))
b.setEnabled(false);
} else if (comp instanceof Container) {
disableNewFolderButton((Container)comp);
}
}
}
private void addFile(File from) {
File to = new File(installDir, FileUtils.getFilename(from));
boolean exists = to.exists();
if(exists) {
to.delete();
}
try {
FileUtils.copy(from, to);
} catch(Exception e) {
if(to.length()==0) {
to.delete();
exists = false;
}
System.err.println("ERROR: Unable to copy file to install directory: "
+ from.getAbsolutePath());
}
if(exists) { //update list
loadList();
} else { //new file to add to list
items.add(to);
addRow(to);
}
}
private void reloadDeviceCache() {
try {
String id = null;
if(devices.length>0) {
id = devices[getConnectionIndex()].getId();
}
WebOSDevice[] newDevices = WebOS.listDevices();
WebOSConnection[] newWebOS = new WebOSConnection[newDevices.length];
PackageManager[] newPkgMgr = new PackageManager[newDevices.length];
jComboBox1.removeAllItems();
for(int i=0; i<newDevices.length; i++) {
for(int j=0; j<devices.length; j++) {
if(devices[j].getId().equals(newDevices[i].getId())) {
newWebOS[i] = webOS[j];
newPkgMgr[i] = pkgMgr[j];
}
}
if(newWebOS[i]==null) {
try {
newWebOS[i] = newDevices[i].connect();
} catch(WebOSException e) {
newWebOS[i] = null;
}
}
if( newWebOS[i] != null) {
String deviceName = newWebOS[i].getDeviceInfo().name();
if(deviceName.equals(DeviceInfo.Model.Unknown.toString())) {
deviceName = newDevices[i].getName();
}
jComboBox1.addItem(deviceName);
if(id!=null && newDevices[i].getId().equals(id)) {
jComboBox1.setSelectedIndex(i);
}
}
}
if(jComboBox1.getSelectedIndex()==-1 && jComboBox1.getItemCount()>0) {
jComboBox1.setSelectedIndex(0);
}
devices = newDevices;
webOS = newWebOS;
pkgMgr = newPkgMgr;
} catch(Exception e) {
System.err.println(e.getMessage());
e.printStackTrace();
}
}
public int getConnectionIndex() {
int currIndex = jComboBox1.getSelectedIndex();
int result = 0;
int counter = -1;
for(result=0; result<devices.length; result++) {
if(webOS[result]!=null) {
counter++;
}
if(counter==currIndex) {
break;
}
}
return result;
}
private void connectionWarningIfNeeded() {
if(jComboBox1.getItemCount()==0) {
if(JOptionPane.showConfirmDialog(mainPanel,
bundle.getString("REPEATING_CONNECTION_WARNING"),
bundle.getString("NO_DEVICES_FOUND"), JOptionPane.OK_CANCEL_OPTION,
JOptionPane.WARNING_MESSAGE)==JOptionPane.OK_OPTION) {
reloadDeviceCache();
connectionWarningIfNeeded();
} else {
System.exit(0);
}
}
}
private void firstConnectionWarningIfNeeded() {
if(jComboBox1.getItemCount()==0) {
int choice = JOptionPane.showOptionDialog(mainPanel, bundle.getString("REPEATING_CONNECTION_WARNING"),
bundle.getString("NO_DEVICES_FOUND"), JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.ERROR_MESSAGE, null, new Object[] {bundle.getString("OK"),
bundle.getString("CANCEL"), bundle.getString("MainView.jMenuItem2.text")},
bundle.getString("OK"));
if(choice==JOptionPane.YES_OPTION) {
reloadDeviceCache();
firstConnectionWarningIfNeeded();
} else if(choice==JOptionPane.CANCEL_OPTION) {
installDrivers(false);
firstConnectionWarningIfNeeded();
} else {
System.exit(0);
}
}
}
private void installDrivers(boolean exitOnFail) {
JFrame mainFrame = WebOSQuickInstallApp.getApplication().getMainFrame();
DriverInstaller downloader = new DriverInstaller(mainFrame);
downloader.setLocationRelativeTo(mainFrame);
WebOSQuickInstallApp.getApplication().show(downloader);
reloadDeviceCache();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
mainPanel = new ImagePanel(bgImg);
jLayeredPane1 = new javax.swing.JLayeredPane();
jLayeredPane3 = new javax.swing.JLayeredPane();
jLabel1 = new javax.swing.JLabel();
jLayeredPane7 = new javax.swing.JLayeredPane();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jButton1 = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jComboBox1 = new javax.swing.JComboBox();
menuBar = new javax.swing.JMenuBar();
javax.swing.JMenu fileMenu = new javax.swing.JMenu();
jMenuItem1 = new javax.swing.JMenuItem();
jSeparator2 = new javax.swing.JSeparator();
jMenuItem8 = new javax.swing.JMenuItem();
jMenuItem2 = new javax.swing.JMenuItem();
jSeparator1 = new javax.swing.JSeparator();
javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem();
toolMenu = new javax.swing.JMenu();
jMenuItem3 = new javax.swing.JMenuItem();
jMenuItem4 = new javax.swing.JMenuItem();
jMenuItem5 = new javax.swing.JMenuItem();
jSeparator3 = new javax.swing.JSeparator();
jMenuItem9 = new javax.swing.JMenuItem();
javax.swing.JMenu helpMenu = new javax.swing.JMenu();
jMenuItem6 = new javax.swing.JMenuItem();
jMenuItem7 = new javax.swing.JMenuItem();
javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem();
mainPanel.setName("mainView"); // NOI18N
jLayeredPane3.setFocusable(false);
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/pre_shadow.png"))); // NOI18N
jLabel1.setFocusable(false);
jLabel1.setBounds(10, 30, 150, 160);
jLayeredPane3.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane3.setBounds(460, 160, 170, 210);
jLayeredPane1.add(jLayeredPane3, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane7.setBorder(javax.swing.BorderFactory.createTitledBorder(new javax.swing.border.LineBorder(new java.awt.Color(128, 128, 128), 1, true), bundle.getString("MainView.jLayeredPane7.border.title"))); // NOI18N
jButton4.setBackground(new java.awt.Color(203, 203, 203));
jButton4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/remove.png"))); // NOI18N
jButton4.setFocusable(false);
jButton4.setIconTextGap(0);
jButton4.setMargin(new java.awt.Insets(0, 0, 0, 0));
jButton4.setMaximumSize(new java.awt.Dimension(36, 33));
jButton4.setMinimumSize(new java.awt.Dimension(36, 33));
jButton4.setPreferredSize(new java.awt.Dimension(36, 33));
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jButton4.setBounds(520, 70, 40, 30);
jLayeredPane7.add(jButton4, javax.swing.JLayeredPane.DEFAULT_LAYER);
javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(ca.canucksoftware.wosqi.WebOSQuickInstallApp.class).getContext().getActionMap(MainView.class, this);
jButton5.setAction(actionMap.get("openRepository")); // NOI18N
jButton5.setBackground(new java.awt.Color(203, 203, 203));
jButton5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/online.png"))); // NOI18N
jButton5.setFocusable(false);
jButton5.setIconTextGap(0);
jButton5.setMargin(new java.awt.Insets(0, 0, 0, 0));
jButton5.setMaximumSize(new java.awt.Dimension(36, 33));
jButton5.setMinimumSize(new java.awt.Dimension(36, 33));
jButton5.setPreferredSize(new java.awt.Dimension(36, 33));
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jButton5.setBounds(520, 120, 40, 40);
jLayeredPane7.add(jButton5, javax.swing.JLayeredPane.DEFAULT_LAYER);
jScrollPane2.setAutoscrolls(true);
jScrollPane2.setPreferredSize(new java.awt.Dimension(485, 191));
jTable1.setFont(new java.awt.Font("Tahoma", 0, 12));
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Name", "Size", "Type"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.String.class
};
boolean[] canEdit = new boolean [] {
false, false, false
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jTable1.setFillsViewportHeight(true);
jTable1.setFocusable(false);
jTable1.setMaximumSize(new java.awt.Dimension(2147483647, 2147483647));
jTable1.setMinimumSize(new java.awt.Dimension(45, 45));
jTable1.setName("installTable"); // NOI18N
jTable1.setRowHeight(20);
jTable1.getTableHeader().setReorderingAllowed(false);
jScrollPane2.setViewportView(jTable1);
jTable1.getColumnModel().getColumn(0).setResizable(false);
jTable1.getColumnModel().getColumn(0).setPreferredWidth(350);
jTable1.getColumnModel().getColumn(0).setHeaderValue(bundle.getString("MainView.installTable.columnModel.title0")); // NOI18N
jTable1.getColumnModel().getColumn(1).setResizable(false);
jTable1.getColumnModel().getColumn(1).setPreferredWidth(125);
jTable1.getColumnModel().getColumn(1).setHeaderValue(bundle.getString("MainView.installTable.columnModel.title1")); // NOI18N
jTable1.getColumnModel().getColumn(2).setResizable(false);
jTable1.getColumnModel().getColumn(2).setPreferredWidth(250);
jTable1.getColumnModel().getColumn(2).setHeaderValue(bundle.getString("MainView.installTable.columnModel.title2")); // NOI18N
jScrollPane2.setBounds(20, 30, 485, 191);
jLayeredPane7.add(jScrollPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jButton1.setBackground(new java.awt.Color(220, 220, 220));
jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/add.png"))); // NOI18N
jButton1.setFocusable(false);
jButton1.setIconTextGap(0);
jButton1.setMargin(new java.awt.Insets(0, 0, 0, 0));
jButton1.setMaximumSize(new java.awt.Dimension(36, 33));
jButton1.setMinimumSize(new java.awt.Dimension(36, 33));
jButton1.setPreferredSize(new java.awt.Dimension(36, 33));
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton1.setBounds(520, 30, 40, 30);
jLayeredPane7.add(jButton1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane7.setBounds(10, 25, 590, 240);
jLayeredPane1.add(jLayeredPane7, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
jLabel2.setText(bundle.getString("MainView.jLabel2.text")); // NOI18N
jLabel2.setFocusable(false);
jLabel2.setBounds(350, 5, 100, 20);
jLayeredPane1.add(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/find-apps-precentralnet.png"))); // NOI18N
jButton2.setBorderPainted(false);
jButton2.setContentAreaFilled(false);
jButton2.setFocusable(false);
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton2.setBounds(20, 280, 130, 60);
jLayeredPane1.add(jButton2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jButton3.setBackground(new java.awt.Color(165, 165, 165));
jButton3.setFont(jButton3.getFont().deriveFont(jButton3.getFont().getSize()+3f));
jButton3.setText(bundle.getString("MainView.jButton3.text")); // NOI18N
jButton3.setFocusable(false);
jButton3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton3.setBounds(240, 290, 140, 33);
jLayeredPane1.add(jButton3, javax.swing.JLayeredPane.DEFAULT_LAYER);
jComboBox1.setBackground(new java.awt.Color(220, 220, 220));
jComboBox1.setFocusable(false);
jComboBox1.addPopupMenuListener(new javax.swing.event.PopupMenuListener() {
public void popupMenuCanceled(javax.swing.event.PopupMenuEvent evt) {
}
public void popupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {
jComboBox1PopupMenuWillBecomeInvisible(evt);
}
public void popupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {
jComboBox1PopupMenuWillBecomeVisible(evt);
}
});
jComboBox1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jComboBox1ActionPerformed(evt);
}
});
jComboBox1.setBounds(460, 5, 140, 20);
jLayeredPane1.add(jComboBox1, javax.swing.JLayeredPane.DEFAULT_LAYER);
org.jdesktop.layout.GroupLayout mainPanelLayout = new org.jdesktop.layout.GroupLayout(mainPanel);
mainPanel.setLayout(mainPanelLayout);
mainPanelLayout.setHorizontalGroup(
mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jLayeredPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 620, Short.MAX_VALUE)
);
mainPanelLayout.setVerticalGroup(
mainPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jLayeredPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 354, Short.MAX_VALUE)
);
fileMenu.setText(bundle.getString("MainView.fileMenu.text")); // NOI18N
jMenuItem1.setText(bundle.getString("MainView.jMenuItem1.text")); // NOI18N
jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem1ActionPerformed(evt);
}
});
fileMenu.add(jMenuItem1);
fileMenu.add(jSeparator2);
jMenuItem8.setText(bundle.getString("MainView.jMenuItem8.text")); // NOI18N
jMenuItem8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem8ActionPerformed(evt);
}
});
fileMenu.add(jMenuItem8);
jMenuItem2.setText(bundle.getString("MainView.jMenuItem2.text")); // NOI18N
jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem2ActionPerformed(evt);
}
});
fileMenu.add(jMenuItem2);
fileMenu.add(jSeparator1);
exitMenuItem.setAction(actionMap.get("quit")); // NOI18N
exitMenuItem.setText(bundle.getString("EXIT")); // NOI18N
fileMenu.add(exitMenuItem);
menuBar.add(fileMenu);
toolMenu.setText(bundle.getString("MainView.toolMenu.text")); // NOI18N
jMenuItem3.setText(bundle.getString("MainView.jMenuItem3.text")); // NOI18N
jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem3ActionPerformed(evt);
}
});
toolMenu.add(jMenuItem3);
jMenuItem4.setText(bundle.getString("MainView.jMenuItem4.text")); // NOI18N
jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem4ActionPerformed(evt);
}
});
toolMenu.add(jMenuItem4);
jMenuItem5.setText(bundle.getString("MainView.jMenuItem5.text")); // NOI18N
jMenuItem5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem5ActionPerformed(evt);
}
});
toolMenu.add(jMenuItem5);
toolMenu.add(jSeparator3);
jMenuItem9.setText(bundle.getString("MainView.jMenuItem9.text")); // NOI18N
jMenuItem9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem9ActionPerformed(evt);
}
});
toolMenu.add(jMenuItem9);
menuBar.add(toolMenu);
helpMenu.setText(bundle.getString("MainView.helpMenu.text")); // NOI18N
jMenuItem6.setText(bundle.getString("MainView.jMenuItem6.text")); // NOI18N
jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem6ActionPerformed(evt);
}
});
helpMenu.add(jMenuItem6);
jMenuItem7.setText(bundle.getString("MainView.jMenuItem7.text")); // NOI18N
jMenuItem7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItem7ActionPerformed(evt);
}
});
helpMenu.add(jMenuItem7);
aboutMenuItem.setAction(actionMap.get("showAboutBox")); // NOI18N
aboutMenuItem.setText(bundle.getString("MainView.aboutMenuItem.text")); // NOI18N
aboutMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
aboutMenuItemActionPerformed(evt);
}
});
helpMenu.add(aboutMenuItem);
menuBar.add(helpMenu);
setComponent(mainPanel);
setMenuBar(menuBar);
}// </editor-fold>//GEN-END:initComponents
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
if(items.size()>0) {
JFrame mainFrame = WebOSQuickInstallApp.getApplication().getMainFrame();
Installer installer = new Installer(mainFrame, webOS[getConnectionIndex()],
items);
installer.setLocationRelativeTo(mainFrame);
WebOSQuickInstallApp.getApplication().show(installer);
loadList();
reloadDeviceCache();
timer.schedule(new CheckConnection(), 200);
}
}//GEN-LAST:event_jButton3ActionPerformed
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed
JFrame mainFrame = WebOSQuickInstallApp.getApplication().getMainFrame();
int index = getConnectionIndex();
if(pkgMgr[index]==null) {
FeedLoader loader = new FeedLoader(mainFrame, webOS[index]);
loader.setLocationRelativeTo(mainFrame);
WebOSQuickInstallApp.getApplication().show(loader);
pkgMgr[index] = loader.pkgMgr;
} else {
pkgMgr[index].setInstalledAppList(webOS[index].listInstalled());
}
if(pkgMgr[index]!=null) {
if(pkgMgr[index].hasPackages()) {
FeedViewer feeds = new FeedViewer(mainFrame, webOS[index], pkgMgr[index]);
feeds.setLocationRelativeTo(mainFrame);
WebOSQuickInstallApp.getApplication().show(feeds);
} else {
JOptionPane.showMessageDialog(mainPanel, bundle.getString("ERROR:_FEED_LOADING_FAILED"));
}
} else {
JOptionPane.showMessageDialog(mainPanel, bundle.getString("ERROR:_FEED_LOADING_FAILED"));
}
reloadDeviceCache();
timer.schedule(new CheckConnection(), 200);
}//GEN-LAST:event_jButton5ActionPerformed
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
addDialog();
}//GEN-LAST:event_jButton1ActionPerformed
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
removeRow();
}//GEN-LAST:event_jButton4ActionPerformed
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
try {
Desktop.getDesktop().browse(new URI("http://www.webosnation.com/"));
} catch(Exception e) {}
}//GEN-LAST:event_jButton2ActionPerformed
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem1ActionPerformed
addDialog();
}//GEN-LAST:event_jMenuItem1ActionPerformed
private void jComboBox1PopupMenuWillBecomeVisible(javax.swing.event.PopupMenuEvent evt) {//GEN-FIRST:event_jComboBox1PopupMenuWillBecomeVisible
reloadDeviceCache();
timer.schedule(new CheckConnection(), 200);
}//GEN-LAST:event_jComboBox1PopupMenuWillBecomeVisible
private void jMenuItem7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem7ActionPerformed
JOptionPane.showMessageDialog(mainPanel, "<html><body width=\"400px\">" +
bundle.getString("FULL_WOSQI_DISCLAIMER") + "</body>",
bundle.getString("DISCLAIMER"),JOptionPane.INFORMATION_MESSAGE);
reloadDeviceCache();
timer.schedule(new CheckConnection(), 200);
}//GEN-LAST:event_jMenuItem7ActionPerformed
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem2ActionPerformed
installDrivers(false);
}//GEN-LAST:event_jMenuItem2ActionPerformed
private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem3ActionPerformed
JFrame mainFrame = WebOSQuickInstallApp.getApplication().getMainFrame();
SendFile transfer = new SendFile(mainFrame, webOS[getConnectionIndex()]);
transfer.setLocationRelativeTo(mainFrame);
WebOSQuickInstallApp.getApplication().show(transfer);
reloadDeviceCache();
timer.schedule(new CheckConnection(), 200);
}//GEN-LAST:event_jMenuItem3ActionPerformed
private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem4ActionPerformed
JFrame mainFrame = WebOSQuickInstallApp.getApplication().getMainFrame();
ReceiveFile transfer = new ReceiveFile(mainFrame, webOS[getConnectionIndex()]);
transfer.setLocationRelativeTo(mainFrame);
WebOSQuickInstallApp.getApplication().show(transfer);
reloadDeviceCache();
timer.schedule(new CheckConnection(), 200);
}//GEN-LAST:event_jMenuItem4ActionPerformed
private void jComboBox1PopupMenuWillBecomeInvisible(javax.swing.event.PopupMenuEvent evt) {//GEN-FIRST:event_jComboBox1PopupMenuWillBecomeInvisible
timer.schedule(new CheckConnection(), 200);
}//GEN-LAST:event_jComboBox1PopupMenuWillBecomeInvisible
private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem6ActionPerformed
JFrame mainFrame = WebOSQuickInstallApp.getApplication().getMainFrame();
Usage usage = new Usage(mainFrame);
usage.setLocationRelativeTo(mainFrame);
WebOSQuickInstallApp.getApplication().show(usage);
reloadDeviceCache();
}//GEN-LAST:event_jMenuItem6ActionPerformed
private void aboutMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aboutMenuItemActionPerformed
JFrame mainFrame = WebOSQuickInstallApp.getApplication().getMainFrame();
About about = new About(mainFrame);
about.setLocationRelativeTo(mainFrame);
WebOSQuickInstallApp.getApplication().show(about);
reloadDeviceCache();
timer.schedule(new CheckConnection(), 200);
}//GEN-LAST:event_aboutMenuItemActionPerformed
private void jMenuItem5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem5ActionPerformed
JFrame mainFrame = WebOSQuickInstallApp.getApplication().getMainFrame();
DeviceManagement manage = new DeviceManagement(mainFrame, webOS[getConnectionIndex()]);
manage.setLocationRelativeTo(mainFrame);
WebOSQuickInstallApp.getApplication().show(manage);
reloadDeviceCache();
timer.schedule(new CheckConnection(), 200);
}//GEN-LAST:event_jMenuItem5ActionPerformed
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox1ActionPerformed
}//GEN-LAST:event_jComboBox1ActionPerformed
private void jMenuItem8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem8ActionPerformed
JFrame mainFrame = WebOSQuickInstallApp.getApplication().getMainFrame();
Settings settings = new Settings(mainFrame);
settings.setLocationRelativeTo(mainFrame);
WebOSQuickInstallApp.getApplication().show(settings);
if(settings.feedsChanged) {
for(int i=0; i<pkgMgr.length; i++) {
pkgMgr[i] = null;
}
}
reloadDeviceCache();
timer.schedule(new CheckConnection(), 200);
}//GEN-LAST:event_jMenuItem8ActionPerformed
private void jMenuItem9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItem9ActionPerformed
int index = getConnectionIndex();
if(webOS[index]!=null) {
try {
webOS[index].launchTerminal();
} catch(UnsupportedOperationException e) {
e.printStackTrace();
}
}
}//GEN-LAST:event_jMenuItem9ActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JComboBox jComboBox1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLayeredPane jLayeredPane1;
private javax.swing.JLayeredPane jLayeredPane3;
private javax.swing.JLayeredPane jLayeredPane7;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JMenuItem jMenuItem4;
private javax.swing.JMenuItem jMenuItem5;
private javax.swing.JMenuItem jMenuItem6;
private javax.swing.JMenuItem jMenuItem7;
private javax.swing.JMenuItem jMenuItem8;
private javax.swing.JMenuItem jMenuItem9;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JSeparator jSeparator3;
private javax.swing.JTable jTable1;
private javax.swing.JPanel mainPanel;
private javax.swing.JMenuBar menuBar;
private javax.swing.JMenu toolMenu;
// End of variables declaration//GEN-END:variables
class DoInstallDrivers extends TimerTask {
public void run() {
if(JOptionPane.showConfirmDialog(null, "<html><body width=\"400px\">" +
bundle.getString("FOR_WEBOS_QUICK_INSTALL_TO_RUN_CORRECTLY," +
"_YOUR_COMPUTER_NEEDS_TO_HAVE_THE_NOVACOM_DRIVER_INSTALLED._" +
"WOULD_YOU_LIKE_TO_INSTALL_IT_NOW?"),
bundle.getString("NOVACOM_DRIVER_MISSING"), JOptionPane.YES_NO_OPTION,
JOptionPane.WARNING_MESSAGE)==JOptionPane.YES_OPTION) {
installDrivers(true);
if(devices.length==0) {
timer.schedule(new CheckConnection(), 100);
/*JOptionPane.showMessageDialog(mainPanel,
bundle.getString("NO_DEVICES_ARE_CONNECTED." +
"_CONNECT_A_DEVICE_THEN_RELAUNCH_WEBOS_QUICK_INSTALL."),
bundle.getString("NO_DEVICES_FOUND"),
JOptionPane.ERROR_MESSAGE);
System.exit(0);*/
}
} else {
System.exit(0);
}
}
}
class CheckConnection extends TimerTask {
public void run() {
connectionWarningIfNeeded();
}
}
class FirstCheckConnection extends TimerTask {
public void run() {
firstConnectionWarningIfNeeded();
/*JOptionPane.showMessageDialog(mainPanel,
bundle.getString("NO_DEVICES_ARE_CONNECTED." +
"_CONNECT_A_DEVICE_THEN_RELAUNCH_WEBOS_QUICK_INSTALL."),
bundle.getString("NO_DEVICES_FOUND"), JOptionPane.ERROR_MESSAGE);
System.exit(0);*/
}
}
class ImagePanel extends JPanel {
private Image img;
public ImagePanel(String img) {
this(new ImageIcon(img).getImage());
}
public ImagePanel(Image img) {
this.img = img;
Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
setSize(size);
setLayout(null);
}
@Override public void paintComponent(Graphics g) {
g.drawImage(img, 0, 0, null);
}
}
class DoctorChooseFilter extends javax.swing.filechooser.FileFilter {
private final String[] okFileExtensions = new String[] {".jar"};
public boolean accept(File f) {
for (String extension : okFileExtensions)
if (f.getName().toLowerCase().endsWith(extension) || f.isDirectory())
return true;
return false;
}
public String getDescription() {
return bundle.getString("JAR_FILES_(*.JAR)");
}
}
class WebOSChooseFilter extends javax.swing.filechooser.FileFilter {
private final String[] okFileExtensions = new String[] {".ipk", ".diff", ".patch"};
public boolean accept(File f) {
for (String extension : okFileExtensions)
if (f.getName().toLowerCase().endsWith(extension) || f.isDirectory())
return true;
return false;
}
public String getDescription() {
return bundle.getString("WEBOS_FILES_(*.IPK,_*.PATCH,_*.DIFF)");
}
}
class WebOSFileFilter implements java.io.FileFilter{
private final String[] okFileExtensions = new String[] {".ipk", ".diff", ".patch"};
public boolean accept(File file) {
for (String extension : okFileExtensions)
if (file.getName().toLowerCase().endsWith(extension))
return true;
return false;
}
}
}
@@ -0,0 +1,208 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
<Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="ReceiveFile.title" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="iconImage" type="java.awt.Image" editor="org.netbeans.modules.form.ComponentChooserEditor">
<ComponentRef name="null"/>
</Property>
<Property name="modal" type="boolean" value="true"/>
<Property name="name" type="java.lang.String" value="transfer" noResource="true"/>
<Property name="resizable" type="boolean" value="false"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="0"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" alignment="0" pref="470" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" alignment="0" pref="160" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane1">
<Properties>
<Property name="name" type="java.lang.String" value="jLayeredPane1" noResource="true"/>
</Properties>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane2">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
<LineBorder>
<Color PropertyName="color" blue="c0" green="c0" red="c0" type="rgb"/>
</LineBorder>
</Border>
</Property>
<Property name="name" type="java.lang.String" value="jLayeredPane2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="10" width="450" height="140" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JButton" name="jButton3">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jButton3" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="ReceiveFile.jButton3.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jButton3" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton3ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="260" y="100" width="79" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="jButton2">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jButton2" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="ReceiveFile.jButton2.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jButton2" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton2ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="110" y="100" width="140" height="25" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="jButton1">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jButton1" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="ReceiveFile.jButton1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jButton1" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="400" y="58" width="-1" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JTextField" name="jTextField2">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jTextField2" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="enabled" type="boolean" value="false"/>
<Property name="name" type="java.lang.String" value="jTextField2" noResource="true"/>
</Properties>
<Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jTextField2MouseClicked"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="120" y="60" width="270" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel1" property="font" relativeSize="true" size="3"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="ReveiveFile.jLabel1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="60" width="140" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JTextField" name="jTextField1">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jTextField1" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="name" type="java.lang.String" value="jTextField1" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="80" y="20" width="360" height="24" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel2" property="font" relativeSize="true" size="3"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="ReveiveFile.jLabel2.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="20" width="70" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
</SubComponents>
</Form>
@@ -0,0 +1,271 @@
/*
* WebOSQuickInstallAboutBox.java
*/
package ca.canucksoftware.wosqi;
import ca.canucksoftware.utils.FileUtils;
import ca.canucksoftware.webos.DeviceInfo;
import ca.canucksoftware.webos.WebOSConnection;
import javax.swing.JFileChooser;
import javax.swing.Icon;
import java.awt.Component;
import java.awt.Container;
import javax.swing.UIManager;
import javax.swing.JButton;
import javax.swing.JDialog;
import java.io.*;
import java.text.MessageFormat;
import javax.swing.JOptionPane;
import java.util.*;
import java.util.Timer;
import java.util.ResourceBundle;
public class ReceiveFile extends javax.swing.JDialog {
private ResourceBundle bundle;
public Timer t;
private WebOSConnection webOS;
private File dest;
private String src;
private boolean transferStarted;
public ReceiveFile(java.awt.Frame parent, WebOSConnection connection) {
super(parent);
bundle = WebOSQuickInstallApp.bundle;
initComponents();
webOS = connection;
dest = null;
transferStarted = false;
t = new Timer();
if(!webOS.isConnected()) {
DeviceInfo info = webOS.getDeviceInfo();
if(info!=null && !info.model().equals(DeviceInfo.Model.Unknown.toString())) {
JOptionPane.showMessageDialog(rootPane, MessageFormat.format(bundle
.getString("{0}_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN."),
new Object[] {info.model()}));
} else {
JOptionPane.showMessageDialog(rootPane, bundle
.getString("DEVICE_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN."));
}
t.schedule(new DoDispose(), 200);
}
}
public void startTransfer() {
if(dest!=null && dest.exists()) {
transferStarted = true;
jButton1.setEnabled(false);
jButton2.setEnabled(false);
jButton3.setEnabled(false);
jTextField2.setEnabled(false);
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
jButton2.setText(bundle.getString("PLEASE_WAIT..."));
src = formatSrc(jTextField1.getText());
t.schedule(new DoTransfer(), 200);
}
}
private String formatSrc(String file) {
String result = null;
result = file.replace("\\", "/");
if(!result.startsWith("/"))
result = "/" + result;
return result;
}
public void closeCustTransfer() {
dispose();
}
private void loadFileChooser() {
JFileChooser fc = new JFileChooser(); //Create a file chooser
fc.setDialogTitle("");
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
disableNewFolderButton(fc);
if (fc.showDialog(rootPane, bundle.getString("SELECT"))==
JFileChooser.APPROVE_OPTION) {
dest = fc.getSelectedFile();
jTextField2.setText(dest.getAbsolutePath());
}
}
private void disableNewFolderButton(Container c) {
int len = c.getComponentCount();
for(int i=0; i<len; i++) {
Component comp = c.getComponent(i);
if(comp instanceof JButton) {
JButton b = (JButton)comp;
Icon icon = b.getIcon();
if(icon != null && (icon == UIManager.getIcon("FileChooser.newFolderIcon")
|| icon == UIManager.getIcon("FileChooser.upFolderIcon")))
b.setEnabled(false);
} else if (comp instanceof Container) {
disableNewFolderButton((Container)comp);
}
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jLayeredPane1 = new javax.swing.JLayeredPane();
jLayeredPane2 = new javax.swing.JLayeredPane();
jButton3 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
jTextField2 = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(bundle.getString("ReceiveFile.title")); // NOI18N
setIconImage(null);
setModal(true);
setName("transfer"); // NOI18N
setResizable(false);
jLayeredPane1.setName("jLayeredPane1"); // NOI18N
jLayeredPane2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(192, 192, 192)));
jLayeredPane2.setName("jLayeredPane2"); // NOI18N
jButton3.setFont(jButton3.getFont().deriveFont(jButton3.getFont().getSize()+1f));
jButton3.setText(bundle.getString("ReceiveFile.jButton3.text")); // NOI18N
jButton3.setName("jButton3"); // NOI18N
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton3.setBounds(260, 100, 79, 23);
jLayeredPane2.add(jButton3, javax.swing.JLayeredPane.DEFAULT_LAYER);
jButton2.setFont(jButton2.getFont().deriveFont(jButton2.getFont().getSize()+1f));
jButton2.setText(bundle.getString("ReceiveFile.jButton2.text")); // NOI18N
jButton2.setName("jButton2"); // NOI18N
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton2.setBounds(110, 100, 140, 25);
jLayeredPane2.add(jButton2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jButton1.setFont(jButton1.getFont());
jButton1.setText(bundle.getString("ReceiveFile.jButton1.text")); // NOI18N
jButton1.setName("jButton1"); // NOI18N
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton1.setBounds(400, 58, 45, 23);
jLayeredPane2.add(jButton1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jTextField2.setFont(jTextField2.getFont());
jTextField2.setEnabled(false);
jTextField2.setName("jTextField2"); // NOI18N
jTextField2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jTextField2MouseClicked(evt);
}
});
jTextField2.setBounds(120, 60, 270, 20);
jLayeredPane2.add(jTextField2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getSize()+3f));
jLabel1.setText(bundle.getString("ReveiveFile.jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
jLabel1.setBounds(10, 60, 140, 20);
jLayeredPane2.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jTextField1.setFont(jTextField1.getFont());
jTextField1.setName("jTextField1"); // NOI18N
jTextField1.setBounds(80, 20, 360, 24);
jLayeredPane2.add(jTextField1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getSize()+3f));
jLabel2.setText(bundle.getString("ReveiveFile.jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
jLabel2.setBounds(10, 20, 70, 20);
jLayeredPane2.add(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane2.setBounds(10, 10, 450, 140);
jLayeredPane1.add(jLayeredPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 470, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 160, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
loadFileChooser();
}//GEN-LAST:event_jButton1ActionPerformed
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
startTransfer();
}//GEN-LAST:event_jButton2ActionPerformed
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
closeCustTransfer();
}//GEN-LAST:event_jButton3ActionPerformed
private void jTextField2MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTextField2MouseClicked
if(!transferStarted)
loadFileChooser();
}//GEN-LAST:event_jTextField2MouseClicked
// Variables declaration - do not modify//GEN-BEGIN:variables
javax.swing.JButton jButton1;
javax.swing.JButton jButton2;
javax.swing.JButton jButton3;
javax.swing.JLabel jLabel1;
javax.swing.JLabel jLabel2;
javax.swing.JLayeredPane jLayeredPane1;
javax.swing.JLayeredPane jLayeredPane2;
javax.swing.JTextField jTextField1;
javax.swing.JTextField jTextField2;
// End of variables declaration//GEN-END:variables
class DoTransfer extends TimerTask {
public void run() {
dest=new File(dest, FileUtils.getFilename(src));
if(dest.exists()) {
dest.delete();
}
if(webOS.receiveFile(src, dest)) {
JOptionPane.showMessageDialog(rootPane,
bundle.getString("FILE_TRANSFERRED_SUCCESSFULLY."));
} else {
JOptionPane.showMessageDialog(rootPane,
bundle.getString("FILE_TRANSFER_FAILED."));
}
jButton1.setEnabled(true);
jButton2.setEnabled(true);
jButton3.setEnabled(true);
jTextField2.setEnabled(true);
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dispose();
}
}
class DoDispose extends TimerTask {
public void run() {
dispose();
}
}
}
+208
View File
@@ -0,0 +1,208 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
<Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="SendFile.title" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="iconImage" type="java.awt.Image" editor="org.netbeans.modules.form.ComponentChooserEditor">
<ComponentRef name="null"/>
</Property>
<Property name="modal" type="boolean" value="true"/>
<Property name="name" type="java.lang.String" value="transfer" noResource="true"/>
<Property name="resizable" type="boolean" value="false"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" alignment="0" pref="470" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" alignment="0" pref="160" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane1">
<Properties>
<Property name="name" type="java.lang.String" value="jLayeredPane1" noResource="true"/>
</Properties>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane2">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
<LineBorder>
<Color PropertyName="color" blue="c0" green="c0" red="c0" type="rgb"/>
</LineBorder>
</Border>
</Property>
<Property name="name" type="java.lang.String" value="jLayeredPane2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="10" width="450" height="140" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JButton" name="jButton3">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jButton3" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="SendFile.jButton3.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jButton3" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton3ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="260" y="100" width="79" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="jButton2">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jButton2" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="SendFile.jButton2.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jButton2" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton2ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="110" y="100" width="140" height="25" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JTextField" name="jTextField1">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jTextField1" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="enabled" type="boolean" value="false"/>
<Property name="name" type="java.lang.String" value="jTextField1" noResource="true"/>
</Properties>
<Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jTextField1MouseClicked"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="80" y="20" width="297" height="24" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="jButton1">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jButton1" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="SendFile.jButton1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jButton1" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="380" y="20" width="-1" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel1" property="font" relativeSize="true" size="3"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="SendFile.jLabel1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="60" width="140" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel2" property="font" relativeSize="true" size="3"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="SendFile.jLabel2.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="20" width="70" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JTextField" name="jTextField2">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jTextField2" property="font" relativeSize="true" size="0"/>
</FontInfo>
</Property>
<Property name="name" type="java.lang.String" value="jTextField2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="130" y="60" width="290" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
</SubComponents>
</Form>
+285
View File
@@ -0,0 +1,285 @@
/*
* WebOSQuickInstallAboutBox.java
*/
package ca.canucksoftware.wosqi;
import ca.canucksoftware.utils.FileUtils;
import ca.canucksoftware.webos.DeviceInfo;
import ca.canucksoftware.webos.WebOSConnection;
import javax.swing.JFileChooser;
import javax.swing.Icon;
import java.awt.Component;
import java.awt.Container;
import javax.swing.UIManager;
import javax.swing.JButton;
import javax.swing.JDialog;
import java.io.*;
import java.text.MessageFormat;
import javax.swing.JOptionPane;
import java.util.*;
import net.iharder.dnd.*;
import java.util.Timer;
import java.util.ResourceBundle;
public class SendFile extends javax.swing.JDialog {
private ResourceBundle bundle;
public Timer t;
private WebOSConnection webOS;
private File src;
private String dest;
private boolean transferStarted;
public SendFile(java.awt.Frame parent, WebOSConnection wc) {
super(parent);
bundle = WebOSQuickInstallApp.bundle;
initComponents();
src = null;
transferStarted = false;
webOS = wc;
t = new Timer();
new FileDrop(jLayeredPane1, new FileDrop.Listener()
{
public void filesDropped(File[] files )
{
src = files[0];
try {
jTextField1.setText(src.getCanonicalPath());
} catch(Exception e){}
}
});
if(!webOS.isConnected()) {
DeviceInfo info = webOS.getDeviceInfo();
if(info!=null && !info.model().equals(DeviceInfo.Model.Unknown.toString())) {
JOptionPane.showMessageDialog(rootPane, MessageFormat.format(bundle
.getString("{0}_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN."),
new Object[] {info.model()}));
} else {
JOptionPane.showMessageDialog(rootPane, bundle
.getString("DEVICE_IS_DISCONNECTED._PLEASE_RECONNECT_THEN_TRY_AGAIN."));
}
t.schedule(new DoDispose(), 200);
}
}
public void startTransfer() {
if(src!=null && src.exists()) {
transferStarted = true;
jButton1.setEnabled(false);
jButton2.setEnabled(false);
jButton3.setEnabled(false);
jTextField2.setEnabled(false);
setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
jButton2.setText(bundle.getString("PLEASE_WAIT..."));
dest = formatDest(jTextField2.getText().trim());
t.schedule(new DoTransfer(), 200);
}
}
private String formatDest(String path) {
String result = null;
result = path.replace("\\", "/");
if(!result.startsWith("/"))
result = "/" + result;
if(!result.endsWith("/"))
result = result + "/";
return result;
}
public void closeCustTransfer() {
dispose();
}
private void loadFileChooser() {
JFileChooser fc = new JFileChooser(); //Create a file chooser
fc.setAcceptAllFileFilterUsed(true);
fc.setMultiSelectionEnabled(false);
fc.setDialogTitle("");
disableNewFolderButton(fc);
if (fc.showDialog(rootPane, bundle.getString("SELECT"))==
JFileChooser.APPROVE_OPTION) {
src = fc.getSelectedFile();
try {
jTextField1.setText(src.getCanonicalPath());
} catch(Exception e){}
}
}
private void disableNewFolderButton(Container c) {
int len = c.getComponentCount();
for(int i=0; i<len; i++) {
Component comp = c.getComponent(i);
if(comp instanceof JButton) {
JButton b = (JButton)comp;
Icon icon = b.getIcon();
if(icon != null && (icon == UIManager.getIcon("FileChooser.newFolderIcon")
|| icon == UIManager.getIcon("FileChooser.upFolderIcon")))
b.setEnabled(false);
} else if (comp instanceof Container) {
disableNewFolderButton((Container)comp);
}
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jLayeredPane1 = new javax.swing.JLayeredPane();
jLayeredPane2 = new javax.swing.JLayeredPane();
jButton3 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jTextField2 = new javax.swing.JTextField();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(bundle.getString("SendFile.title")); // NOI18N
setIconImage(null);
setModal(true);
setName("transfer"); // NOI18N
setResizable(false);
jLayeredPane1.setName("jLayeredPane1"); // NOI18N
jLayeredPane2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(192, 192, 192)));
jLayeredPane2.setName("jLayeredPane2"); // NOI18N
jButton3.setFont(jButton3.getFont().deriveFont(jButton3.getFont().getSize()+1f));
jButton3.setText(bundle.getString("SendFile.jButton3.text")); // NOI18N
jButton3.setName("jButton3"); // NOI18N
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jButton3.setBounds(260, 100, 79, 23);
jLayeredPane2.add(jButton3, javax.swing.JLayeredPane.DEFAULT_LAYER);
jButton2.setFont(jButton2.getFont().deriveFont(jButton2.getFont().getSize()+1f));
jButton2.setText(bundle.getString("SendFile.jButton2.text")); // NOI18N
jButton2.setName("jButton2"); // NOI18N
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton2.setBounds(110, 100, 140, 25);
jLayeredPane2.add(jButton2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jTextField1.setFont(jTextField1.getFont());
jTextField1.setEnabled(false);
jTextField1.setName("jTextField1"); // NOI18N
jTextField1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
jTextField1MouseClicked(evt);
}
});
jTextField1.setBounds(80, 20, 297, 24);
jLayeredPane2.add(jTextField1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jButton1.setFont(jButton1.getFont());
jButton1.setText(bundle.getString("SendFile.jButton1.text")); // NOI18N
jButton1.setName("jButton1"); // NOI18N
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton1.setBounds(380, 20, 45, 23);
jLayeredPane2.add(jButton1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getSize()+3f));
jLabel1.setText(bundle.getString("SendFile.jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
jLabel1.setBounds(10, 60, 140, 20);
jLayeredPane2.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getSize()+3f));
jLabel2.setText(bundle.getString("SendFile.jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
jLabel2.setBounds(10, 20, 70, 20);
jLayeredPane2.add(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jTextField2.setFont(jTextField2.getFont());
jTextField2.setName("jTextField2"); // NOI18N
jTextField2.setBounds(130, 60, 290, 20);
jLayeredPane2.add(jTextField2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane2.setBounds(10, 10, 450, 140);
jLayeredPane1.add(jLayeredPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 470, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 160, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void jTextField1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTextField1MouseClicked
if(!transferStarted)
loadFileChooser();
}//GEN-LAST:event_jTextField1MouseClicked
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
loadFileChooser();
}//GEN-LAST:event_jButton1ActionPerformed
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
startTransfer();
}//GEN-LAST:event_jButton2ActionPerformed
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
closeCustTransfer();
}//GEN-LAST:event_jButton3ActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLayeredPane jLayeredPane1;
private javax.swing.JLayeredPane jLayeredPane2;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// End of variables declaration//GEN-END:variables
class DoTransfer extends TimerTask {
public void run() {
webOS.remountPartitionReadWrite();
webOS.mkdir(dest);
if(webOS.sendFile(src, dest + FileUtils.getFilename(src))) {
JOptionPane.showMessageDialog(rootPane,
bundle.getString("FILE_TRANSFERRED_SUCCESSFULLY."));
} else {
JOptionPane.showMessageDialog(rootPane,
bundle.getString("FILE_TRANSFER_FAILED."));
}
jButton1.setEnabled(true);
jButton2.setEnabled(true);
jButton3.setEnabled(true);
jTextField2.setEnabled(true);
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dispose();
}
}
class DoDispose extends TimerTask {
public void run() {
dispose();
}
}
}
+347
View File
@@ -0,0 +1,347 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.6" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
<Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Settings.title" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="iconImage" type="java.awt.Image" editor="org.netbeans.modules.form.ComponentChooserEditor">
<ComponentRef name="null"/>
</Property>
<Property name="modal" type="boolean" value="true"/>
<Property name="name" type="java.lang.String" value="transfer" noResource="true"/>
<Property name="resizable" type="boolean" value="false"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" alignment="0" pref="470" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" min="-2" pref="499" max="-2" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane1">
<Properties>
<Property name="name" type="java.lang.String" value="jLayeredPane1" noResource="true"/>
</Properties>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane2">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.EtchedBorderInfo">
<EtchetBorder/>
</Border>
</Property>
<Property name="name" type="java.lang.String" value="jLayeredPane2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="10" width="450" height="480" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel2" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Settings.jLabel2.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="90" width="230" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Container class="javax.swing.JScrollPane" name="jScrollPane3">
<Properties>
<Property name="name" type="java.lang.String" value="jScrollPane3" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="280" width="380" height="120" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTable" name="jTable2">
<Properties>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
<Table columnCount="2" rowCount="0">
<Column editable="false" title="" type="java.lang.String"/>
<Column editable="true" title="" type="java.lang.Boolean"/>
</Table>
</Property>
<Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor">
<TableColumnModel selectionModel="0">
<Column maxWidth="-1" minWidth="-1" prefWidth="350" resizable="false">
<Title editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Settings.jTable1.columnModel.title1" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Title>
<Editor/>
<Renderer/>
</Column>
<Column maxWidth="-1" minWidth="-1" prefWidth="10" resizable="false">
<Title editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Settings.jTable1.columnModel.title0" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Title>
<Editor/>
<Renderer/>
</Column>
</TableColumnModel>
</Property>
<Property name="fillsViewportHeight" type="boolean" value="true"/>
<Property name="name" type="java.lang.String" value="jTable2" noResource="true"/>
<Property name="selectionModel" type="javax.swing.ListSelectionModel" editor="org.netbeans.modules.form.editors2.JTableSelectionModelEditor">
<JTableSelectionModel selectionMode="0"/>
</Property>
<Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
<Connection code="null" type="code"/>
</Property>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JCheckBox" name="jCheckBox1">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jCheckBox1" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Settings.jCheckBox1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jCheckBox1" noResource="true"/>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="verticalTextPosition" type="int" value="1"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jCheckBox1ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="50" width="410" height="40" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="jButton6">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jButton6" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" value="+"/>
<Property name="focusable" type="boolean" value="false"/>
<Property name="iconTextGap" type="int" value="0"/>
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
<Insets value="[-1, -1, 0, 0]"/>
</Property>
<Property name="name" type="java.lang.String" value="jButton6" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton6ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="410" y="280" width="30" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="jButton1">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Settings.jButton1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jButton1" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="30" y="420" width="360" height="40" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Container class="javax.swing.JScrollPane" name="jScrollPane2">
<Properties>
<Property name="name" type="java.lang.String" value="jScrollPane2" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="120" width="410" height="130" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTable" name="jTable1">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.LineBorderInfo">
<LineBorder roundedCorners="true">
<Color PropertyName="color" blue="80" green="80" red="80" type="rgb"/>
</LineBorder>
</Border>
</Property>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
<Table columnCount="2" rowCount="0">
<Column editable="false" title="" type="java.lang.String"/>
<Column editable="true" title="" type="java.lang.Boolean"/>
</Table>
</Property>
<Property name="columnModel" type="javax.swing.table.TableColumnModel" editor="org.netbeans.modules.form.editors2.TableColumnModelEditor">
<TableColumnModel selectionModel="0">
<Column maxWidth="-1" minWidth="-1" prefWidth="350" resizable="false">
<Title editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Settings.jTable1.columnModel.title1" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Title>
<Editor/>
<Renderer/>
</Column>
<Column maxWidth="-1" minWidth="-1" prefWidth="10" resizable="false">
<Title editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Settings.jTable1.columnModel.title0" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Title>
<Editor/>
<Renderer/>
</Column>
</TableColumnModel>
</Property>
<Property name="name" type="java.lang.String" value="jTable1" noResource="true"/>
<Property name="selectionModel" type="javax.swing.ListSelectionModel" editor="org.netbeans.modules.form.editors2.JTableSelectionModelEditor">
<JTableSelectionModel selectionMode="0"/>
</Property>
<Property name="tableHeader" type="javax.swing.table.JTableHeader" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
<Connection code="null" type="code"/>
</Property>
</Properties>
<Events>
<EventHandler event="mousePressed" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jTable1MousePressed"/>
<EventHandler event="mouseReleased" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="jTable1MouseReleased"/>
</Events>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JComboBox" name="jComboBox1">
<Properties>
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
<StringArray count="0"/>
</Property>
<Property name="focusable" type="boolean" value="false"/>
<Property name="name" type="java.lang.String" value="jComboBox1" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jComboBox1ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="130" y="10" width="170" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JButton" name="jButton7">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jButton7" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" value="&#x2012;"/>
<Property name="focusable" type="boolean" value="false"/>
<Property name="iconTextGap" type="int" value="0"/>
<Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
<Insets value="[-1, -1, 0, 0]"/>
</Property>
<Property name="name" type="java.lang.String" value="jButton7" noResource="true"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton7ActionPerformed"/>
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="410" y="310" width="30" height="-1" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel1" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Settings.jLabel1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="10" width="110" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JLabel" name="jLabel3">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jLabel3" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Settings.jLabel3.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jLabel3" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="20" y="250" width="230" height="20" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
</SubComponents>
</Form>
+506
View File
@@ -0,0 +1,506 @@
/*
* WebOSQuickInstallAboutBox.java
*/
package ca.canucksoftware.wosqi;
import ca.canucksoftware.utils.OnlineFile;
import ca.canucksoftware.webos.DeviceInfo;
import java.util.ArrayList;
import java.util.ResourceBundle;
import java.util.Timer;
import java.util.TimerTask;
import java.util.prefs.Preferences;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class Settings extends javax.swing.JDialog {
public boolean feedsChanged;
private DefaultTableModel tableDefault;
private DefaultTableModel tableCustom;
private ResourceBundle bundle;
private String language;
private ArrayList<String> customFeeds;
private Timer t;
private boolean loaded;
public Settings(java.awt.Frame parent) {
super(parent);
loaded = false;
bundle = WebOSQuickInstallApp.bundle;
t = new Timer();
feedsChanged = false;
initComponents();
tableDefault = (DefaultTableModel) jTable1.getModel();
tableCustom = (DefaultTableModel) jTable2.getModel();
loadLanguageFromPrefs();
jCheckBox1.setSelected(DeviceInfo.isUsingDeviceName());
loadDefaultFeedsFromPrefs();
loadCustomFeedsFromPrefs();
jLayeredPane2.requestFocus();
loaded = true;
jScrollPane2.setBorder(null);
try {
jButton1.setEnabled((Preferences.userNodeForPackage(DeviceInfo.class).keys().length!=0));
} catch(Exception e) {}
}
private void loadLanguageFromPrefs() {
language = Preferences.systemRoot().get("language", null);
jComboBox1.addItem(bundle.getString("<SYSTEM_DEFAULT>"));
jComboBox1.addItem(bundle.getString("ENGLISH"));
jComboBox1.addItem(bundle.getString("FRENCH"));
jComboBox1.addItem(bundle.getString("GERMAN"));
jComboBox1.addItem(bundle.getString("SIMPLIFIED_CHINESE"));
if(language==null) {
jComboBox1.setSelectedIndex(0);
} else if(language.equals("en")) {
jComboBox1.setSelectedIndex(1);
} else if(language.equals("fr")) {
jComboBox1.setSelectedIndex(2);
} else if(language.equals("de")) {
jComboBox1.setSelectedIndex(3);
} else if(language.equals("zh")) {
jComboBox1.setSelectedIndex(4);
}
}
private void saveLanguagePrefs() {
int index = jComboBox1.getSelectedIndex();
if(index==0) { //system default
if(language!=null) {
Preferences.systemRoot().remove("language");
t.schedule(new DoLanguageNotice(), 200);
language = null;
}
} else {
String newLanguage = null;
if(index==1) { //english
newLanguage = "en";
} else if(index==2) { //french
newLanguage = "fr";
} else if(index==3) { //german
newLanguage = "de";
} else if(index==4) { //chinese
newLanguage = "zh";
}
if(newLanguage!=null) {
if(language==null || !language.equals(newLanguage)) {
language = newLanguage;
Preferences.systemRoot().put("language", language);
t.schedule(new DoLanguageNotice(), 200);
}
}
}
}
private void loadDefaultFeedsFromPrefs() {
while(tableDefault.getRowCount()>0) {
tableDefault.removeRow(0);
}
boolean currState = Preferences.systemRoot().getBoolean("defaultFeedState-0", true);
tableDefault.addRow(new Object[] {bundle.getString("FEED_PRECENTRAL"), new Boolean(currState)});
currState = Preferences.systemRoot().getBoolean("defaultFeedState-1", true);
tableDefault.addRow(new Object[] {bundle.getString("FEED_WEBOSINTERNALS"), new Boolean(currState)});
currState = Preferences.systemRoot().getBoolean("defaultFeedState-3", true);
tableDefault.addRow(new Object[] {bundle.getString("FEED_PATCHES"), new Boolean(currState)});
currState = Preferences.systemRoot().getBoolean("defaultFeedState-4", true);
tableDefault.addRow(new Object[] {bundle.getString("FEED_KERNELS"), new Boolean(currState)});
currState = Preferences.systemRoot().getBoolean("defaultFeedState-5", true);
tableDefault.addRow(new Object[] {bundle.getString("FEED_PRETHEMER"), new Boolean(currState)});
currState = Preferences.systemRoot().getBoolean("defaultFeedState-6", true);
tableDefault.addRow(new Object[] {bundle.getString("FEED_PCTHEMES"), new Boolean(currState)});
currState = Preferences.systemRoot().getBoolean("defaultFeedState-7", true);
tableDefault.addRow(new Object[] {bundle.getString("FEED_CLOCK"), new Boolean(currState)});
}
private void saveDefaultFeedsToPrefs() {
Boolean currState = (Boolean) tableDefault.getValueAt(0, 1);
Preferences.systemRoot().putBoolean("defaultFeedState-0", currState.booleanValue());
currState = (Boolean) tableDefault.getValueAt(1, 1);
Preferences.systemRoot().putBoolean("defaultFeedState-1", currState.booleanValue());
Preferences.systemRoot().putBoolean("defaultFeedState-2", currState.booleanValue());
currState = (Boolean) tableDefault.getValueAt(2, 1);
Preferences.systemRoot().putBoolean("defaultFeedState-3", currState.booleanValue());
currState = (Boolean) tableDefault.getValueAt(3, 1);
Preferences.systemRoot().putBoolean("defaultFeedState-4", currState.booleanValue());
currState = (Boolean) tableDefault.getValueAt(4, 1);
Preferences.systemRoot().putBoolean("defaultFeedState-5", currState.booleanValue());
currState = (Boolean) tableDefault.getValueAt(5, 1);
Preferences.systemRoot().putBoolean("defaultFeedState-6", currState.booleanValue());
currState = (Boolean) tableDefault.getValueAt(6, 1);
Preferences.systemRoot().putBoolean("defaultFeedState-7", currState.booleanValue());
}
private void loadCustomFeedsFromPrefs() {
while(tableCustom.getRowCount()>0) {
tableCustom.removeRow(0);
}
customFeeds = new ArrayList();
int num = Preferences.systemRoot().getInt("numCustomFeeds", 0);
for(int i=0; i<num; i++) {
String currUrl = Preferences.systemRoot().get("customfeed" + i, null);
if(currUrl!=null) {
boolean currState = Preferences.systemRoot().getBoolean("customFeedState-" + i, true);
customFeeds.add(currUrl);
tableCustom.addRow(new Object[] {currUrl, new Boolean(currState)});
}
}
}
private void clearCustomListPref() {
for(int i=0; i<customFeeds.size(); i++) {
Preferences.systemRoot().remove("customfeed" + i);
}
}
private void saveCustomListPref() {
Preferences.systemRoot().putInt("numCustomFeeds", customFeeds.size());
for(int i=0; i<customFeeds.size(); i++) {
Preferences.systemRoot().put("customfeed" + i, customFeeds.get(i));
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jLayeredPane1 = new javax.swing.JLayeredPane();
jLayeredPane2 = new javax.swing.JLayeredPane();
jLabel2 = new javax.swing.JLabel();
jScrollPane3 = new javax.swing.JScrollPane();
jTable2 = new javax.swing.JTable();
jCheckBox1 = new javax.swing.JCheckBox();
jButton6 = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
jComboBox1 = new javax.swing.JComboBox();
jButton7 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle(bundle.getString("Settings.title")); // NOI18N
setIconImage(null);
setModal(true);
setName("transfer"); // NOI18N
setResizable(false);
jLayeredPane1.setName("jLayeredPane1"); // NOI18N
jLayeredPane2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jLayeredPane2.setName("jLayeredPane2"); // NOI18N
jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getSize()+1f));
jLabel2.setText(bundle.getString("Settings.jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
jLabel2.setBounds(20, 90, 230, 20);
jLayeredPane2.add(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jScrollPane3.setName("jScrollPane3"); // NOI18N
jTable2.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"", ""
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.Boolean.class
};
boolean[] canEdit = new boolean [] {
false, true
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jTable2.setFillsViewportHeight(true);
jTable2.setName("jTable2"); // NOI18N
jTable2.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
jTable2.setTableHeader(null);
jScrollPane3.setViewportView(jTable2);
jTable2.getColumnModel().getColumn(0).setResizable(false);
jTable2.getColumnModel().getColumn(0).setPreferredWidth(350);
jTable2.getColumnModel().getColumn(0).setHeaderValue(bundle.getString("Settings.jTable1.columnModel.title1")); // NOI18N
jTable2.getColumnModel().getColumn(1).setResizable(false);
jTable2.getColumnModel().getColumn(1).setPreferredWidth(10);
jTable2.getColumnModel().getColumn(1).setHeaderValue(bundle.getString("Settings.jTable1.columnModel.title0")); // NOI18N
jScrollPane3.setBounds(20, 280, 380, 120);
jLayeredPane2.add(jScrollPane3, javax.swing.JLayeredPane.DEFAULT_LAYER);
jCheckBox1.setFont(jCheckBox1.getFont().deriveFont(jCheckBox1.getFont().getSize()+1f));
jCheckBox1.setText(bundle.getString("Settings.jCheckBox1.text")); // NOI18N
jCheckBox1.setName("jCheckBox1"); // NOI18N
jCheckBox1.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jCheckBox1.setVerticalTextPosition(javax.swing.SwingConstants.TOP);
jCheckBox1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jCheckBox1ActionPerformed(evt);
}
});
jCheckBox1.setBounds(20, 50, 410, 40);
jLayeredPane2.add(jCheckBox1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jButton6.setFont(jButton6.getFont().deriveFont(jButton6.getFont().getSize()+1f));
jButton6.setText("+");
jButton6.setFocusable(false);
jButton6.setIconTextGap(0);
jButton6.setMargin(new java.awt.Insets(-1, -1, 0, 0));
jButton6.setName("jButton6"); // NOI18N
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
jButton6.setBounds(410, 280, 30, 21);
jLayeredPane2.add(jButton6, javax.swing.JLayeredPane.DEFAULT_LAYER);
jButton1.setText(bundle.getString("Settings.jButton1.text")); // NOI18N
jButton1.setName("jButton1"); // NOI18N
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jButton1.setBounds(30, 420, 360, 40);
jLayeredPane2.add(jButton1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jScrollPane2.setName("jScrollPane2"); // NOI18N
jTable1.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(128, 128, 128), 1, true));
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"", ""
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.Boolean.class
};
boolean[] canEdit = new boolean [] {
false, true
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jTable1.setName("jTable1"); // NOI18N
jTable1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
jTable1.setTableHeader(null);
jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
jTable1MousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
jTable1MouseReleased(evt);
}
});
jScrollPane2.setViewportView(jTable1);
jTable1.getColumnModel().getColumn(0).setResizable(false);
jTable1.getColumnModel().getColumn(0).setPreferredWidth(350);
jTable1.getColumnModel().getColumn(0).setHeaderValue(bundle.getString("Settings.jTable1.columnModel.title1")); // NOI18N
jTable1.getColumnModel().getColumn(1).setResizable(false);
jTable1.getColumnModel().getColumn(1).setPreferredWidth(10);
jTable1.getColumnModel().getColumn(1).setHeaderValue(bundle.getString("Settings.jTable1.columnModel.title0")); // NOI18N
jScrollPane2.setBounds(20, 120, 410, 130);
jLayeredPane2.add(jScrollPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jComboBox1.setFocusable(false);
jComboBox1.setName("jComboBox1"); // NOI18N
jComboBox1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jComboBox1ActionPerformed(evt);
}
});
jComboBox1.setBounds(130, 10, 170, 22);
jLayeredPane2.add(jComboBox1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jButton7.setFont(jButton7.getFont().deriveFont(jButton7.getFont().getSize()+1f));
jButton7.setText("‒");
jButton7.setFocusable(false);
jButton7.setIconTextGap(0);
jButton7.setMargin(new java.awt.Insets(-1, -1, 0, 0));
jButton7.setName("jButton7"); // NOI18N
jButton7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton7ActionPerformed(evt);
}
});
jButton7.setBounds(410, 310, 30, 21);
jLayeredPane2.add(jButton7, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getSize()+1f));
jLabel1.setText(bundle.getString("Settings.jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
jLabel1.setBounds(20, 10, 110, 20);
jLayeredPane2.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel3.setFont(jLabel3.getFont().deriveFont(jLabel3.getFont().getSize()+1f));
jLabel3.setText(bundle.getString("Settings.jLabel3.text")); // NOI18N
jLabel3.setName("jLabel3"); // NOI18N
jLabel3.setBounds(20, 250, 230, 20);
jLayeredPane2.add(jLabel3, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane2.setBounds(10, 10, 450, 480);
jLayeredPane1.add(jLayeredPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 470, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 499, javax.swing.GroupLayout.PREFERRED_SIZE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed
String input = JOptionPane.showInputDialog(rootPane,
bundle.getString("CUSTOM_FEED_URL:"), "",
JOptionPane.INFORMATION_MESSAGE);
if(input!=null && input.length()>0) {
if(!input.startsWith("http://") && !input.startsWith("https://")) {
input = "http://" + input;
}
if(!input.endsWith("Packages") && !input.endsWith("Packages.gz")) {
if(!input.endsWith("/")) {
input += "/";
}
if(new OnlineFile(input + "Packages.gz").exists()) {
input += "Packages.gz";
} else if(new OnlineFile(input + "Packages").exists()) {
input += "Packages";
}
}
if(new OnlineFile(input).exists()) {
clearCustomListPref();
customFeeds.add(input);
tableCustom.addRow(new Object[] {input, Boolean.TRUE});
saveCustomListPref();
feedsChanged = true;
} else {
JOptionPane.showMessageDialog(rootPane, bundle.getString("ERROR:_INVALID_FEED_URL"));
}
}
}//GEN-LAST:event_jButton6ActionPerformed
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed
int index = jTable2.getSelectedRow();
if(index>-1) {
clearCustomListPref();
customFeeds.remove(index);
tableCustom.removeRow(index);
saveCustomListPref();
feedsChanged = true;
}
}//GEN-LAST:event_jButton7ActionPerformed
private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox1ActionPerformed
if(loaded) {
saveLanguagePrefs();
}
}//GEN-LAST:event_jComboBox1ActionPerformed
private void jTable1MousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MousePressed
int i = jTable1.rowAtPoint(evt.getPoint());
if(i>-1) {
if(jTable1.columnAtPoint(evt.getPoint())==0) {
boolean val = ((Boolean)tableDefault.getValueAt(i, 1)).booleanValue();
val = !val;
tableDefault.setValueAt(new Boolean(val), i, 1);
}
}
int row = jTable1.getSelectedRow();
if(row>-1) {
jTable1.removeRowSelectionInterval(row, row);
}
}//GEN-LAST:event_jTable1MousePressed
private void jTable1MouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MouseReleased
int row = jTable1.getSelectedRow();
if(row>-1) {
jTable1.removeRowSelectionInterval(row, row);
}
saveDefaultFeedsToPrefs();
feedsChanged = true;
jLayeredPane2.requestFocus();
}//GEN-LAST:event_jTable1MouseReleased
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
try {
Preferences.userNodeForPackage(DeviceInfo.class).clear();
jButton1.setEnabled((Preferences.userNodeForPackage(DeviceInfo.class).keys().length!=0));
} catch(Exception e) {
e.printStackTrace();
}
}//GEN-LAST:event_jButton1ActionPerformed
private void jCheckBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBox1ActionPerformed
DeviceInfo.useDeviceName(jCheckBox1.isSelected());
}//GEN-LAST:event_jCheckBox1ActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JCheckBox jCheckBox1;
private javax.swing.JComboBox jComboBox1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLayeredPane jLayeredPane1;
private javax.swing.JLayeredPane jLayeredPane2;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JTable jTable1;
private javax.swing.JTable jTable2;
// End of variables declaration//GEN-END:variables
class DoLanguageNotice extends TimerTask {
public void run() {
JOptionPane.showMessageDialog(rootPane,
bundle.getString("THE_NEW_LANGUAGE_WILL_TAKE_EFFECT_THE_NEXT_TIME_WEBOS_QUICK_INSTALL_IS_LAUNCHED."),
bundle.getString("LANGUAGE_CHANGED."), JOptionPane.INFORMATION_MESSAGE);
}
}
}
+129
View File
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
<Property name="modal" type="boolean" value="true"/>
<Property name="name" type="java.lang.String" value="aboutBox" noResource="true"/>
<Property name="resizable" type="boolean" value="false"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
</SyntheticProperties>
<Events>
<EventHandler event="keyPressed" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="formKeyPressed"/>
</Events>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" alignment="0" pref="557" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLayeredPane1" min="-2" pref="380" max="-2" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane1">
<Properties>
<Property name="name" type="java.lang.String" value="jLayeredPane1" noResource="true"/>
</Properties>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JLayeredPane" name="jLayeredPane2">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
<TitledBorder title="How To Use">
<ResourceString PropertyName="titleX" bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Usage.jLayeredPane2.border.title" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</TitledBorder>
</Border>
</Property>
<Property name="name" type="java.lang.String" value="jLayeredPane2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="10" width="540" height="360" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JScrollPane" name="jScrollPane1">
<Properties>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="null"/>
</Property>
<Property name="name" type="java.lang.String" value="jScrollPane1" noResource="true"/>
</Properties>
<AuxValues>
<AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
</AuxValues>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="10" y="30" width="320" height="310" layer="0" position="-1"/>
</Constraint>
</Constraints>
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
<SubComponents>
<Component class="javax.swing.JTextPane" name="jTextPane1">
<Properties>
<Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="f0" green="f0" red="f0" type="rgb"/>
</Property>
<Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
<Border info="null"/>
</Property>
<Property name="contentType" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Usage.jTextPane1.contentType" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="editable" type="boolean" value="false"/>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font component="jTextPane1" property="font" relativeSize="true" size="1"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Usage.jTextPane1.text" replaceFormat="bundle.getString(&quot;{key}&quot;)"/>
</Property>
<Property name="name" type="java.lang.String" value="jTextPane1" noResource="true"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/ca/canucksoftware/wosqi/resources/devmode.jpg"/>
</Property>
<Property name="verticalAlignment" type="int" value="1"/>
<Property name="name" type="java.lang.String" value="jLabel2" noResource="true"/>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JLayeredPaneSupportLayout$JLayeredPaneConstraintsDescription">
<JLayeredPaneConstraints x="350" y="40" width="180" height="270" layer="0" position="-1"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
</SubComponents>
</Form>
+103
View File
@@ -0,0 +1,103 @@
/*
* WebOSQuickInstallAboutBox.java
*/
package ca.canucksoftware.wosqi;
import org.jdesktop.application.Action;
import java.util.ResourceBundle;
public class Usage extends javax.swing.JDialog {
private ResourceBundle bundle;
public Usage(java.awt.Frame parent) {
super(parent);
bundle = WebOSQuickInstallApp.bundle;
initComponents();
jTextPane1.setCaretPosition(0);
}
@Action
public void closeUsage() {
dispose();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jLayeredPane1 = new javax.swing.JLayeredPane();
jLayeredPane2 = new javax.swing.JLayeredPane();
jScrollPane1 = new javax.swing.JScrollPane();
jTextPane1 = new javax.swing.JTextPane();
jLabel2 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setModal(true);
setName("aboutBox"); // NOI18N
setResizable(false);
addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
formKeyPressed(evt);
}
});
jLayeredPane1.setName("jLayeredPane1"); // NOI18N
jLayeredPane2.setBorder(javax.swing.BorderFactory.createTitledBorder(bundle.getString("Usage.jLayeredPane2.border.title"))); // NOI18N
jLayeredPane2.setName("jLayeredPane2"); // NOI18N
jScrollPane1.setBorder(null);
jScrollPane1.setName("jScrollPane1"); // NOI18N
jTextPane1.setBackground(new java.awt.Color(240, 240, 240));
jTextPane1.setBorder(null);
jTextPane1.setContentType(bundle.getString("Usage.jTextPane1.contentType")); // NOI18N
jTextPane1.setEditable(false);
jTextPane1.setFont(jTextPane1.getFont().deriveFont(jTextPane1.getFont().getSize()+1f));
jTextPane1.setText(bundle.getString("Usage.jTextPane1.text")); // NOI18N
jTextPane1.setName("jTextPane1"); // NOI18N
jScrollPane1.setViewportView(jTextPane1);
jScrollPane1.setBounds(10, 30, 320, 310);
jLayeredPane2.add(jScrollPane1, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLabel2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/devmode.jpg"))); // NOI18N
jLabel2.setVerticalAlignment(javax.swing.SwingConstants.TOP);
jLabel2.setName("jLabel2"); // NOI18N
jLabel2.setBounds(350, 40, 180, 270);
jLayeredPane2.add(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER);
jLayeredPane2.setBounds(10, 10, 540, 360);
jLayeredPane1.add(jLayeredPane2, javax.swing.JLayeredPane.DEFAULT_LAYER);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 557, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLayeredPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 380, javax.swing.GroupLayout.PREFERRED_SIZE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void formKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_formKeyPressed
}//GEN-LAST:event_formKeyPressed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel2;
private javax.swing.JLayeredPane jLayeredPane1;
private javax.swing.JLayeredPane jLayeredPane2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextPane jTextPane1;
// End of variables declaration//GEN-END:variables
}
@@ -0,0 +1,108 @@
/*
* WebOSQuickInstallApp.java
*/
package ca.canucksoftware.wosqi;
import ca.canucksoftware.utils.FileUtils;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.logging.Logger;
import java.util.prefs.Preferences;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import org.jdesktop.application.Application;
import org.jdesktop.application.SingleFrameApplication;
/**
* The main class of the application.
*/
public class WebOSQuickInstallApp extends SingleFrameApplication {
public static ResourceBundle bundle;
/**
* At startup create and show the main frame of the application.
*/
@Override protected void startup() {
MainView app = new MainView(this);
app.getFrame().setResizable(false);
app.getFrame().setSize(630, 400);
app.getFrame().setVisible(true);
//app.mainPanel.requestFocus();
show(app);
}
/**
* This method is to initialize the specified window by injecting resources.
* Windows shown in our application come fully initialized from the GUI
* builder, so this additional configuration is not needed.
*/
@Override protected void configureWindow(java.awt.Window root) {
}
/**
* A convenient static getter for the application instance.
* @return the instance of WebOSQuickInstallApp
*/
public static WebOSQuickInstallApp getApplication() {
return Application.getInstance(WebOSQuickInstallApp.class);
}
/**
* Main method launching the application.
*/
public static void main(String[] args) {
Logger logger = Logger.getLogger(org.jdesktop.application.SessionStorage.class.getName());
logger.setLevel(java.util.logging.Level.OFF);
String language = Preferences.systemRoot().get("language", null);
if(language!=null) {
Locale specific = new Locale(language);
Locale.setDefault(specific);
JOptionPane.setDefaultLocale(specific);
JComponent.setDefaultLocale(specific);
JFileChooser.setDefaultLocale(specific);
}
bundle = ResourceBundle.getBundle("ca/canucksoftware/wosqi/Bundle");
File install = new File(FileUtils.appDirectory(), bundle.getString("INSTALL"));
if(!install.isDirectory()) {
install.mkdirs();
}
int start = 0;
if(args.length>0) {
if(args[0].equals("-log")) {
try {
PrintStream stream = new PrintStream(new FileOutputStream(new File(
FileUtils.appDirectory(), "WOSQI.log"), true));
System.setErr(stream);
System.setOut(stream);
} catch (FileNotFoundException e) {}
start = 1;
}
}
for(int i=start; i<args.length; i++) {
if (args[i]!=null) {
File from = new File(args[i]);
if(from.isFile()) {
if(from.getName().toLowerCase().endsWith("ipk")) {
File to = new File(install, FileUtils.getFilename(from));
try {
FileUtils.copy(from, to);
} catch (IOException ex) {
System.err.println("Unable to copy to install directory: "
+ args[i]);
}
}
}
}
}
launch(WebOSQuickInstallApp.class, args);
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

@@ -0,0 +1,11 @@
# Application global resources
Application.name = WebOS Quick Install
Application.title = WebOS Quick Install
Application.version = 4.2.1
Application.vendor = Jason Robitaille
Application.homepage = http://canuckcoding.ca
Application.description = An advanced tool for installing and managine packages on webOS devices.
Application.vendorId = Jason Robitaille
Application.id = WebOS Quick Install
Application.lookAndFeel = system
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB