commit a1c1a4b85c0883c088465227c57c10d67a1105c3 Author: Jason Robitaille Date: Fri Mar 8 22:31:21 2013 -0600 Initial commit of the v4.5.0 opensource release of WebOS Quick Install diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b979aa0 --- /dev/null +++ b/LICENSE @@ -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. \ No newline at end of file diff --git a/WebOSQuickInstall-4.5.0.jar b/WebOSQuickInstall-4.5.0.jar new file mode 100644 index 0000000..e53b107 Binary files /dev/null and b/WebOSQuickInstall-4.5.0.jar differ diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..20f6654 --- /dev/null +++ b/build.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + Builds, tests, and runs the project WebOS Quick Install v4. + + + diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml new file mode 100644 index 0000000..06722dd --- /dev/null +++ b/nbproject/build-impl.xml @@ -0,0 +1,1411 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + + + + + + java -cp "${run.classpath.with.dist.jar}" ${main.class} + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + java -jar "${dist.jar.resolved}" + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + Must select one file in the IDE or set profile.class + This target only works when run from inside the NetBeans IDE. + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + Must select some files in the IDE or set test.includes + + + + + Must select one file in the IDE or set run.class + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + Must select some files in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + Must select one file in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties new file mode 100644 index 0000000..3ebc1a6 --- /dev/null +++ b/nbproject/genfiles.properties @@ -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 diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 0000000..7a57cad --- /dev/null +++ b/nbproject/project.properties @@ -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 diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..51f3106 --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,19 @@ + + + org.netbeans.modules.java.j2seproject + + + WebOS Quick Install v4 + 1.6.5 + + + + + + + + + + + + diff --git a/src/META-INF/services/org.jdesktop.application.Application b/src/META-INF/services/org.jdesktop.application.Application new file mode 100644 index 0000000..064f9fb --- /dev/null +++ b/src/META-INF/services/org.jdesktop.application.Application @@ -0,0 +1 @@ +ca.canucksoftware.wosqi.WebOSQuickInstallApp \ No newline at end of file diff --git a/src/ca/canucksoftware/ipkg/PackageEntry.java b/src/ca/canucksoftware/ipkg/PackageEntry.java new file mode 100644 index 0000000..6302b53 --- /dev/null +++ b/src/ca/canucksoftware/ipkg/PackageEntry.java @@ -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 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; + } +} diff --git a/src/ca/canucksoftware/ipkg/PackageFeed.java b/src/ca/canucksoftware/ipkg/PackageFeed.java new file mode 100644 index 0000000..08db176 --- /dev/null +++ b/src/ca/canucksoftware/ipkg/PackageFeed.java @@ -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 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", "").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-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; + } +} \ No newline at end of file diff --git a/src/ca/canucksoftware/ipkg/PackageFilter.java b/src/ca/canucksoftware/ipkg/PackageFilter.java new file mode 100644 index 0000000..610990c --- /dev/null +++ b/src/ca/canucksoftware/ipkg/PackageFilter.java @@ -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; + } +} diff --git a/src/ca/canucksoftware/ipkg/PackageManager.java b/src/ca/canucksoftware/ipkg/PackageManager.java new file mode 100644 index 0000000..4901df1 --- /dev/null +++ b/src/ca/canucksoftware/ipkg/PackageManager.java @@ -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 packages; + private ArrayList filtered; + private ArrayList installed; + private DeviceInfo device; + private JTextArea label; + private ResourceBundle bundle; + + public PackageManager(DeviceInfo info, ArrayList apps) { + this(info, apps, null); + } + + public PackageManager(DeviceInfo info, ArrayList 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 list) { + for(int i=0; i-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 getCategories() { + ArrayList result = new ArrayList(0); + result.add(ALL_CATEGORIES); + for(int i=0; i0 && + !category.toLowerCase().equals("unavailable")) { + if(!result.contains(category)) { + result.add(category); + } + } + } catch(Exception e) {} + } + } + } + Collections.sort(result); + return result; + } + + public ArrayList getPackagesByCategory(String category) { + return getPackagesByCategory(category, false); + } + + public ArrayList getPackagesByCategory(String category, + boolean includeInstalled) { + ArrayList results = new ArrayList(0); + for(int i=0; i 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 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 getUpdates() { + ArrayList results = new ArrayList(0); + for(int i=0; i-1) { + if(curr.isUpdate(installed.get(index))) { + results.add(curr); + } + } + } + return results; + } + + public void setInstalledAppList(ArrayList apps) { + installed = apps; + } + + public boolean hasPackages() { + return (packages.size()>0); + } + + public boolean isInstalled(PackageEntry pkg) { + return installed.contains(new InstalledEntry(pkg.id)); + } +} diff --git a/src/ca/canucksoftware/ipkg/PackageSorter.java b/src/ca/canucksoftware/ipkg/PackageSorter.java new file mode 100644 index 0000000..5e3bed8 --- /dev/null +++ b/src/ca/canucksoftware/ipkg/PackageSorter.java @@ -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; + } +} diff --git a/src/ca/canucksoftware/utils/FileUtils.java b/src/ca/canucksoftware/utils/FileUtils.java new file mode 100644 index 0000000..24d1b12 --- /dev/null +++ b/src/ca/canucksoftware/utils/FileUtils.java @@ -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); + } +} diff --git a/src/ca/canucksoftware/utils/MD5.java b/src/ca/canucksoftware/utils/MD5.java new file mode 100644 index 0000000..bdb7018 --- /dev/null +++ b/src/ca/canucksoftware/utils/MD5.java @@ -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"); + } +} diff --git a/src/ca/canucksoftware/wosqi/About.form b/src/ca/canucksoftware/wosqi/About.form new file mode 100644 index 0000000..4af91cf --- /dev/null +++ b/src/ca/canucksoftware/wosqi/About.form @@ -0,0 +1,205 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ca/canucksoftware/wosqi/About.java b/src/ca/canucksoftware/wosqi/About.java new file mode 100644 index 0000000..984dbfb --- /dev/null +++ b/src/ca/canucksoftware/wosqi/About.java @@ -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. + */ + // //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(); + }// //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 + +} diff --git a/src/ca/canucksoftware/wosqi/Bundle.properties b/src/ca/canucksoftware/wosqi/Bundle.properties new file mode 100644 index 0000000..4b465bc --- /dev/null +++ b/src/ca/canucksoftware/wosqi/Bundle.properties @@ -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=In order to get WebOS Quick Install to work properly, there are a few minor requirements:
  • Novacom driver installed on this computer.

    If you want to reinstall the driver, click the "Reinstall Novacom" option in the top File menu.

  • Developer mode enabled.

    This can be done by typing "upupdowndownleftrightleftrightbastart", opening the DevMode app, and enabling the feature.

  • When you plug in your device, choose "Just charge".
+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=Copyright \u00A9 2009-2013 Jason Robitaille. +About.jLabel6.text=

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

+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= +FeedViewer.jLabel2.text= +FeedViewer.jTextPane1.contentType=text/html +FeedViewer.jTextPane1.text= +FeedViewer.jLabel4.text=Feed: +FeedViewer.jLabel3.text=License: +FeedViewer.jLabel5.text=Version:     +FeedViewer.jLabel6.text=Last Updated:     +FeedViewer.jLabel8.text=Description: +FeedViewer.jLabel7.text= +FeedViewer.jLabel9.text=Developer:     +FeedViewer.jLabel10.text= +FeedViewer.jLabel11.text=Homepage +FeedViewer.jTextField2.text= +FeedViewer.jLabel22.text=Homepage +FeedViewer.jLabel21.text= +FeedViewer.jLabel20.text=Developer:     +FeedViewer.jLabel19.text= +FeedViewer.jLabel18.text=Description: +FeedViewer.jLabel17.text=Last Updated:     +FeedViewer.jLabel16.text=Version:     +FeedViewer.jLabel15.text=License: +FeedViewer.jLabel14.text=Feed: +FeedViewer.jTextPane2.text= +FeedViewer.jTextPane2.contentType=text/html +FeedViewer.jLabel13.text= +FeedViewer.jLabel12.text= +FeedViewer.jButton4.text=Install +FeedViewer.jButton3.text= +FeedViewer.jLabel33.text=Homepage +FeedViewer.jLabel32.text= +FeedViewer.jLabel31.text=Developer:     +FeedViewer.jLabel30.text= +FeedViewer.jLabel29.text=Description: +FeedViewer.jLabel28.text=Last Updated:     +FeedViewer.jLabel27.text=Version:     +FeedViewer.jLabel26.text=License: +FeedViewer.jLabel25.text=Feed: +FeedViewer.jTextPane3.text= +FeedViewer.jTextPane3.contentType=text/html +FeedViewer.jLabel24.text= +FeedViewer.jLabel23.text= +FeedViewer.jButton6.text=Install +FeedViewer.jButton5.text= +FeedViewer.jTextField3.text= +FeedViewer.jLabel44.text=Homepage +FeedViewer.jLabel43.text= +FeedViewer.jLabel42.text=Developer:     +FeedViewer.jLabel41.text= +FeedViewer.jLabel40.text=Description: +FeedViewer.jLabel39.text=Last Updated:     +FeedViewer.jLabel38.text=Version:     +FeedViewer.jLabel37.text=License: +FeedViewer.jLabel36.text=Feed: +FeedViewer.jTextPane4.text= +FeedViewer.jTextPane4.contentType=text/html +FeedViewer.jLabel35.text= +FeedViewer.jLabel34.text= +FeedViewer.jButton8.text=Install +FeedViewer.jButton7.text= +FeedViewer.jTextField4.text= +FeedViewer.jTextField5.text= +FeedViewer.jLabel55.text=Homepage +FeedViewer.jLabel54.text= +FeedViewer.jLabel53.text=Developer:     +FeedViewer.jLabel52.text= +FeedViewer.jLabel51.text=Description: +FeedViewer.jLabel50.text=Last Updated:     +FeedViewer.jLabel49.text=Version:     +FeedViewer.jLabel48.text=License: +FeedViewer.jLabel47.text=Feed: +FeedViewer.jTextPane5.text= +FeedViewer.jTextPane5.contentType=text/html +FeedViewer.jLabel46.text= +FeedViewer.jLabel45.text= +FeedViewer.jButton10.text=Install +FeedViewer.jButton9.text= +FeedViewer.jLabel66.text=Homepage +FeedViewer.jLabel65.text= +FeedViewer.jLabel64.text=Developer:     +FeedViewer.jLabel63.text= +FeedViewer.jLabel62.text=Description: +FeedViewer.jLabel61.text=Last Updated:     +FeedViewer.jLabel60.text=Version:     +FeedViewer.jLabel59.text=License: +FeedViewer.jLabel58.text=Feed: +FeedViewer.jTextPane6.text= +FeedViewer.jTextPane6.contentType=text/html +FeedViewer.jLabel57.text= +FeedViewer.jLabel56.text= +FeedViewer.jButton12.text=Install +FeedViewer.jButton11.text= +FeedViewer.jTextField6.text= +FeedViewer.jLabel77.text=Homepage +FeedViewer.jLabel76.text= +FeedViewer.jLabel75.text=Developer:     +FeedViewer.jLabel74.text= +FeedViewer.jLabel73.text=Description: +FeedViewer.jLabel72.text=Last Updated:     +FeedViewer.jLabel71.text=Version:     +FeedViewer.jLabel70.text=License: +FeedViewer.jLabel69.text=Feed: +FeedViewer.jTextPane7.text= +FeedViewer.jTextPane7.contentType=text/html +FeedViewer.jLabel68.text= +FeedViewer.jLabel67.text= +FeedViewer.jButton14.text=Install +FeedViewer.jButton13.text= +FeedViewer.jTextField7.text= +FeedViewer.jLabel88.text=Homepage +FeedViewer.jLabel87.text= +FeedViewer.jLabel86.text=Developer:     +FeedViewer.jLabel85.text= +FeedViewer.jLabel84.text=Description: +FeedViewer.jLabel83.text=Last Updated:     +FeedViewer.jLabel82.text=Version:     +FeedViewer.jLabel81.text=License: +FeedViewer.jLabel80.text=Feed: +FeedViewer.jTextPane8.text= +FeedViewer.jTextPane8.contentType=text/html +FeedViewer.jLabel79.text= +FeedViewer.jLabel78.text= +FeedViewer.jButton16.text=Update +FeedViewer.jLayeredPane9.TabConstraints.tabTitle=Linux Daemons +FeedViewer.jLabel99.text=Homepage +FeedViewer.jLabel98.text= +FeedViewer.jLabel97.text=Developer:     +FeedViewer.jLabel96.text= +FeedViewer.jLabel95.text=Description: +FeedViewer.jLabel94.text=Last Updated:     +FeedViewer.jLabel93.text=Version:     +FeedViewer.jLabel92.text=License: +FeedViewer.jLabel91.text=Feed: +FeedViewer.jTextPane9.text= +FeedViewer.jTextPane9.contentType=text/html +FeedViewer.jLabel90.text= +FeedViewer.jLabel89.text= +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 += +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=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=Use device name when possible +OK=OK \ No newline at end of file diff --git a/src/ca/canucksoftware/wosqi/Bundle_de.properties b/src/ca/canucksoftware/wosqi/Bundle_de.properties new file mode 100644 index 0000000..2b5edcb --- /dev/null +++ b/src/ca/canucksoftware/wosqi/Bundle_de.properties @@ -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=Novacom lade herunter +Usage.jLayeredPane2.border.title=Anleitung +Usage.jTextPane1.text=Damit WebOS Quick Install richtig funktionieren kann, m\u00FCssen einige Voraussetzungen erf\u00FCllt sein:
  • Der Novacom-Treiber muss auf diesem Computer installiert sein.

    Falls Sie den Treiber reinstallieren wollen, w\u00E4hlen Sie 'Novacom reinstallieren" aus dem Datei-Men\u00FC.

  • Der Entwicklermodus muss aktiviert sein.

    Dieses kann durch das Eintippen von 'upupdowndownleftrightleftrightbastart', dem \u00D6ffnen des DevMode-Programmes und der Aktivierung der Option erreicht werden.

  • Wenn Sie Ihr Ger\u00E4t anschlie\u00DFen, w\u00E4hlen Sie "Nur aufladen".
+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=Copyright \u00A9 2009-2013 Jason Robitaille. All rights reserved. +About.jLabel6.text=

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

+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= +FeedViewer.jLabel2.text= +FeedViewer.jTextPane1.contentType=text/html +FeedViewer.jTextPane1.text= +FeedViewer.jLabel4.text=Feed: +FeedViewer.jLabel3.text=Lizenz: +FeedViewer.jLabel5.text=Version:     +FeedViewer.jLabel6.text=Zuletzt aktualisiert:     +FeedViewer.jLabel8.text=Beschreibung: +FeedViewer.jLabel7.text= +FeedViewer.jLabel9.text=Entwickler:     +FeedViewer.jLabel10.text= +FeedViewer.jLabel11.text=Homepage +FeedViewer.jTextField2.text= +FeedViewer.jLabel22.text=Homepage +FeedViewer.jLabel21.text= +FeedViewer.jLabel20.text=Entwickler:     +FeedViewer.jLabel19.text= +FeedViewer.jLabel18.text=Beschreibung: +FeedViewer.jLabel17.text=Zuletzt aktualisiert:     +FeedViewer.jLabel16.text=Version:     +FeedViewer.jLabel15.text=Lizenz: +FeedViewer.jLabel14.text=Feed: +FeedViewer.jTextPane2.text= +FeedViewer.jTextPane2.contentType=text/html +FeedViewer.jLabel13.text= +FeedViewer.jLabel12.text= +FeedViewer.jButton4.text=Installieren +FeedViewer.jButton3.text= +FeedViewer.jLabel33.text=Homepage +FeedViewer.jLabel32.text= +FeedViewer.jLabel31.text=Entwickler:     +FeedViewer.jLabel30.text= +FeedViewer.jLabel29.text=Beschreibung: +FeedViewer.jLabel28.text=Zuletzt aktualisiert:     +FeedViewer.jLabel27.text=Version:     +FeedViewer.jLabel26.text=Lizenz: +FeedViewer.jLabel25.text=Feed: +FeedViewer.jTextPane3.text= +FeedViewer.jTextPane3.contentType=text/html +FeedViewer.jLabel24.text= +FeedViewer.jLabel23.text= +FeedViewer.jButton6.text=Installieren +FeedViewer.jButton5.text= +FeedViewer.jTextField3.text= +FeedViewer.jLabel44.text=Homepage +FeedViewer.jLabel43.text= +FeedViewer.jLabel42.text=Entwickler:     +FeedViewer.jLabel41.text= +FeedViewer.jLabel40.text=Beschreibung: +FeedViewer.jLabel39.text=Zuletzt aktualisiert:     +FeedViewer.jLabel38.text=Version:     +FeedViewer.jLabel37.text=Lizenz: +FeedViewer.jLabel36.text=Feed: +FeedViewer.jTextPane4.text= +FeedViewer.jTextPane4.contentType=text/html +FeedViewer.jLabel35.text= +FeedViewer.jLabel34.text= +FeedViewer.jButton8.text=Installieren +FeedViewer.jButton7.text= +FeedViewer.jTextField4.text= +FeedViewer.jTextField5.text= +FeedViewer.jLabel55.text=Homepage +FeedViewer.jLabel54.text= +FeedViewer.jLabel53.text=Entwickler:     +FeedViewer.jLabel52.text= +FeedViewer.jLabel51.text=Beschreibung: +FeedViewer.jLabel50.text=Zuletzt aktualisiert:     +FeedViewer.jLabel49.text=Version:     +FeedViewer.jLabel48.text=Lizenz: +FeedViewer.jLabel47.text=Feed: +FeedViewer.jTextPane5.text= +FeedViewer.jTextPane5.contentType=text/html +FeedViewer.jLabel46.text= +FeedViewer.jLabel45.text= +FeedViewer.jButton10.text=Installieren +FeedViewer.jButton9.text= +FeedViewer.jLabel66.text=Homepage +FeedViewer.jLabel65.text= +FeedViewer.jLabel64.text=Entwickler:     +FeedViewer.jLabel63.text= +FeedViewer.jLabel62.text=Beschreibung: +FeedViewer.jLabel61.text=Zuletzt aktualisiert:     +FeedViewer.jLabel60.text=Version:     +FeedViewer.jLabel59.text=Lizenz: +FeedViewer.jLabel58.text=Feed: +FeedViewer.jTextPane6.text= +FeedViewer.jTextPane6.contentType=text/html +FeedViewer.jLabel57.text= +FeedViewer.jLabel56.text= +FeedViewer.jButton12.text=Installieren +FeedViewer.jButton11.text= +FeedViewer.jTextField6.text= +FeedViewer.jLabel77.text=Homepage +FeedViewer.jLabel76.text= +FeedViewer.jLabel75.text=Entwickler:     +FeedViewer.jLabel74.text= +FeedViewer.jLabel73.text=Beschreibung: +FeedViewer.jLabel72.text=Zuletzt aktualisiert:     +FeedViewer.jLabel71.text=Version:     +FeedViewer.jLabel70.text=Lizenz: +FeedViewer.jLabel69.text=Feed: +FeedViewer.jTextPane7.text= +FeedViewer.jTextPane7.contentType=text/html +FeedViewer.jLabel68.text= +FeedViewer.jLabel67.text= +FeedViewer.jButton14.text=Installieren +FeedViewer.jButton13.text= +FeedViewer.jTextField7.text= +FeedViewer.jLabel88.text=Homepage +FeedViewer.jLabel87.text= +FeedViewer.jLabel86.text=Entwickler:     +FeedViewer.jLabel85.text= +FeedViewer.jLabel84.text=Beschreibung: +FeedViewer.jLabel83.text=Zuletzt aktualisiert:     +FeedViewer.jLabel82.text=Version:     +FeedViewer.jLabel81.text=Lizenz: +FeedViewer.jLabel80.text=Feed: +FeedViewer.jTextPane8.text= +FeedViewer.jTextPane8.contentType=text/html +FeedViewer.jLabel79.text= +FeedViewer.jLabel78.text= +FeedViewer.jButton16.text=Aktualisiere +FeedViewer.jLayeredPane9.TabConstraints.tabTitle=Linux Daemons +FeedViewer.jLabel99.text=Homepage +FeedViewer.jLabel98.text= +FeedViewer.jLabel97.text=Entwickler:     +FeedViewer.jLabel96.text= +FeedViewer.jLabel95.text=Beschreibung: +FeedViewer.jLabel94.text=Zuletzt aktualisiert:     +FeedViewer.jLabel93.text=Version:     +FeedViewer.jLabel92.text=Lizenz: +FeedViewer.jLabel91.text=Feed: +FeedViewer.jTextPane9.text= +FeedViewer.jTextPane9.contentType=text/html +FeedViewer.jLabel90.text= +FeedViewer.jLabel89.text= +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 += +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=Wenn m\u00F6glich Ger\u00E4tenamen benutzen +OK=OK \ No newline at end of file diff --git a/src/ca/canucksoftware/wosqi/Bundle_fr.properties b/src/ca/canucksoftware/wosqi/Bundle_fr.properties new file mode 100644 index 0000000..a58f886 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/Bundle_fr.properties @@ -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=Novacom T\u00E9l\u00E9chargement +Usage.jLayeredPane2.border.title=Comment utiliser +Usage.jTextPane1.text=Avant WebOS Quick Install fonctionne correctement, il y a quelques exigences mineures:
  • Driver Novacom install\u00E9 sur cet ordinateur

    Si vous voulez r\u00E9installer le composant, cliquez sur le "R\u00E9installer Novacom" option dans le menu principal Fichier.

  • Mode d\u00E9veloppeur activ\u00E9.

    Cela peut \u00EAtre fait par tapant 'upupdowndownleftrightleftrightbastart', Ouvrez DevMode l'application, et d'activer la fonction.

  • +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=Copyright \u00A9 2009-2013 Jason Robitaille. Tous droits r\u00E9serv\u00E9s. +About.jLabel6.text=

    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

    +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= +FeedViewer.jLabel2.text= +FeedViewer.jTextPane1.contentType=text/html +FeedViewer.jTextPane1.text= +FeedViewer.jLabel4.text=Feed: +FeedViewer.jLabel3.text=License: +FeedViewer.jLabel5.text=Version:     +FeedViewer.jLabel6.text=Derni\u00E8re mise \u00E0 jour:     +FeedViewer.jLabel8.text=Description: +FeedViewer.jLabel7.text= +FeedViewer.jLabel9.text=D\u00E9veloppeur:     +FeedViewer.jLabel10.text= +FeedViewer.jLabel11.text=Page d'accueil +FeedViewer.jTextField2.text= +FeedViewer.jLabel22.text=Page d'accueil +FeedViewer.jLabel21.text= +FeedViewer.jLabel20.text=D\u00E9veloppeur:     +FeedViewer.jLabel19.text= +FeedViewer.jLabel18.text=Description: +FeedViewer.jLabel17.text=Derni\u00E8re mise \u00E0 jour:     +FeedViewer.jLabel16.text=Version:     +FeedViewer.jLabel15.text=License: +FeedViewer.jLabel14.text=Feed: +FeedViewer.jTextPane2.text= +FeedViewer.jTextPane2.contentType=text/html +FeedViewer.jLabel13.text= +FeedViewer.jLabel12.text= +FeedViewer.jButton4.text=Installer +FeedViewer.jButton3.text= +FeedViewer.jLabel33.text=Page d'accueil +FeedViewer.jLabel32.text= +FeedViewer.jLabel31.text=D\u00E9veloppeur:     +FeedViewer.jLabel30.text= +FeedViewer.jLabel29.text=Description: +FeedViewer.jLabel28.text=Derni\u00E8re mise \u00E0 jour:     +FeedViewer.jLabel27.text=Version:     +FeedViewer.jLabel26.text=License: +FeedViewer.jLabel25.text=Feed: +FeedViewer.jTextPane3.text= +FeedViewer.jTextPane3.contentType=text/html +FeedViewer.jLabel24.text= +FeedViewer.jLabel23.text= +FeedViewer.jButton6.text=Installer +FeedViewer.jButton5.text= +FeedViewer.jTextField3.text= +FeedViewer.jLabel44.text=Page d'accueil +FeedViewer.jLabel43.text= +FeedViewer.jLabel42.text=D\u00E9veloppeur:     +FeedViewer.jLabel41.text= +FeedViewer.jLabel40.text=Description: +FeedViewer.jLabel39.text=Derni\u00E8re mise \u00E0 jour:     +FeedViewer.jLabel38.text=Version:     +FeedViewer.jLabel37.text=License: +FeedViewer.jLabel36.text=Feed: +FeedViewer.jTextPane4.text= +FeedViewer.jTextPane4.contentType=text/html +FeedViewer.jLabel35.text= +FeedViewer.jLabel34.text= +FeedViewer.jButton8.text=Installer +FeedViewer.jButton7.text= +FeedViewer.jTextField4.text= +FeedViewer.jTextField5.text= +FeedViewer.jLabel55.text=Page d'accueil +FeedViewer.jLabel54.text= +FeedViewer.jLabel53.text=D\u00E9veloppeur:     +FeedViewer.jLabel52.text= +FeedViewer.jLabel51.text=Description: +FeedViewer.jLabel50.text=Derni\u00E8re mise \u00E0 jour:     +FeedViewer.jLabel49.text=Version:     +FeedViewer.jLabel48.text=License: +FeedViewer.jLabel47.text=Feed: +FeedViewer.jTextPane5.text= +FeedViewer.jTextPane5.contentType=text/html +FeedViewer.jLabel46.text= +FeedViewer.jLabel45.text= +FeedViewer.jButton10.text=Installer +FeedViewer.jButton9.text= +FeedViewer.jLabel66.text=Page d'accueil +FeedViewer.jLabel65.text= +FeedViewer.jLabel64.text=D\u00E9veloppeur:     +FeedViewer.jLabel63.text= +FeedViewer.jLabel62.text=Description: +FeedViewer.jLabel61.text=Derni\u00E8re mise \u00E0 jour:     +FeedViewer.jLabel60.text=Version:     +FeedViewer.jLabel59.text=License: +FeedViewer.jLabel58.text=Feed: +FeedViewer.jTextPane6.text= +FeedViewer.jTextPane6.contentType=text/html +FeedViewer.jLabel57.text= +FeedViewer.jLabel56.text= +FeedViewer.jButton12.text=Installer +FeedViewer.jButton11.text= +FeedViewer.jTextField6.text= +FeedViewer.jLabel77.text=Page d'accueil +FeedViewer.jLabel76.text= +FeedViewer.jLabel75.text=D\u00E9veloppeur:     +FeedViewer.jLabel74.text= +FeedViewer.jLabel73.text=Description: +FeedViewer.jLabel72.text=Derni\u00E8re mise \u00E0 jour:     +FeedViewer.jLabel71.text=Version:     +FeedViewer.jLabel70.text=License: +FeedViewer.jLabel69.text=Feed: +FeedViewer.jTextPane7.text= +FeedViewer.jTextPane7.contentType=text/html +FeedViewer.jLabel68.text= +FeedViewer.jLabel67.text= +FeedViewer.jButton14.text=Installer +FeedViewer.jButton13.text= +FeedViewer.jTextField7.text= +FeedViewer.jLabel88.text=Page d'accueil +FeedViewer.jLabel87.text= +FeedViewer.jLabel86.text=D\u00E9veloppeur:     +FeedViewer.jLabel85.text= +FeedViewer.jLabel84.text=Description: +FeedViewer.jLabel83.text=Derni\u00E8re mise \u00E0 jour:     +FeedViewer.jLabel82.text=Version:     +FeedViewer.jLabel81.text=License: +FeedViewer.jLabel80.text=Feed: +FeedViewer.jTextPane8.text= +FeedViewer.jTextPane8.contentType=text/html +FeedViewer.jLabel79.text= +FeedViewer.jLabel78.text= +FeedViewer.jButton16.text=Update +FeedViewer.jLayeredPane9.TabConstraints.tabTitle=Daemon de Linux +FeedViewer.jLabel99.text=Page d'accueil +FeedViewer.jLabel98.text= +FeedViewer.jLabel97.text=D\u00E9veloppeur:     +FeedViewer.jLabel96.text= +FeedViewer.jLabel95.text=Description: +FeedViewer.jLabel94.text=Derni\u00E8re mise \u00E0 jour:     +FeedViewer.jLabel93.text=Version:     +FeedViewer.jLabel92.text=License: +FeedViewer.jLabel91.text=Feed: +FeedViewer.jTextPane9.text= +FeedViewer.jTextPane9.contentType=text/html +FeedViewer.jLabel90.text= +FeedViewer.jLabel89.text= +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 += +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=Supprimer les mots des passe stock\u00E9s DevMode +RETRY=R\u00E9essayer \ No newline at end of file diff --git a/src/ca/canucksoftware/wosqi/Bundle_zh.properties b/src/ca/canucksoftware/wosqi/Bundle_zh.properties new file mode 100644 index 0000000..bdc0c8c --- /dev/null +++ b/src/ca/canucksoftware/wosqi/Bundle_zh.properties @@ -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=Novacom\u4E0B\u8F7D\u4E2D +Usage.jLayeredPane2.border.title=\u5982\u4F55\u4F7F\u7528 +Usage.jTextPane1.text=\u672C\u7A0B\u5E8F\u6B63\u5E38\u8FD0\u884C\u524D\u63D0:
    • \u5B89\u88C5Novacom\u9A71\u52A8

      \u53EF\u70B9\u51FB\u9876\u90E8\u83DC\u5355\u9009\u62E9\u91CD\u65B0\u5B89\u88C5Novacom\u9A71\u52A8

    • \u5DF2\u5F00\u542F\u5F00\u53D1\u8005\u6A21\u5F0F

      \u4E3B\u754C\u9762\u8FDE\u7EED\u8F93\u5165"upupdowndownleftrightleftrightbastart"\u8C03\u51FA\u5F00\u53D1\u8005\u6A21\u5F0F\u9009\u9879

    • \u624B\u673A\u63A5\u6570\u636E\u7EBF\u8FDE\u7535\u8111\u540E\u9009\u62E9"Just charge".
    +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=\u7248\u6743\u5F52Jason Robitaille\u6240\u6709,\u76D7\u7248\u5FC5\u7A76. +About.jLabel6.text=

    \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.

    +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= +FeedViewer.jLabel2.text= +FeedViewer.jTextPane1.contentType=text/html +FeedViewer.jTextPane1.text= +FeedViewer.jLabel4.text=\u6E90: +FeedViewer.jLabel3.text=\u8BB8\u53EF: +FeedViewer.jLabel5.text=\u7248\u672C:     +FeedViewer.jLabel6.text=\u4E0A\u6B21\u4FEE\u6539:     +FeedViewer.jLabel8.text=\u63CF\u8FF0: +FeedViewer.jLabel7.text= +FeedViewer.jLabel9.text=\u4F5C\u8005:     +FeedViewer.jLabel10.text= +FeedViewer.jLabel11.text=\u4E3B\u754C\u9762 +FeedViewer.jTextField2.text= +FeedViewer.jLabel22.text=\u4E3B\u754C\u9762 +FeedViewer.jLabel21.text= +FeedViewer.jLabel20.text=\u4F5C\u8005:     +FeedViewer.jLabel19.text= +FeedViewer.jLabel18.text=\u63CF\u8FF0: +FeedViewer.jLabel17.text=\u4E0A\u6B21\u4FEE\u6539:     +FeedViewer.jLabel16.text=\u7248\u672C:     +FeedViewer.jLabel15.text=\u8BB8\u53EF: +FeedViewer.jLabel14.text=\u6E90: +FeedViewer.jTextPane2.text= +FeedViewer.jTextPane2.contentType=text/html +FeedViewer.jLabel13.text= +FeedViewer.jLabel12.text= +FeedViewer.jButton4.text=\u5B89\u88C5 +FeedViewer.jButton3.text= +FeedViewer.jLabel33.text=\u4E3B\u754C\u9762 +FeedViewer.jLabel32.text= +FeedViewer.jLabel31.text=\u4F5C\u8005:     +FeedViewer.jLabel30.text= +FeedViewer.jLabel29.text=\u63CF\u8FF0: +FeedViewer.jLabel28.text=\u4E0A\u6B21\u4FEE\u6539:     +FeedViewer.jLabel27.text=\u7248\u672C:     +FeedViewer.jLabel26.text=\u8BB8\u53EF: +FeedViewer.jLabel25.text=\u6E90: +FeedViewer.jTextPane3.text= +FeedViewer.jTextPane3.contentType=text/html +FeedViewer.jLabel24.text= +FeedViewer.jLabel23.text= +FeedViewer.jButton6.text=\u5B89\u88C5 +FeedViewer.jButton5.text= +FeedViewer.jTextField3.text= +FeedViewer.jLabel44.text=\u4E3B\u754C\u9762 +FeedViewer.jLabel43.text= +FeedViewer.jLabel42.text=\u4F5C\u8005:     +FeedViewer.jLabel41.text= +FeedViewer.jLabel40.text=\u63CF\u8FF0: +FeedViewer.jLabel39.text=\u4E0A\u6B21\u4FEE\u6539:     +FeedViewer.jLabel38.text=\u7248\u672C:     +FeedViewer.jLabel37.text=\u8BB8\u53EF: +FeedViewer.jLabel36.text=\u6E90: +FeedViewer.jTextPane4.text= +FeedViewer.jTextPane4.contentType=text/html +FeedViewer.jLabel35.text= +FeedViewer.jLabel34.text= +FeedViewer.jButton8.text=\u5B89\u88C5 +FeedViewer.jButton7.text= +FeedViewer.jTextField4.text= +FeedViewer.jTextField5.text= +FeedViewer.jLabel55.text=\u4E3B\u754C\u9762 +FeedViewer.jLabel54.text= +FeedViewer.jLabel53.text=\u4F5C\u8005:     +FeedViewer.jLabel52.text= +FeedViewer.jLabel51.text=\u63CF\u8FF0: +FeedViewer.jLabel50.text=\u4E0A\u6B21\u4FEE\u6539:     +FeedViewer.jLabel49.text=\u7248\u672C:     +FeedViewer.jLabel48.text=\u8BB8\u53EF: +FeedViewer.jLabel47.text=\u6E90: +FeedViewer.jTextPane5.text= +FeedViewer.jTextPane5.contentType=text/html +FeedViewer.jLabel46.text= +FeedViewer.jLabel45.text= +FeedViewer.jButton10.text=\u5B89\u88C5 +FeedViewer.jButton9.text= +FeedViewer.jLabel66.text=\u4E3B\u754C\u9762 +FeedViewer.jLabel65.text= +FeedViewer.jLabel64.text=\u4F5C\u8005:     +FeedViewer.jLabel63.text= +FeedViewer.jLabel62.text=\u63CF\u8FF0: +FeedViewer.jLabel61.text=\u4E0A\u6B21\u4FEE\u6539:     +FeedViewer.jLabel60.text=\u7248\u672C:     +FeedViewer.jLabel59.text=\u8BB8\u53EF: +FeedViewer.jLabel58.text=\u6E90: +FeedViewer.jTextPane6.text= +FeedViewer.jTextPane6.contentType=text/html +FeedViewer.jLabel57.text= +FeedViewer.jLabel56.text= +FeedViewer.jButton12.text=\u5B89\u88C5 +FeedViewer.jButton11.text= +FeedViewer.jTextField6.text= +FeedViewer.jLabel77.text=\u4E3B\u754C\u9762 +FeedViewer.jLabel76.text= +FeedViewer.jLabel75.text=\u4F5C\u8005:     +FeedViewer.jLabel74.text= +FeedViewer.jLabel73.text=\u63CF\u8FF0: +FeedViewer.jLabel72.text=\u4E0A\u6B21\u4FEE\u6539:     +FeedViewer.jLabel71.text=\u7248\u672C:     +FeedViewer.jLabel70.text=\u8BB8\u53EF: +FeedViewer.jLabel69.text=\u6E90: +FeedViewer.jTextPane7.text= +FeedViewer.jTextPane7.contentType=text/html +FeedViewer.jLabel68.text= +FeedViewer.jLabel67.text= +FeedViewer.jButton14.text=\u5B89\u88C5 +FeedViewer.jButton13.text= +FeedViewer.jTextField7.text= +FeedViewer.jLabel88.text=\u4E3B\u754C\u9762 +FeedViewer.jLabel87.text= +FeedViewer.jLabel86.text=\u4F5C\u8005:     +FeedViewer.jLabel85.text= +FeedViewer.jLabel84.text=\u63CF\u8FF0: +FeedViewer.jLabel83.text=\u4E0A\u6B21\u4FEE\u6539:     +FeedViewer.jLabel82.text=\u7248\u672C:     +FeedViewer.jLabel81.text=\u8BB8\u53EF: +FeedViewer.jLabel80.text=\u6E90: +FeedViewer.jTextPane8.text= +FeedViewer.jTextPane8.contentType=text/html +FeedViewer.jLabel79.text= +FeedViewer.jLabel78.text= +FeedViewer.jButton16.text=\u66F4\u65B0 +FeedViewer.jLayeredPane9.TabConstraints.tabTitle=Linux\u540E\u53F0\u7A0B\u5E8F +FeedViewer.jLabel99.text=\u4E3B\u754C\u9762 +FeedViewer.jLabel98.text= +FeedViewer.jLabel97.text=\u4F5C\u8005:     +FeedViewer.jLabel96.text= +FeedViewer.jLabel95.text=\u63CF\u8FF0: +FeedViewer.jLabel94.text=\u4E0A\u6B21\u4FEE\u6539:     +FeedViewer.jLabel93.text=\u7248\u672C:     +FeedViewer.jLabel92.text=\u8BB8\u53EF: +FeedViewer.jLabel91.text=\u6E90: +FeedViewer.jTextPane9.text= +FeedViewer.jTextPane9.contentType=text/html +FeedViewer.jLabel90.text= +FeedViewer.jLabel89.text= +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 +=<\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=\u5C3D\u53EF\u80FD\u4F7F\u7528\u8BBE\u5907\u540D\u79F0 +OK=\u597D \ No newline at end of file diff --git a/src/ca/canucksoftware/wosqi/DeviceManagement.form b/src/ca/canucksoftware/wosqi/DeviceManagement.form new file mode 100644 index 0000000..75f3a99 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/DeviceManagement.form @@ -0,0 +1,365 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + <ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jTable1.columnModel.title0" replaceFormat="bundle.getString("{key}")"/> + + + + + + + <ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="DeviceManagement.jTable1.columnModel.title1" replaceFormat="bundle.getString("{key}")"/> + + + + + + + + + + + + + + + + + + + +
    + + + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    diff --git a/src/ca/canucksoftware/wosqi/DeviceManagement.java b/src/ca/canucksoftware/wosqi/DeviceManagement.java new file mode 100644 index 0000000..99cb02d --- /dev/null +++ b/src/ca/canucksoftware/wosqi/DeviceManagement.java @@ -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 pkgs; + private ArrayList 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(); + 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; i0) { + modTable.removeRow(0); + } + for(int i=0; i-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 warn = webOS.whatDependsRecursive(curr.getId()); + if(warn.size()>0) { + String warnMsg = "" + + MessageFormat.format(bundle + .getString("DEPENDANT_PACKAGES_EXIST_WARNING"), + new Object[] {modTable.getValueAt(i, 0)}) + "\n"; + for(int j=0; j depends = webOS.whatDepends(entry.getId()); + if(depends.size()>0) { + for(int i=0; i-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. + */ + // //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(); + }// //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(); + } + } +} diff --git a/src/ca/canucksoftware/wosqi/FeedLoader.form b/src/ca/canucksoftware/wosqi/FeedLoader.form new file mode 100644 index 0000000..29c4020 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/FeedLoader.form @@ -0,0 +1,164 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ca/canucksoftware/wosqi/FeedLoader.java b/src/ca/canucksoftware/wosqi/FeedLoader.java new file mode 100644 index 0000000..706e1da --- /dev/null +++ b/src/ca/canucksoftware/wosqi/FeedLoader.java @@ -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. + */ + // //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(); + }// //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(); + } + } +} diff --git a/src/ca/canucksoftware/wosqi/FeedViewer.form b/src/ca/canucksoftware/wosqi/FeedViewer.form new file mode 100644 index 0000000..8865c05 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/FeedViewer.form @@ -0,0 +1,3639 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ca/canucksoftware/wosqi/FeedViewer.java b/src/ca/canucksoftware/wosqi/FeedViewer.java new file mode 100644 index 0000000..803cb53 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/FeedViewer.java @@ -0,0 +1,2760 @@ +/* + * WebOSQuickInstallAboutBox.java + */ + +package ca.canucksoftware.wosqi; + +import ca.canucksoftware.ipkg.PackageEntry; +import ca.canucksoftware.ipkg.PackageFilter; +import ca.canucksoftware.ipkg.PackageManager; +import ca.canucksoftware.webos.DeviceInfo; +import ca.canucksoftware.webos.WebOSConnection; +import java.awt.Cursor; +import java.awt.Desktop; +import java.net.URL; +import java.text.MessageFormat; +import javax.swing.JOptionPane; +import java.util.*; +import java.util.Timer; +import java.util.ResourceBundle; +import javax.swing.Icon; +import javax.swing.JButton; +import javax.swing.JComboBox; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JTextField; +import javax.swing.JTextPane; +import org.json.JSONArray; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Image; +import javax.swing.ImageIcon; +import javax.swing.JLayeredPane; + +public class FeedViewer extends javax.swing.JDialog { + private ResourceBundle bundle; + private PackageManager pkgMgr; + private final String UNKNOWN_VALUE; + private final Icon NO_SCREENSHOT; + private final PackageFilter[] TAB_FILTER; + private final JComboBox[] CATEGORY; + private final JTextField[] SEARCH; + private final JList[] LIST; + private final JLabel[] NAME; + private final JLabel[] VERSION; + private final JLabel[] DEVELOPER; + private final JLabel[] LASTUPDATED; + private final JLabel[] SCREENSHOT; + private final JLabel[] LICENSE; + private final JLabel[] FEED; + private final JLabel[] DESCRIPTION_LABEL; + private final JLabel[] HOMEPAGE; + private final JLabel[] LICENSE_LABEL; + private final JLabel[] FEED_LABEL; + private final JTextPane[] DESCRIPTION; + private final JButton[] INSTALL_BUTTON; + private ArrayList[] packages; + private ArrayList[] filtered; + private PackageEntry[] selected; + private Timer t; + private WebOSConnection webOS; + private boolean loaded; + private Image background; + + public FeedViewer(java.awt.Frame parent, WebOSConnection wc, PackageManager pm) { + super(parent); + bundle = WebOSQuickInstallApp.bundle; + URL bgURL = getClass().getResource("resources/background2.jpg"); + background = new ImageIcon(bgURL).getImage(); + initComponents(); + loaded = false; + UNKNOWN_VALUE = bundle.getString("UNKNOWN"); + NO_SCREENSHOT = jLabel1.getIcon(); + TAB_FILTER = new PackageFilter[] {PackageFilter.Applications, + PackageFilter.Services, PackageFilter.Plugins, PackageFilter.Linux_Apps, + PackageFilter.Linux_Daemons, PackageFilter.Kernels, PackageFilter.Patches, + PackageFilter.Themes}; + CATEGORY = new JComboBox[] {jComboBox1, jComboBox2, jComboBox3, jComboBox4, + jComboBox9, jComboBox5, jComboBox6, jComboBox7}; + SEARCH = new JTextField[] {jTextField1, jTextField2, jTextField3, jTextField4, + jTextField9, jTextField5, jTextField6, jTextField7}; + LIST = new JList[] {jList1, jList2, jList3, jList4, jList9, jList5, + jList6, jList7, jList8}; + NAME = new JLabel[] {jLabel2, jLabel13, jLabel24, jLabel35, jLabel90, + jLabel46, jLabel57, jLabel68, jLabel79}; + VERSION = new JLabel[] {jLabel5, jLabel16, jLabel27, jLabel38, jLabel93, + jLabel49, jLabel60, jLabel71, jLabel82}; + DEVELOPER = new JLabel[] {jLabel9, jLabel20, jLabel31, jLabel42, jLabel97, + jLabel53, jLabel64, jLabel75, jLabel86}; + LASTUPDATED = new JLabel[] {jLabel6, jLabel17, jLabel28, jLabel39, jLabel94, + jLabel50, jLabel61, jLabel72, jLabel83}; + SCREENSHOT = new JLabel[] {jLabel1, jLabel12, jLabel23, jLabel34, jLabel89, + jLabel45, jLabel56, jLabel67, jLabel78}; + LICENSE = new JLabel[] {jLabel10, jLabel21, jLabel32, jLabel43, jLabel98, + jLabel54, jLabel65, jLabel76, jLabel87}; + FEED = new JLabel[] {jLabel7, jLabel19, jLabel30, jLabel41, jLabel96, + jLabel52, jLabel63, jLabel74, jLabel85}; + DESCRIPTION_LABEL = new JLabel[] {jLabel8, jLabel18, jLabel29, jLabel40, + jLabel95, jLabel51, jLabel62, jLabel73, jLabel84}; + HOMEPAGE = new JLabel[] {jLabel11, jLabel22, jLabel33, jLabel44, + jLabel99, jLabel55, jLabel66, jLabel77, jLabel88}; + LICENSE_LABEL = new JLabel[] {jLabel3, jLabel15, jLabel26, jLabel37, + jLabel92, jLabel48, jLabel59, jLabel70, jLabel81}; + FEED_LABEL = new JLabel[] {jLabel4, jLabel14, jLabel25, jLabel36, + jLabel91, jLabel47, jLabel58, jLabel69, jLabel80}; + DESCRIPTION = new JTextPane[] {jTextPane1, jTextPane2, jTextPane3, jTextPane4, + jTextPane9, jTextPane5, jTextPane6, jTextPane7, jTextPane8}; + INSTALL_BUTTON = new JButton[] {jButton2, jButton4, jButton6, jButton8, + jButton18, jButton10, jButton12, jButton14, jButton16}; + packages = new ArrayList[9]; + filtered = new ArrayList[9]; + selected = new PackageEntry[9]; + webOS = wc; + pkgMgr = pm; + 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 { + for(int i=0; i categories = pkgMgr.getCategories(); + for(int i=0; i0) { + LIST[tab].setSelectedIndex(0); + } else { + jButton15.setEnabled(false); + } + displayPackage(tab); + } + + public void displayPackage(int tab) { + int index = LIST[tab].getSelectedIndex(); + boolean flag = (index>-1); + VERSION[tab].setVisible(flag); + DEVELOPER[tab].setVisible(flag); + LASTUPDATED[tab].setVisible(flag); + SCREENSHOT[tab].setVisible(flag); + LICENSE[tab].setVisible(flag); + FEED[tab].setVisible(flag); + DESCRIPTION_LABEL[tab].setVisible(flag); + HOMEPAGE[tab].setVisible(flag); + LICENSE_LABEL[tab].setVisible(flag); + FEED_LABEL[tab].setVisible(flag); + DESCRIPTION[tab].getParent().getParent().setVisible(flag); + INSTALL_BUTTON[tab].setVisible(flag); + jButton15.setEnabled(flag); //Update All button + if(flag) { + selected[tab] = filtered[tab].get(index); + if(selected[tab].name!=null) { + NAME[tab].setText("" + selected[tab].name); + } else { + NAME[tab].setText("" + UNKNOWN_VALUE); + } + if(selected[tab].version!=null) { + VERSION[tab].setText("" + bundle.getString("VERSION:") + + "    " + selected[tab].version); + } else { + VERSION[tab].setText("" + bundle.getString("VERSION:") + + "    " + UNKNOWN_VALUE); + } + if(selected[tab].developer!=null) { + if(!selected[tab].developer.equals("N/A")) { + DEVELOPER[tab].setText("" + bundle.getString("DEVELOPER:") + + "    " + selected[tab].developer); + } else { + DEVELOPER[tab].setText("" + bundle.getString("DEVELOPER:") + + "    " + UNKNOWN_VALUE); + } + + } else { + DEVELOPER[tab].setText("" + bundle.getString("DEVELOPER:") + + "    " + UNKNOWN_VALUE); + } + if(selected[tab].source!=null) { + if(selected[tab].source.has("LastUpdated")) { + try { + String date = selected[tab].getFormattedDate(); + if(date!=null) { + LASTUPDATED[tab].setText("" + bundle.getString("LAST_UPDATED:") + + "    " + date); + } else { + LASTUPDATED[tab].setText("" + bundle.getString("LAST_UPDATED:") + + "    " + UNKNOWN_VALUE); + } + } catch(Exception e) {} + } else { + LASTUPDATED[tab].setText("" + bundle.getString("LAST_UPDATED:") + + "    " + UNKNOWN_VALUE); + } + if(selected[tab].source.has("License")) { + try { + String license = selected[tab].source.getString("License"); + if(license.length()==0) { + license = UNKNOWN_VALUE; + } + LICENSE[tab].setText("" + license); + } catch(Exception e) {} + } else { + LICENSE[tab].setText("" + UNKNOWN_VALUE); + } + if(selected[tab].source.has("Feed")) { + try { + FEED[tab].setText("" + selected[tab].source + .getString("Feed")); + } catch(Exception e) {} + } else { + FEED[tab].setText("" + UNKNOWN_VALUE); + } + if(selected[tab].source.has("FullDescription")) { + try { + DESCRIPTION[tab].setText("" + selected[tab].source + .getString("FullDescription")); + DESCRIPTION[tab].setCaretPosition(0); + } catch(Exception e) {} + } else { + DESCRIPTION[tab].setText("" + UNKNOWN_VALUE); + } + /*if(selected[tab].source.has("Icon")) { + try { + String iconUrl = selected[tab].source.getString("Icon"); + String currName = NAME[tab].getText().replaceFirst("", ""); + NAME[tab].setText("  " + currName); + } catch(Exception e) {} + } else { + NAME[tab].setIcon(null); + }*/ + new LoadScreenshot(tab).start(); + /*if(selected[tab].source.has("Screenshots")) { + try { + JSONArray ss = selected[tab].source.getJSONArray("Screenshots"); + if(ss.length()>0) { + SCREENSHOT[tab].setIcon(null); + SCREENSHOT[tab].setText("
    "); + } else { + SCREENSHOT[tab].setText(""); + SCREENSHOT[tab].setIcon(NO_SCREENSHOT); + } + } catch(Exception e) {} + } else { + SCREENSHOT[tab].setText(""); + SCREENSHOT[tab].setIcon(NO_SCREENSHOT); + }*/ + if(!selected[tab].source.has("Homepage")) { + HOMEPAGE[tab].setVisible(false); + } + } else { + LASTUPDATED[tab].setText("" + bundle.getString("LAST_UPDATED:") + + "    " + UNKNOWN_VALUE); + LICENSE[tab].setText("" + UNKNOWN_VALUE); + FEED[tab].setText("" + UNKNOWN_VALUE); + DESCRIPTION[tab].setText("" + UNKNOWN_VALUE); + SCREENSHOT[tab].setText(""); + SCREENSHOT[tab].setIcon(NO_SCREENSHOT); + HOMEPAGE[tab].setVisible(false); + } + } else { //no packages selected,aka no packages found + selected[tab] = null; + if(tab==packages.length-1) { + NAME[tab].setText("" + bundle.getString("NO_UPDATES_FOUND")); + } else { + NAME[tab].setText("" + bundle.getString("NO_PACKAGES_FOUND")); + } + DESCRIPTION[tab].setText(""); + } + } + + private void query() { + int tab = jTabbedPane2.getSelectedIndex(); + String toSearch = SEARCH[tab].getText().trim(); + filtered[tab] = new ArrayList(0); + for(int i=0; i0) { + LIST[tab].setSelectedIndex(0); + } + displayPackage(tab); + } + + private void install() { + int tab = jTabbedPane2.getSelectedIndex(); + ArrayList pkgList = getInstallList(selected[tab]); + String msg = "" + + MessageFormat.format(bundle.getString("DEPENDANCY_INSTALL_WARNING"), + new Object[] {selected[tab].name}) + "\n"; + ArrayList installList = new ArrayList(); + for(int i=0; i1) { + if(JOptionPane.showConfirmDialog(rootPane, msg, + bundle.getString("WARNING"), JOptionPane.OK_CANCEL_OPTION, + JOptionPane.WARNING_MESSAGE)==JOptionPane.OK_OPTION) { + doInstall(tab, installList); + } + } else { + doInstall(tab, installList); + } + } + + private ArrayList getInstallList(PackageEntry pkg) { + ArrayList result = new ArrayList(0); + String[] depends = pkg.depends; + if(depends!=null) { + for(int i=0; i0) { + LIST[tab].setSelectedIndex(0); + } + displayPackage(tab); + } + } + + private void update() { + int tab = packages.length-1; + ArrayList installList = new ArrayList(); + installList.add(selected[tab].getDownloadUrl()); + doInstall(tab, installList); + packages[tab] = null; + loadUpdates(); + if(filtered[tab].size()==0) { + jButton15.setEnabled(false); + } + + } + + private void updateAll() { + int tab = packages.length-1; + ArrayList installList = new ArrayList(); + for(int i=0; i//GEN-BEGIN:initComponents + private void initComponents() { + + jTabbedPane1 = new javax.swing.JTabbedPane(); + jTabbedPane2 = new javax.swing.JTabbedPane(); + jLayeredPane2 = new ImageLayeredPane(background); + jLabel5 = new javax.swing.JLabel(); + jLabel9 = new javax.swing.JLabel(); + jButton1 = new javax.swing.JButton(); + jLabel4 = new javax.swing.JLabel(); + jTextField1 = new javax.swing.JTextField(); + jLabel2 = new javax.swing.JLabel(); + jLabel6 = new javax.swing.JLabel(); + jComboBox1 = new javax.swing.JComboBox(); + jSeparator1 = new javax.swing.JSeparator(); + jScrollPane2 = new javax.swing.JScrollPane(); + jTextPane1 = new javax.swing.JTextPane(); + jLabel3 = new javax.swing.JLabel(); + jLabel10 = new javax.swing.JLabel(); + jLabel8 = new javax.swing.JLabel(); + jLabel1 = new javax.swing.JLabel(); + jLabel11 = new javax.swing.JLabel(); + jLabel7 = new javax.swing.JLabel(); + jButton2 = new javax.swing.JButton(); + jScrollPane1 = new javax.swing.JScrollPane(); + jList1 = new javax.swing.JList(); + jLayeredPane3 = new ImageLayeredPane(background); + jLabel20 = new javax.swing.JLabel(); + jLabel15 = new javax.swing.JLabel(); + jScrollPane4 = new javax.swing.JScrollPane(); + jTextPane2 = new javax.swing.JTextPane(); + jLabel17 = new javax.swing.JLabel(); + jLabel12 = new javax.swing.JLabel(); + jTextField2 = new javax.swing.JTextField(); + jLabel16 = new javax.swing.JLabel(); + jLabel21 = new javax.swing.JLabel(); + jComboBox2 = new javax.swing.JComboBox(); + jLabel19 = new javax.swing.JLabel(); + jLabel14 = new javax.swing.JLabel(); + jSeparator2 = new javax.swing.JSeparator(); + jLabel18 = new javax.swing.JLabel(); + jButton3 = new javax.swing.JButton(); + jScrollPane3 = new javax.swing.JScrollPane(); + jList2 = new javax.swing.JList(); + jLabel13 = new javax.swing.JLabel(); + jLabel22 = new javax.swing.JLabel(); + jButton4 = new javax.swing.JButton(); + jLayeredPane4 = new ImageLayeredPane(background); + jScrollPane6 = new javax.swing.JScrollPane(); + jTextPane3 = new javax.swing.JTextPane(); + jScrollPane5 = new javax.swing.JScrollPane(); + jList3 = new javax.swing.JList(); + jLabel29 = new javax.swing.JLabel(); + jLabel32 = new javax.swing.JLabel(); + jLabel26 = new javax.swing.JLabel(); + jButton5 = new javax.swing.JButton(); + jButton6 = new javax.swing.JButton(); + jLabel27 = new javax.swing.JLabel(); + jLabel33 = new javax.swing.JLabel(); + jLabel30 = new javax.swing.JLabel(); + jSeparator3 = new javax.swing.JSeparator(); + jTextField3 = new javax.swing.JTextField(); + jLabel23 = new javax.swing.JLabel(); + jComboBox3 = new javax.swing.JComboBox(); + jLabel24 = new javax.swing.JLabel(); + jLabel31 = new javax.swing.JLabel(); + jLabel28 = new javax.swing.JLabel(); + jLabel25 = new javax.swing.JLabel(); + jLayeredPane5 = new ImageLayeredPane(background); + jScrollPane7 = new javax.swing.JScrollPane(); + jList4 = new javax.swing.JList(); + jSeparator4 = new javax.swing.JSeparator(); + jButton7 = new javax.swing.JButton(); + jLabel40 = new javax.swing.JLabel(); + jLabel38 = new javax.swing.JLabel(); + jLabel37 = new javax.swing.JLabel(); + jLabel44 = new javax.swing.JLabel(); + jLabel35 = new javax.swing.JLabel(); + jComboBox4 = new javax.swing.JComboBox(); + jLabel43 = new javax.swing.JLabel(); + jScrollPane8 = new javax.swing.JScrollPane(); + jTextPane4 = new javax.swing.JTextPane(); + jLabel39 = new javax.swing.JLabel(); + jTextField4 = new javax.swing.JTextField(); + jLabel41 = new javax.swing.JLabel(); + jLabel34 = new javax.swing.JLabel(); + jButton8 = new javax.swing.JButton(); + jLabel42 = new javax.swing.JLabel(); + jLabel36 = new javax.swing.JLabel(); + jLayeredPane9 = new ImageLayeredPane(background); + jButton17 = new javax.swing.JButton(); + jButton18 = new javax.swing.JButton(); + jLabel94 = new javax.swing.JLabel(); + jLabel95 = new javax.swing.JLabel(); + jScrollPane17 = new javax.swing.JScrollPane(); + jList9 = new javax.swing.JList(); + jLabel97 = new javax.swing.JLabel(); + jLabel93 = new javax.swing.JLabel(); + jSeparator9 = new javax.swing.JSeparator(); + jLabel92 = new javax.swing.JLabel(); + jLabel98 = new javax.swing.JLabel(); + jScrollPane18 = new javax.swing.JScrollPane(); + jTextPane9 = new javax.swing.JTextPane(); + jLabel91 = new javax.swing.JLabel(); + jLabel96 = new javax.swing.JLabel(); + jLabel90 = new javax.swing.JLabel(); + jLabel99 = new javax.swing.JLabel(); + jComboBox9 = new javax.swing.JComboBox(); + jLabel89 = new javax.swing.JLabel(); + jTextField9 = new javax.swing.JTextField(); + jLayeredPane6 = new ImageLayeredPane(background); + jLabel45 = new javax.swing.JLabel(); + jLabel51 = new javax.swing.JLabel(); + jLabel48 = new javax.swing.JLabel(); + jSeparator5 = new javax.swing.JSeparator(); + jLabel49 = new javax.swing.JLabel(); + jButton9 = new javax.swing.JButton(); + jLabel52 = new javax.swing.JLabel(); + jScrollPane10 = new javax.swing.JScrollPane(); + jTextPane5 = new javax.swing.JTextPane(); + jTextField5 = new javax.swing.JTextField(); + jLabel47 = new javax.swing.JLabel(); + jLabel50 = new javax.swing.JLabel(); + jLabel53 = new javax.swing.JLabel(); + jLabel55 = new javax.swing.JLabel(); + jLabel46 = new javax.swing.JLabel(); + jScrollPane9 = new javax.swing.JScrollPane(); + jList5 = new javax.swing.JList(); + jLabel54 = new javax.swing.JLabel(); + jButton10 = new javax.swing.JButton(); + jComboBox5 = new javax.swing.JComboBox(); + jLayeredPane7 = new ImageLayeredPane(background); + jButton12 = new javax.swing.JButton(); + jLabel64 = new javax.swing.JLabel(); + jTextField6 = new javax.swing.JTextField(); + jScrollPane12 = new javax.swing.JScrollPane(); + jTextPane6 = new javax.swing.JTextPane(); + jLabel63 = new javax.swing.JLabel(); + jLabel58 = new javax.swing.JLabel(); + jLabel57 = new javax.swing.JLabel(); + jLabel59 = new javax.swing.JLabel(); + jScrollPane11 = new javax.swing.JScrollPane(); + jList6 = new javax.swing.JList(); + jLabel65 = new javax.swing.JLabel(); + jLabel61 = new javax.swing.JLabel(); + jLabel56 = new javax.swing.JLabel(); + jLabel66 = new javax.swing.JLabel(); + jButton11 = new javax.swing.JButton(); + jSeparator6 = new javax.swing.JSeparator(); + jLabel62 = new javax.swing.JLabel(); + jLabel60 = new javax.swing.JLabel(); + jComboBox6 = new javax.swing.JComboBox(); + jLayeredPane8 = new ImageLayeredPane(background); + jButton13 = new javax.swing.JButton(); + jLabel72 = new javax.swing.JLabel(); + jScrollPane13 = new javax.swing.JScrollPane(); + jList7 = new javax.swing.JList(); + jLabel73 = new javax.swing.JLabel(); + jLabel75 = new javax.swing.JLabel(); + jComboBox7 = new javax.swing.JComboBox(); + jLabel76 = new javax.swing.JLabel(); + jLabel71 = new javax.swing.JLabel(); + jButton14 = new javax.swing.JButton(); + jSeparator7 = new javax.swing.JSeparator(); + jLabel68 = new javax.swing.JLabel(); + jLabel69 = new javax.swing.JLabel(); + jTextField7 = new javax.swing.JTextField(); + jLabel74 = new javax.swing.JLabel(); + jLabel77 = new javax.swing.JLabel(); + jLabel70 = new javax.swing.JLabel(); + jScrollPane14 = new javax.swing.JScrollPane(); + jTextPane7 = new javax.swing.JTextPane(); + jLabel67 = new javax.swing.JLabel(); + jLayeredPane1 = new ImageLayeredPane(background); + jLabel88 = new javax.swing.JLabel(); + jLabel84 = new javax.swing.JLabel(); + jButton15 = new javax.swing.JButton(); + jButton16 = new javax.swing.JButton(); + jScrollPane15 = new javax.swing.JScrollPane(); + jList8 = new javax.swing.JList(); + jLabel81 = new javax.swing.JLabel(); + jLabel83 = new javax.swing.JLabel(); + jLabel85 = new javax.swing.JLabel(); + jLabel82 = new javax.swing.JLabel(); + jLabel79 = new javax.swing.JLabel(); + jLabel80 = new javax.swing.JLabel(); + jScrollPane16 = new javax.swing.JScrollPane(); + jTextPane8 = new javax.swing.JTextPane(); + jSeparator8 = new javax.swing.JSeparator(); + jLabel87 = new javax.swing.JLabel(); + jLabel78 = new javax.swing.JLabel(); + jLabel86 = new javax.swing.JLabel(); + + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); + setIconImage(null); + setModal(true); + setName("feedViewer"); // NOI18N + setResizable(false); + + jTabbedPane1.setBackground(new java.awt.Color(245, 243, 244)); + jTabbedPane1.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT); + jTabbedPane1.setTabPlacement(javax.swing.JTabbedPane.BOTTOM); + jTabbedPane1.setFocusable(false); + jTabbedPane1.setFont(jTabbedPane1.getFont().deriveFont(jTabbedPane1.getFont().getSize()+3f)); + jTabbedPane1.setName("mainTabs"); // NOI18N + jTabbedPane1.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + jTabbedPane1StateChanged(evt); + } + }); + + jTabbedPane2.setBackground(new java.awt.Color(245, 243, 244)); + jTabbedPane2.setTabLayoutPolicy(javax.swing.JTabbedPane.SCROLL_TAB_LAYOUT); + jTabbedPane2.setFocusable(false); + jTabbedPane2.setFont(jTabbedPane2.getFont().deriveFont(jTabbedPane2.getFont().getStyle() | java.awt.Font.BOLD)); + jTabbedPane2.setName("availablePackagesTabs"); // NOI18N + jTabbedPane2.addChangeListener(new javax.swing.event.ChangeListener() { + public void stateChanged(javax.swing.event.ChangeEvent evt) { + jTabbedPane2StateChanged(evt); + } + }); + + jLayeredPane2.setName("jLayeredPane2"); // NOI18N + + jLabel5.setFont(jLabel5.getFont().deriveFont(jLabel5.getFont().getSize()+1f)); + jLabel5.setText(bundle.getString("FeedViewer.jLabel5.text")); // NOI18N + jLabel5.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel5.setName("jLabel5"); // NOI18N + jLabel5.setBounds(230, 80, 280, 30); + jLayeredPane2.add(jLabel5, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel9.setFont(jLabel9.getFont().deriveFont(jLabel9.getFont().getSize()+1f)); + jLabel9.setText(bundle.getString("FeedViewer.jLabel9.text")); // NOI18N + jLabel9.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel9.setName("jLabel9"); // NOI18N + jLabel9.setBounds(230, 110, 280, 30); + jLayeredPane2.add(jLabel9, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/find.png"))); // NOI18N + jButton1.setText(bundle.getString("FeedViewer.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, 54, 30, 25); + jLayeredPane2.add(jButton1, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel4.setFont(jLabel4.getFont().deriveFont(jLabel4.getFont().getSize()+1f)); + jLabel4.setText(bundle.getString("FeedViewer.jLabel4.text")); // NOI18N + jLabel4.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel4.setName("jLabel4"); // NOI18N + jLabel4.setBounds(550, 350, 120, 20); + jLayeredPane2.add(jLabel4, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTextField1.setText(bundle.getString("FeedViewer.jTextField1.text")); // NOI18N + jTextField1.setName("jTextField1"); // NOI18N + jTextField1.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyTyped(java.awt.event.KeyEvent evt) { + jTextField1KeyTyped(evt); + } + }); + jTextField1.setBounds(10, 55, 140, 23); + jLayeredPane2.add(jTextField1, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel2.setFont(jLabel2.getFont().deriveFont(jLabel2.getFont().getSize()+13f)); + jLabel2.setText(bundle.getString("FeedViewer.jLabel2.text")); // NOI18N + jLabel2.setName("jLabel2"); // NOI18N + jLabel2.setBounds(230, 10, 280, 70); + jLayeredPane2.add(jLabel2, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel6.setFont(jLabel6.getFont().deriveFont(jLabel6.getFont().getSize()+1f)); + jLabel6.setText(bundle.getString("FeedViewer.jLabel6.text")); // NOI18N + jLabel6.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel6.setName("jLabel6"); // NOI18N + jLabel6.setBounds(230, 140, 280, 30); + jLayeredPane2.add(jLabel6, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jComboBox1.setMaximumRowCount(10); + 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(10, 20, 170, 22); + jLayeredPane2.add(jComboBox1, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jSeparator1.setOrientation(javax.swing.SwingConstants.VERTICAL); + jSeparator1.setName("jSeparator1"); // NOI18N + jSeparator1.setBounds(200, 20, 10, 390); + jLayeredPane2.add(jSeparator1, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane2.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); + jScrollPane2.setName("jScrollPane2"); // NOI18N + jScrollPane2.setOpaque(false); + + jTextPane1.setBorder(null); + jTextPane1.setContentType(bundle.getString("FeedViewer.jTextPane1.contentType")); // NOI18N + jTextPane1.setEditable(false); + jTextPane1.setFont(jTextPane1.getFont()); + jTextPane1.setText(bundle.getString("FeedViewer.jTextPane1.text")); // NOI18N + jTextPane1.setName("jTextPane1"); // NOI18N + jTextPane1.setOpaque(false); + jTextPane1.addHyperlinkListener(new javax.swing.event.HyperlinkListener() { + public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { + jTextPane1HyperlinkUpdate(evt); + } + }); + jScrollPane2.setViewportView(jTextPane1); + + jScrollPane2.setBounds(230, 200, 280, 170); + jLayeredPane2.add(jScrollPane2, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel3.setFont(jLabel3.getFont().deriveFont(jLabel3.getFont().getSize()+1f)); + jLabel3.setText(bundle.getString("FeedViewer.jLabel3.text")); // NOI18N + jLabel3.setName("jLabel3"); // NOI18N + jLabel3.setBounds(550, 290, 120, 20); + jLayeredPane2.add(jLabel3, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel10.setFont(jLabel10.getFont().deriveFont(jLabel10.getFont().getSize()+1f)); + jLabel10.setText(bundle.getString("FeedViewer.jLabel10.text")); // NOI18N + jLabel10.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel10.setName("jLabel10"); // NOI18N + jLabel10.setBounds(550, 310, 120, 40); + jLayeredPane2.add(jLabel10, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel8.setFont(jLabel8.getFont().deriveFont(jLabel8.getFont().getSize()+1f)); + jLabel8.setText(bundle.getString("FeedViewer.jLabel8.text")); // NOI18N + jLabel8.setName("jLabel8"); // NOI18N + jLabel8.setBounds(230, 170, 140, 20); + jLayeredPane2.add(jLabel8, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/no-screenshot.png"))); // NOI18N + jLabel1.setText(bundle.getString("FeedViewer.jLabel1.text")); // NOI18N + jLabel1.setName("jLabel1"); // NOI18N + jLabel1.setBounds(520, 10, 180, 240); + jLayeredPane2.add(jLabel1, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel11.setFont(jLabel11.getFont().deriveFont(jLabel11.getFont().getStyle() | java.awt.Font.BOLD, jLabel11.getFont().getSize()+1)); + jLabel11.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabel11.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/url-icon.png"))); // NOI18N + jLabel11.setText(bundle.getString("FeedViewer.jLabel11.text")); // NOI18N + jLabel11.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); + jLabel11.setName("jLabel11"); // NOI18N + jLabel11.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel11MouseClicked(evt); + } + }); + jLabel11.setBounds(550, 260, 120, 20); + jLayeredPane2.add(jLabel11, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel7.setFont(jLabel7.getFont().deriveFont(jLabel7.getFont().getSize()+1f)); + jLabel7.setText(bundle.getString("FeedViewer.jLabel7.text")); // NOI18N + jLabel7.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel7.setName("jLabel7"); // NOI18N + jLabel7.setBounds(550, 370, 120, 40); + jLayeredPane2.add(jLabel7, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton2.setBackground(new java.awt.Color(224, 218, 218)); + jButton2.setFont(jButton2.getFont().deriveFont(jButton2.getFont().getSize()+1f)); + jButton2.setText(bundle.getString("FeedViewer.jButton2.text")); // NOI18N + jButton2.setFocusable(false); + jButton2.setName("jButton2"); // NOI18N + jButton2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton2ActionPerformed(evt); + } + }); + jButton2.setBounds(370, 380, 90, 30); + jLayeredPane2.add(jButton2, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane1.setName("jScrollPane1"); // NOI18N + + jList1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jList1.setName("jList1"); // NOI18N + jList1.addListSelectionListener(new javax.swing.event.ListSelectionListener() { + public void valueChanged(javax.swing.event.ListSelectionEvent evt) { + jList1ValueChanged(evt); + } + }); + jScrollPane1.setViewportView(jList1); + + jScrollPane1.setBounds(10, 90, 170, 320); + jLayeredPane2.add(jScrollPane1, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTabbedPane2.addTab(bundle.getString("FeedViewer.jLayeredPane2.TabConstraints.tabTitle"), jLayeredPane2); // NOI18N + + jLayeredPane3.setName("jLayeredPane3"); // NOI18N + + jLabel20.setFont(jLabel20.getFont().deriveFont(jLabel20.getFont().getSize()+1f)); + jLabel20.setText(bundle.getString("FeedViewer.jLabel20.text")); // NOI18N + jLabel20.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel20.setName("jLabel20"); // NOI18N + jLabel20.setBounds(230, 110, 280, 30); + jLayeredPane3.add(jLabel20, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel15.setFont(jLabel15.getFont().deriveFont(jLabel15.getFont().getSize()+1f)); + jLabel15.setText(bundle.getString("FeedViewer.jLabel15.text")); // NOI18N + jLabel15.setName("jLabel15"); // NOI18N + jLabel15.setBounds(550, 290, 120, 20); + jLayeredPane3.add(jLabel15, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane4.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); + jScrollPane4.setName("jScrollPane4"); // NOI18N + + jTextPane2.setBorder(null); + jTextPane2.setContentType(bundle.getString("FeedViewer.jTextPane2.contentType")); // NOI18N + jTextPane2.setEditable(false); + jTextPane2.setFont(jTextPane2.getFont()); + jTextPane2.setText(bundle.getString("FeedViewer.jTextPane2.text")); // NOI18N + jTextPane2.setName("jTextPane2"); // NOI18N + jTextPane2.setOpaque(false); + jTextPane2.addHyperlinkListener(new javax.swing.event.HyperlinkListener() { + public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { + jTextPane2HyperlinkUpdate(evt); + } + }); + jScrollPane4.setViewportView(jTextPane2); + + jScrollPane4.setBounds(230, 200, 280, 170); + jLayeredPane3.add(jScrollPane4, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel17.setFont(jLabel17.getFont().deriveFont(jLabel17.getFont().getSize()+1f)); + jLabel17.setText(bundle.getString("FeedViewer.jLabel17.text")); // NOI18N + jLabel17.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel17.setName("jLabel17"); // NOI18N + jLabel17.setBounds(230, 140, 280, 30); + jLayeredPane3.add(jLabel17, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel12.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/no-screenshot.png"))); // NOI18N + jLabel12.setText(bundle.getString("FeedViewer.jLabel12.text")); // NOI18N + jLabel12.setName("jLabel12"); // NOI18N + jLabel12.setBounds(520, 10, 180, 240); + jLayeredPane3.add(jLabel12, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTextField2.setText(bundle.getString("FeedViewer.jTextField2.text")); // NOI18N + jTextField2.setName("jTextField2"); // NOI18N + jTextField2.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyTyped(java.awt.event.KeyEvent evt) { + jTextField2KeyTyped(evt); + } + }); + jTextField2.setBounds(10, 55, 140, 23); + jLayeredPane3.add(jTextField2, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel16.setFont(jLabel16.getFont().deriveFont(jLabel16.getFont().getSize()+1f)); + jLabel16.setText(bundle.getString("FeedViewer.jLabel16.text")); // NOI18N + jLabel16.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel16.setName("jLabel16"); // NOI18N + jLabel16.setBounds(230, 80, 280, 30); + jLayeredPane3.add(jLabel16, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel21.setFont(jLabel21.getFont().deriveFont(jLabel21.getFont().getSize()+1f)); + jLabel21.setText(bundle.getString("FeedViewer.jLabel21.text")); // NOI18N + jLabel21.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel21.setName("jLabel21"); // NOI18N + jLabel21.setBounds(550, 310, 120, 40); + jLayeredPane3.add(jLabel21, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jComboBox2.setMaximumRowCount(10); + jComboBox2.setFocusable(false); + jComboBox2.setName("jComboBox2"); // NOI18N + jComboBox2.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jComboBox2ActionPerformed(evt); + } + }); + jComboBox2.setBounds(10, 20, 170, 22); + jLayeredPane3.add(jComboBox2, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel19.setFont(jLabel19.getFont().deriveFont(jLabel19.getFont().getSize()+1f)); + jLabel19.setText(bundle.getString("FeedViewer.jLabel19.text")); // NOI18N + jLabel19.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel19.setName("jLabel19"); // NOI18N + jLabel19.setBounds(550, 370, 120, 40); + jLayeredPane3.add(jLabel19, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel14.setFont(jLabel14.getFont().deriveFont(jLabel14.getFont().getSize()+1f)); + jLabel14.setText(bundle.getString("FeedViewer.jLabel14.text")); // NOI18N + jLabel14.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel14.setName("jLabel14"); // NOI18N + jLabel14.setBounds(550, 350, 120, 20); + jLayeredPane3.add(jLabel14, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jSeparator2.setOrientation(javax.swing.SwingConstants.VERTICAL); + jSeparator2.setName("jSeparator2"); // NOI18N + jSeparator2.setBounds(200, 20, 10, 390); + jLayeredPane3.add(jSeparator2, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel18.setFont(jLabel18.getFont().deriveFont(jLabel18.getFont().getSize()+1f)); + jLabel18.setText(bundle.getString("FeedViewer.jLabel18.text")); // NOI18N + jLabel18.setName("jLabel18"); // NOI18N + jLabel18.setBounds(230, 170, 140, 20); + jLayeredPane3.add(jLabel18, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/find.png"))); // NOI18N + jButton3.setText(bundle.getString("FeedViewer.jButton3.text")); // NOI18N + jButton3.setFocusable(false); + jButton3.setName("jButton3"); // NOI18N + jButton3.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton3ActionPerformed(evt); + } + }); + jButton3.setBounds(150, 54, 30, 25); + jLayeredPane3.add(jButton3, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane3.setName("jScrollPane3"); // NOI18N + + jList2.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jList2.setName("jList2"); // NOI18N + jList2.addListSelectionListener(new javax.swing.event.ListSelectionListener() { + public void valueChanged(javax.swing.event.ListSelectionEvent evt) { + jList2ValueChanged(evt); + } + }); + jScrollPane3.setViewportView(jList2); + + jScrollPane3.setBounds(10, 90, 170, 320); + jLayeredPane3.add(jScrollPane3, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel13.setFont(jLabel13.getFont().deriveFont(jLabel13.getFont().getSize()+13f)); + jLabel13.setText(bundle.getString("FeedViewer.jLabel13.text")); // NOI18N + jLabel13.setName("jLabel13"); // NOI18N + jLabel13.setBounds(230, 10, 280, 70); + jLayeredPane3.add(jLabel13, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel22.setFont(jLabel22.getFont().deriveFont(jLabel22.getFont().getStyle() | java.awt.Font.BOLD, jLabel22.getFont().getSize()+1)); + jLabel22.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabel22.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/url-icon.png"))); // NOI18N + jLabel22.setText(bundle.getString("FeedViewer.jLabel22.text")); // NOI18N + jLabel22.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); + jLabel22.setName("jLabel22"); // NOI18N + jLabel22.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel22MouseClicked(evt); + } + }); + jLabel22.setBounds(550, 260, 120, 20); + jLayeredPane3.add(jLabel22, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton4.setBackground(new java.awt.Color(224, 218, 218)); + jButton4.setFont(jButton4.getFont().deriveFont(jButton4.getFont().getSize()+1f)); + jButton4.setText(bundle.getString("FeedViewer.jButton4.text")); // NOI18N + jButton4.setFocusable(false); + jButton4.setName("jButton4"); // NOI18N + jButton4.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton4ActionPerformed(evt); + } + }); + jButton4.setBounds(370, 380, 90, 30); + jLayeredPane3.add(jButton4, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTabbedPane2.addTab(bundle.getString("FeedViewer.jLayeredPane3.TabConstraints.tabTitle"), jLayeredPane3); // NOI18N + + jLayeredPane4.setName("jLayeredPane4"); // NOI18N + + jScrollPane6.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); + jScrollPane6.setName("jScrollPane6"); // NOI18N + + jTextPane3.setBorder(null); + jTextPane3.setContentType(bundle.getString("FeedViewer.jTextPane3.contentType")); // NOI18N + jTextPane3.setEditable(false); + jTextPane3.setFont(jTextPane3.getFont()); + jTextPane3.setText(bundle.getString("FeedViewer.jTextPane3.text")); // NOI18N + jTextPane3.setName("jTextPane3"); // NOI18N + jTextPane3.setOpaque(false); + jTextPane3.addHyperlinkListener(new javax.swing.event.HyperlinkListener() { + public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { + jTextPane3HyperlinkUpdate(evt); + } + }); + jScrollPane6.setViewportView(jTextPane3); + + jScrollPane6.setBounds(230, 200, 280, 170); + jLayeredPane4.add(jScrollPane6, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane5.setName("jScrollPane5"); // NOI18N + + jList3.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jList3.setName("jList3"); // NOI18N + jList3.addListSelectionListener(new javax.swing.event.ListSelectionListener() { + public void valueChanged(javax.swing.event.ListSelectionEvent evt) { + jList3ValueChanged(evt); + } + }); + jScrollPane5.setViewportView(jList3); + + jScrollPane5.setBounds(10, 90, 170, 320); + jLayeredPane4.add(jScrollPane5, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel29.setFont(jLabel29.getFont().deriveFont(jLabel29.getFont().getSize()+1f)); + jLabel29.setText(bundle.getString("FeedViewer.jLabel29.text")); // NOI18N + jLabel29.setName("jLabel29"); // NOI18N + jLabel29.setBounds(230, 170, 140, 20); + jLayeredPane4.add(jLabel29, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel32.setFont(jLabel32.getFont().deriveFont(jLabel32.getFont().getSize()+1f)); + jLabel32.setText(bundle.getString("FeedViewer.jLabel32.text")); // NOI18N + jLabel32.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel32.setName("jLabel32"); // NOI18N + jLabel32.setBounds(550, 310, 120, 40); + jLayeredPane4.add(jLabel32, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel26.setFont(jLabel26.getFont().deriveFont(jLabel26.getFont().getSize()+1f)); + jLabel26.setText(bundle.getString("FeedViewer.jLabel26.text")); // NOI18N + jLabel26.setName("jLabel26"); // NOI18N + jLabel26.setBounds(550, 290, 120, 20); + jLayeredPane4.add(jLabel26, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/find.png"))); // NOI18N + jButton5.setText(bundle.getString("FeedViewer.jButton5.text")); // NOI18N + jButton5.setFocusable(false); + jButton5.setName("jButton5"); // NOI18N + jButton5.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton5ActionPerformed(evt); + } + }); + jButton5.setBounds(150, 54, 30, 25); + jLayeredPane4.add(jButton5, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton6.setBackground(new java.awt.Color(224, 218, 218)); + jButton6.setFont(jButton6.getFont().deriveFont(jButton6.getFont().getSize()+1f)); + jButton6.setText(bundle.getString("FeedViewer.jButton6.text")); // NOI18N + jButton6.setFocusable(false); + jButton6.setName("jButton6"); // NOI18N + jButton6.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton6ActionPerformed(evt); + } + }); + jButton6.setBounds(370, 380, 90, 30); + jLayeredPane4.add(jButton6, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel27.setFont(jLabel27.getFont().deriveFont(jLabel27.getFont().getSize()+1f)); + jLabel27.setText(bundle.getString("FeedViewer.jLabel27.text")); // NOI18N + jLabel27.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel27.setName("jLabel27"); // NOI18N + jLabel27.setBounds(230, 80, 280, 30); + jLayeredPane4.add(jLabel27, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel33.setFont(jLabel33.getFont().deriveFont(jLabel33.getFont().getStyle() | java.awt.Font.BOLD, jLabel33.getFont().getSize()+1)); + jLabel33.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabel33.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/url-icon.png"))); // NOI18N + jLabel33.setText(bundle.getString("FeedViewer.jLabel33.text")); // NOI18N + jLabel33.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); + jLabel33.setName("jLabel33"); // NOI18N + jLabel33.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel33MouseClicked(evt); + } + }); + jLabel33.setBounds(550, 260, 120, 20); + jLayeredPane4.add(jLabel33, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel30.setFont(jLabel30.getFont().deriveFont(jLabel30.getFont().getSize()+1f)); + jLabel30.setText(bundle.getString("FeedViewer.jLabel30.text")); // NOI18N + jLabel30.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel30.setName("jLabel30"); // NOI18N + jLabel30.setBounds(550, 370, 120, 40); + jLayeredPane4.add(jLabel30, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jSeparator3.setOrientation(javax.swing.SwingConstants.VERTICAL); + jSeparator3.setName("jSeparator3"); // NOI18N + jSeparator3.setBounds(200, 20, 10, 390); + jLayeredPane4.add(jSeparator3, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTextField3.setText(bundle.getString("FeedViewer.jTextField3.text")); // NOI18N + jTextField3.setName("jTextField3"); // NOI18N + jTextField3.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyTyped(java.awt.event.KeyEvent evt) { + jTextField3KeyTyped(evt); + } + }); + jTextField3.setBounds(10, 55, 140, 23); + jLayeredPane4.add(jTextField3, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel23.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel23.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/no-screenshot.png"))); // NOI18N + jLabel23.setText(bundle.getString("FeedViewer.jLabel23.text")); // NOI18N + jLabel23.setName("jLabel23"); // NOI18N + jLabel23.setBounds(520, 10, 180, 240); + jLayeredPane4.add(jLabel23, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jComboBox3.setMaximumRowCount(10); + jComboBox3.setFocusable(false); + jComboBox3.setName("jComboBox3"); // NOI18N + jComboBox3.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jComboBox3ActionPerformed(evt); + } + }); + jComboBox3.setBounds(10, 20, 170, 22); + jLayeredPane4.add(jComboBox3, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel24.setFont(jLabel24.getFont().deriveFont(jLabel24.getFont().getSize()+13f)); + jLabel24.setText(bundle.getString("FeedViewer.jLabel24.text")); // NOI18N + jLabel24.setName("jLabel24"); // NOI18N + jLabel24.setBounds(230, 10, 280, 70); + jLayeredPane4.add(jLabel24, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel31.setFont(jLabel31.getFont().deriveFont(jLabel31.getFont().getSize()+1f)); + jLabel31.setText(bundle.getString("FeedViewer.jLabel31.text")); // NOI18N + jLabel31.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel31.setName("jLabel31"); // NOI18N + jLabel31.setBounds(230, 110, 280, 30); + jLayeredPane4.add(jLabel31, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel28.setFont(jLabel28.getFont().deriveFont(jLabel28.getFont().getSize()+1f)); + jLabel28.setText(bundle.getString("FeedViewer.jLabel28.text")); // NOI18N + jLabel28.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel28.setName("jLabel28"); // NOI18N + jLabel28.setBounds(230, 140, 280, 30); + jLayeredPane4.add(jLabel28, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel25.setFont(jLabel25.getFont().deriveFont(jLabel25.getFont().getSize()+1f)); + jLabel25.setText(bundle.getString("FeedViewer.jLabel25.text")); // NOI18N + jLabel25.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel25.setName("jLabel25"); // NOI18N + jLabel25.setBounds(550, 350, 120, 20); + jLayeredPane4.add(jLabel25, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTabbedPane2.addTab(bundle.getString("FeedViewer.jLayeredPane4.TabConstraints.tabTitle"), jLayeredPane4); // NOI18N + + jLayeredPane5.setName("jLayeredPane5"); // NOI18N + + jScrollPane7.setName("jScrollPane7"); // NOI18N + + jList4.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jList4.setName("jList4"); // NOI18N + jList4.addListSelectionListener(new javax.swing.event.ListSelectionListener() { + public void valueChanged(javax.swing.event.ListSelectionEvent evt) { + jList4ValueChanged(evt); + } + }); + jScrollPane7.setViewportView(jList4); + + jScrollPane7.setBounds(10, 90, 170, 320); + jLayeredPane5.add(jScrollPane7, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jSeparator4.setOrientation(javax.swing.SwingConstants.VERTICAL); + jSeparator4.setName("jSeparator4"); // NOI18N + jSeparator4.setBounds(200, 20, 10, 390); + jLayeredPane5.add(jSeparator4, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/find.png"))); // NOI18N + jButton7.setText(bundle.getString("FeedViewer.jButton7.text")); // NOI18N + jButton7.setFocusable(false); + jButton7.setName("jButton7"); // NOI18N + jButton7.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton7ActionPerformed(evt); + } + }); + jButton7.setBounds(150, 54, 30, 25); + jLayeredPane5.add(jButton7, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel40.setFont(jLabel40.getFont().deriveFont(jLabel40.getFont().getSize()+1f)); + jLabel40.setText(bundle.getString("FeedViewer.jLabel40.text")); // NOI18N + jLabel40.setName("jLabel40"); // NOI18N + jLabel40.setBounds(230, 170, 140, 20); + jLayeredPane5.add(jLabel40, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel38.setFont(jLabel38.getFont().deriveFont(jLabel38.getFont().getSize()+1f)); + jLabel38.setText(bundle.getString("FeedViewer.jLabel38.text")); // NOI18N + jLabel38.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel38.setName("jLabel38"); // NOI18N + jLabel38.setBounds(230, 80, 280, 30); + jLayeredPane5.add(jLabel38, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel37.setFont(jLabel37.getFont().deriveFont(jLabel37.getFont().getSize()+1f)); + jLabel37.setText(bundle.getString("FeedViewer.jLabel37.text")); // NOI18N + jLabel37.setName("jLabel37"); // NOI18N + jLabel37.setBounds(550, 290, 120, 20); + jLayeredPane5.add(jLabel37, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel44.setFont(jLabel44.getFont().deriveFont(jLabel44.getFont().getStyle() | java.awt.Font.BOLD, jLabel44.getFont().getSize()+1)); + jLabel44.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabel44.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/url-icon.png"))); // NOI18N + jLabel44.setText(bundle.getString("FeedViewer.jLabel44.text")); // NOI18N + jLabel44.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); + jLabel44.setName("jLabel44"); // NOI18N + jLabel44.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel44MouseClicked(evt); + } + }); + jLabel44.setBounds(550, 260, 120, 20); + jLayeredPane5.add(jLabel44, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel35.setFont(jLabel35.getFont().deriveFont(jLabel35.getFont().getSize()+13f)); + jLabel35.setText(bundle.getString("FeedViewer.jLabel35.text")); // NOI18N + jLabel35.setName("jLabel35"); // NOI18N + jLabel35.setBounds(230, 10, 280, 70); + jLayeredPane5.add(jLabel35, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jComboBox4.setMaximumRowCount(10); + jComboBox4.setFocusable(false); + jComboBox4.setName("jComboBox4"); // NOI18N + jComboBox4.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jComboBox4ActionPerformed(evt); + } + }); + jComboBox4.setBounds(10, 20, 170, 22); + jLayeredPane5.add(jComboBox4, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel43.setFont(jLabel43.getFont().deriveFont(jLabel43.getFont().getSize()+1f)); + jLabel43.setText(bundle.getString("FeedViewer.jLabel43.text")); // NOI18N + jLabel43.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel43.setName("jLabel43"); // NOI18N + jLabel43.setBounds(550, 310, 120, 40); + jLayeredPane5.add(jLabel43, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane8.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); + jScrollPane8.setName("jScrollPane8"); // NOI18N + + jTextPane4.setBorder(null); + jTextPane4.setContentType(bundle.getString("FeedViewer.jTextPane4.contentType")); // NOI18N + jTextPane4.setEditable(false); + jTextPane4.setFont(jTextPane4.getFont()); + jTextPane4.setText(bundle.getString("FeedViewer.jTextPane4.text")); // NOI18N + jTextPane4.setName("jTextPane4"); // NOI18N + jTextPane4.setOpaque(false); + jTextPane4.addHyperlinkListener(new javax.swing.event.HyperlinkListener() { + public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { + jTextPane4HyperlinkUpdate(evt); + } + }); + jScrollPane8.setViewportView(jTextPane4); + + jScrollPane8.setBounds(230, 200, 280, 170); + jLayeredPane5.add(jScrollPane8, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel39.setFont(jLabel39.getFont().deriveFont(jLabel39.getFont().getSize()+1f)); + jLabel39.setText(bundle.getString("FeedViewer.jLabel39.text")); // NOI18N + jLabel39.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel39.setName("jLabel39"); // NOI18N + jLabel39.setBounds(230, 140, 280, 30); + jLayeredPane5.add(jLabel39, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTextField4.setText(bundle.getString("FeedViewer.jTextField4.text")); // NOI18N + jTextField4.setName("jTextField4"); // NOI18N + jTextField4.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyTyped(java.awt.event.KeyEvent evt) { + jTextField4KeyTyped(evt); + } + }); + jTextField4.setBounds(10, 55, 140, 23); + jLayeredPane5.add(jTextField4, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel41.setFont(jLabel41.getFont().deriveFont(jLabel41.getFont().getSize()+1f)); + jLabel41.setText(bundle.getString("FeedViewer.jLabel41.text")); // NOI18N + jLabel41.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel41.setName("jLabel41"); // NOI18N + jLabel41.setBounds(550, 370, 130, 40); + jLayeredPane5.add(jLabel41, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel34.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel34.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/no-screenshot.png"))); // NOI18N + jLabel34.setText(bundle.getString("FeedViewer.jLabel34.text")); // NOI18N + jLabel34.setName("jLabel34"); // NOI18N + jLabel34.setBounds(520, 10, 180, 240); + jLayeredPane5.add(jLabel34, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton8.setBackground(new java.awt.Color(224, 218, 218)); + jButton8.setFont(jButton8.getFont().deriveFont(jButton8.getFont().getSize()+1f)); + jButton8.setText(bundle.getString("FeedViewer.jButton8.text")); // NOI18N + jButton8.setFocusable(false); + jButton8.setName("jButton8"); // NOI18N + jButton8.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton8ActionPerformed(evt); + } + }); + jButton8.setBounds(370, 380, 90, 30); + jLayeredPane5.add(jButton8, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel42.setFont(jLabel42.getFont().deriveFont(jLabel42.getFont().getSize()+1f)); + jLabel42.setText(bundle.getString("FeedViewer.jLabel42.text")); // NOI18N + jLabel42.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel42.setName("jLabel42"); // NOI18N + jLabel42.setBounds(230, 110, 280, 30); + jLayeredPane5.add(jLabel42, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel36.setFont(jLabel36.getFont().deriveFont(jLabel36.getFont().getSize()+1f)); + jLabel36.setText(bundle.getString("FeedViewer.jLabel36.text")); // NOI18N + jLabel36.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel36.setName("jLabel36"); // NOI18N + jLabel36.setBounds(550, 350, 120, 20); + jLayeredPane5.add(jLabel36, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTabbedPane2.addTab(bundle.getString("FeedViewer.jLayeredPane5.TabConstraints.tabTitle"), jLayeredPane5); // NOI18N + + jLayeredPane9.setName("jLayeredPane9"); // NOI18N + + jButton17.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/find.png"))); // NOI18N + jButton17.setText(bundle.getString("FeedViewer.jButton17.text")); // NOI18N + jButton17.setFocusable(false); + jButton17.setName("jButton17"); // NOI18N + jButton17.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton17ActionPerformed(evt); + } + }); + jButton17.setBounds(150, 54, 30, 25); + jLayeredPane9.add(jButton17, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton18.setBackground(new java.awt.Color(224, 218, 218)); + jButton18.setFont(jButton18.getFont().deriveFont(jButton18.getFont().getSize()+1f)); + jButton18.setText(bundle.getString("FeedViewer.jButton18.text")); // NOI18N + jButton18.setFocusable(false); + jButton18.setName("jButton18"); // NOI18N + jButton18.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton18ActionPerformed(evt); + } + }); + jButton18.setBounds(370, 380, 90, 30); + jLayeredPane9.add(jButton18, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel94.setFont(jLabel94.getFont().deriveFont(jLabel94.getFont().getSize()+1f)); + jLabel94.setText(bundle.getString("FeedViewer.jLabel94.text")); // NOI18N + jLabel94.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel94.setName("jLabel94"); // NOI18N + jLabel94.setBounds(230, 140, 280, 30); + jLayeredPane9.add(jLabel94, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel95.setFont(jLabel95.getFont().deriveFont(jLabel95.getFont().getSize()+1f)); + jLabel95.setText(bundle.getString("FeedViewer.jLabel95.text")); // NOI18N + jLabel95.setName("jLabel95"); // NOI18N + jLabel95.setBounds(230, 170, 140, 20); + jLayeredPane9.add(jLabel95, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane17.setName("jScrollPane17"); // NOI18N + + jList9.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jList9.setName("jList9"); // NOI18N + jList9.addListSelectionListener(new javax.swing.event.ListSelectionListener() { + public void valueChanged(javax.swing.event.ListSelectionEvent evt) { + jList9ValueChanged(evt); + } + }); + jScrollPane17.setViewportView(jList9); + + jScrollPane17.setBounds(10, 90, 170, 320); + jLayeredPane9.add(jScrollPane17, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel97.setFont(jLabel97.getFont().deriveFont(jLabel97.getFont().getSize()+1f)); + jLabel97.setText(bundle.getString("FeedViewer.jLabel97.text")); // NOI18N + jLabel97.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel97.setName("jLabel97"); // NOI18N + jLabel97.setBounds(230, 110, 280, 30); + jLayeredPane9.add(jLabel97, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel93.setFont(jLabel93.getFont().deriveFont(jLabel93.getFont().getSize()+1f)); + jLabel93.setText(bundle.getString("FeedViewer.jLabel93.text")); // NOI18N + jLabel93.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel93.setName("jLabel93"); // NOI18N + jLabel93.setBounds(230, 80, 280, 30); + jLayeredPane9.add(jLabel93, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jSeparator9.setOrientation(javax.swing.SwingConstants.VERTICAL); + jSeparator9.setName("jSeparator9"); // NOI18N + jSeparator9.setBounds(200, 20, 10, 390); + jLayeredPane9.add(jSeparator9, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel92.setFont(jLabel92.getFont().deriveFont(jLabel92.getFont().getSize()+1f)); + jLabel92.setText(bundle.getString("FeedViewer.jLabel92.text")); // NOI18N + jLabel92.setName("jLabel92"); // NOI18N + jLabel92.setBounds(550, 290, 120, 20); + jLayeredPane9.add(jLabel92, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel98.setFont(jLabel98.getFont().deriveFont(jLabel98.getFont().getSize()+1f)); + jLabel98.setText(bundle.getString("FeedViewer.jLabel98.text")); // NOI18N + jLabel98.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel98.setName("jLabel98"); // NOI18N + jLabel98.setBounds(550, 310, 120, 40); + jLayeredPane9.add(jLabel98, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane18.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); + jScrollPane18.setName("jScrollPane18"); // NOI18N + + jTextPane9.setBorder(null); + jTextPane9.setContentType(bundle.getString("FeedViewer.jTextPane9.contentType")); // NOI18N + jTextPane9.setEditable(false); + jTextPane9.setFont(jTextPane9.getFont()); + jTextPane9.setText(bundle.getString("FeedViewer.jTextPane9.text")); // NOI18N + jTextPane9.setName("jTextPane9"); // NOI18N + jTextPane9.setOpaque(false); + jTextPane9.addHyperlinkListener(new javax.swing.event.HyperlinkListener() { + public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { + jTextPane9HyperlinkUpdate(evt); + } + }); + jScrollPane18.setViewportView(jTextPane9); + + jScrollPane18.setBounds(230, 200, 280, 170); + jLayeredPane9.add(jScrollPane18, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel91.setFont(jLabel91.getFont().deriveFont(jLabel91.getFont().getSize()+1f)); + jLabel91.setText(bundle.getString("FeedViewer.jLabel91.text")); // NOI18N + jLabel91.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel91.setName("jLabel91"); // NOI18N + jLabel91.setBounds(550, 350, 120, 20); + jLayeredPane9.add(jLabel91, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel96.setFont(jLabel96.getFont().deriveFont(jLabel96.getFont().getSize()+1f)); + jLabel96.setText(bundle.getString("FeedViewer.jLabel96.text")); // NOI18N + jLabel96.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel96.setName("jLabel96"); // NOI18N + jLabel96.setBounds(550, 370, 120, 40); + jLayeredPane9.add(jLabel96, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel90.setFont(jLabel90.getFont().deriveFont(jLabel90.getFont().getSize()+13f)); + jLabel90.setText(bundle.getString("FeedViewer.jLabel90.text")); // NOI18N + jLabel90.setName("jLabel90"); // NOI18N + jLabel90.setBounds(230, 10, 280, 70); + jLayeredPane9.add(jLabel90, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel99.setFont(jLabel99.getFont().deriveFont(jLabel99.getFont().getStyle() | java.awt.Font.BOLD, jLabel99.getFont().getSize()+1)); + jLabel99.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabel99.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/url-icon.png"))); // NOI18N + jLabel99.setText(bundle.getString("FeedViewer.jLabel99.text")); // NOI18N + jLabel99.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); + jLabel99.setName("jLabel99"); // NOI18N + jLabel99.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel99MouseClicked(evt); + } + }); + jLabel99.setBounds(550, 260, 120, 20); + jLayeredPane9.add(jLabel99, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jComboBox9.setMaximumRowCount(10); + jComboBox9.setFocusable(false); + jComboBox9.setName("jComboBox9"); // NOI18N + jComboBox9.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jComboBox9ActionPerformed(evt); + } + }); + jComboBox9.setBounds(10, 20, 170, 22); + jLayeredPane9.add(jComboBox9, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel89.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel89.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/no-screenshot.png"))); // NOI18N + jLabel89.setText(bundle.getString("FeedViewer.jLabel89.text")); // NOI18N + jLabel89.setName("jLabel89"); // NOI18N + jLabel89.setBounds(520, 10, 180, 240); + jLayeredPane9.add(jLabel89, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTextField9.setText(bundle.getString("FeedViewer.jTextField9.text")); // NOI18N + jTextField9.setName("jTextField9"); // NOI18N + jTextField9.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyTyped(java.awt.event.KeyEvent evt) { + jTextField9KeyTyped(evt); + } + }); + jTextField9.setBounds(10, 55, 140, 23); + jLayeredPane9.add(jTextField9, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTabbedPane2.addTab(bundle.getString("FeedViewer.jLayeredPane9.TabConstraints.tabTitle"), jLayeredPane9); // NOI18N + + jLayeredPane6.setName("jLayeredPane6"); // NOI18N + + jLabel45.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel45.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/no-screenshot.png"))); // NOI18N + jLabel45.setText(bundle.getString("FeedViewer.jLabel45.text")); // NOI18N + jLabel45.setName("jLabel45"); // NOI18N + jLabel45.setBounds(520, 10, 180, 240); + jLayeredPane6.add(jLabel45, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel51.setFont(jLabel51.getFont().deriveFont(jLabel51.getFont().getSize()+1f)); + jLabel51.setText(bundle.getString("FeedViewer.jLabel51.text")); // NOI18N + jLabel51.setName("jLabel51"); // NOI18N + jLabel51.setBounds(230, 170, 140, 20); + jLayeredPane6.add(jLabel51, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel48.setFont(jLabel48.getFont().deriveFont(jLabel48.getFont().getSize()+1f)); + jLabel48.setText(bundle.getString("FeedViewer.jLabel48.text")); // NOI18N + jLabel48.setName("jLabel48"); // NOI18N + jLabel48.setBounds(550, 290, 120, 20); + jLayeredPane6.add(jLabel48, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jSeparator5.setOrientation(javax.swing.SwingConstants.VERTICAL); + jSeparator5.setName("jSeparator5"); // NOI18N + jSeparator5.setBounds(200, 20, 10, 390); + jLayeredPane6.add(jSeparator5, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel49.setFont(jLabel49.getFont().deriveFont(jLabel49.getFont().getSize()+1f)); + jLabel49.setText(bundle.getString("FeedViewer.jLabel49.text")); // NOI18N + jLabel49.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel49.setName("jLabel49"); // NOI18N + jLabel49.setBounds(230, 80, 280, 30); + jLayeredPane6.add(jLabel49, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton9.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/find.png"))); // NOI18N + jButton9.setText(bundle.getString("FeedViewer.jButton9.text")); // NOI18N + jButton9.setFocusable(false); + jButton9.setName("jButton9"); // NOI18N + jButton9.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton9ActionPerformed(evt); + } + }); + jButton9.setBounds(150, 54, 30, 25); + jLayeredPane6.add(jButton9, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel52.setFont(jLabel52.getFont().deriveFont(jLabel52.getFont().getSize()+1f)); + jLabel52.setText(bundle.getString("FeedViewer.jLabel52.text")); // NOI18N + jLabel52.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel52.setName("jLabel52"); // NOI18N + jLabel52.setBounds(550, 370, 120, 40); + jLayeredPane6.add(jLabel52, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane10.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); + jScrollPane10.setName("jScrollPane10"); // NOI18N + + jTextPane5.setBorder(null); + jTextPane5.setContentType(bundle.getString("FeedViewer.jTextPane5.contentType")); // NOI18N + jTextPane5.setEditable(false); + jTextPane5.setFont(jTextPane5.getFont()); + jTextPane5.setText(bundle.getString("FeedViewer.jTextPane5.text")); // NOI18N + jTextPane5.setName("jTextPane5"); // NOI18N + jTextPane5.setOpaque(false); + jTextPane5.addHyperlinkListener(new javax.swing.event.HyperlinkListener() { + public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { + jTextPane5HyperlinkUpdate(evt); + } + }); + jScrollPane10.setViewportView(jTextPane5); + + jScrollPane10.setBounds(230, 200, 280, 170); + jLayeredPane6.add(jScrollPane10, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTextField5.setText(bundle.getString("FeedViewer.jTextField5.text")); // NOI18N + jTextField5.setName("jTextField5"); // NOI18N + jTextField5.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyTyped(java.awt.event.KeyEvent evt) { + jTextField5KeyTyped(evt); + } + }); + jTextField5.setBounds(10, 55, 140, 23); + jLayeredPane6.add(jTextField5, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel47.setFont(jLabel47.getFont().deriveFont(jLabel47.getFont().getSize()+1f)); + jLabel47.setText(bundle.getString("FeedViewer.jLabel47.text")); // NOI18N + jLabel47.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel47.setName("jLabel47"); // NOI18N + jLabel47.setBounds(550, 350, 120, 20); + jLayeredPane6.add(jLabel47, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel50.setFont(jLabel50.getFont().deriveFont(jLabel50.getFont().getSize()+1f)); + jLabel50.setText(bundle.getString("FeedViewer.jLabel50.text")); // NOI18N + jLabel50.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel50.setName("jLabel50"); // NOI18N + jLabel50.setBounds(230, 140, 280, 30); + jLayeredPane6.add(jLabel50, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel53.setFont(jLabel53.getFont().deriveFont(jLabel53.getFont().getSize()+1f)); + jLabel53.setText(bundle.getString("FeedViewer.jLabel53.text")); // NOI18N + jLabel53.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel53.setName("jLabel53"); // NOI18N + jLabel53.setBounds(230, 110, 280, 30); + jLayeredPane6.add(jLabel53, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel55.setFont(jLabel55.getFont().deriveFont(jLabel55.getFont().getStyle() | java.awt.Font.BOLD, jLabel55.getFont().getSize()+1)); + jLabel55.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabel55.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/url-icon.png"))); // NOI18N + jLabel55.setText(bundle.getString("FeedViewer.jLabel55.text")); // NOI18N + jLabel55.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); + jLabel55.setName("jLabel55"); // NOI18N + jLabel55.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel55MouseClicked(evt); + } + }); + jLabel55.setBounds(550, 260, 120, 20); + jLayeredPane6.add(jLabel55, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel46.setFont(jLabel46.getFont().deriveFont(jLabel46.getFont().getSize()+13f)); + jLabel46.setText(bundle.getString("FeedViewer.jLabel46.text")); // NOI18N + jLabel46.setName("jLabel46"); // NOI18N + jLabel46.setBounds(230, 10, 280, 70); + jLayeredPane6.add(jLabel46, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane9.setName("jScrollPane9"); // NOI18N + + jList5.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jList5.setName("jList5"); // NOI18N + jList5.addListSelectionListener(new javax.swing.event.ListSelectionListener() { + public void valueChanged(javax.swing.event.ListSelectionEvent evt) { + jList5ValueChanged(evt); + } + }); + jScrollPane9.setViewportView(jList5); + + jScrollPane9.setBounds(10, 90, 170, 320); + jLayeredPane6.add(jScrollPane9, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel54.setFont(jLabel54.getFont().deriveFont(jLabel54.getFont().getSize()+1f)); + jLabel54.setText(bundle.getString("FeedViewer.jLabel54.text")); // NOI18N + jLabel54.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel54.setName("jLabel54"); // NOI18N + jLabel54.setBounds(550, 310, 120, 40); + jLayeredPane6.add(jLabel54, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton10.setBackground(new java.awt.Color(224, 218, 218)); + jButton10.setFont(jButton10.getFont().deriveFont(jButton10.getFont().getSize()+1f)); + jButton10.setText(bundle.getString("FeedViewer.jButton10.text")); // NOI18N + jButton10.setFocusable(false); + jButton10.setName("jButton10"); // NOI18N + jButton10.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton10ActionPerformed(evt); + } + }); + jButton10.setBounds(370, 380, 90, 30); + jLayeredPane6.add(jButton10, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jComboBox5.setMaximumRowCount(10); + jComboBox5.setFocusable(false); + jComboBox5.setName("jComboBox5"); // NOI18N + jComboBox5.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jComboBox5ActionPerformed(evt); + } + }); + jComboBox5.setBounds(10, 20, 170, 22); + jLayeredPane6.add(jComboBox5, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTabbedPane2.addTab(bundle.getString("FeedViewer.jLayeredPane6.TabConstraints.tabTitle"), jLayeredPane6); // NOI18N + + jLayeredPane7.setName("jLayeredPane7"); // NOI18N + + jButton12.setBackground(new java.awt.Color(224, 218, 218)); + jButton12.setFont(jButton12.getFont().deriveFont(jButton12.getFont().getSize()+1f)); + jButton12.setText(bundle.getString("FeedViewer.jButton12.text")); // NOI18N + jButton12.setFocusable(false); + jButton12.setName("jButton12"); // NOI18N + jButton12.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton12ActionPerformed(evt); + } + }); + jButton12.setBounds(370, 380, 90, 30); + jLayeredPane7.add(jButton12, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel64.setFont(jLabel64.getFont().deriveFont(jLabel64.getFont().getSize()+1f)); + jLabel64.setText(bundle.getString("FeedViewer.jLabel64.text")); // NOI18N + jLabel64.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel64.setName("jLabel64"); // NOI18N + jLabel64.setBounds(230, 110, 280, 30); + jLayeredPane7.add(jLabel64, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTextField6.setText(bundle.getString("FeedViewer.jTextField6.text")); // NOI18N + jTextField6.setName("jTextField6"); // NOI18N + jTextField6.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyTyped(java.awt.event.KeyEvent evt) { + jTextField6KeyTyped(evt); + } + }); + jTextField6.setBounds(10, 55, 140, 23); + jLayeredPane7.add(jTextField6, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane12.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); + jScrollPane12.setName("jScrollPane12"); // NOI18N + + jTextPane6.setBorder(null); + jTextPane6.setContentType(bundle.getString("FeedViewer.jTextPane6.contentType")); // NOI18N + jTextPane6.setEditable(false); + jTextPane6.setFont(jTextPane6.getFont()); + jTextPane6.setText(bundle.getString("FeedViewer.jTextPane6.text")); // NOI18N + jTextPane6.setName("jTextPane6"); // NOI18N + jTextPane6.setOpaque(false); + jTextPane6.addHyperlinkListener(new javax.swing.event.HyperlinkListener() { + public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { + jTextPane6HyperlinkUpdate(evt); + } + }); + jScrollPane12.setViewportView(jTextPane6); + + jScrollPane12.setBounds(230, 200, 280, 170); + jLayeredPane7.add(jScrollPane12, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel63.setFont(jLabel63.getFont().deriveFont(jLabel63.getFont().getSize()+1f)); + jLabel63.setText(bundle.getString("FeedViewer.jLabel63.text")); // NOI18N + jLabel63.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel63.setName("jLabel63"); // NOI18N + jLabel63.setBounds(550, 370, 120, 40); + jLayeredPane7.add(jLabel63, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel58.setFont(jLabel58.getFont().deriveFont(jLabel58.getFont().getSize()+1f)); + jLabel58.setText(bundle.getString("FeedViewer.jLabel58.text")); // NOI18N + jLabel58.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel58.setName("jLabel58"); // NOI18N + jLabel58.setBounds(550, 350, 120, 20); + jLayeredPane7.add(jLabel58, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel57.setFont(jLabel57.getFont().deriveFont(jLabel57.getFont().getSize()+13f)); + jLabel57.setText(bundle.getString("FeedViewer.jLabel57.text")); // NOI18N + jLabel57.setName("jLabel57"); // NOI18N + jLabel57.setBounds(230, 10, 280, 70); + jLayeredPane7.add(jLabel57, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel59.setFont(jLabel59.getFont().deriveFont(jLabel59.getFont().getSize()+1f)); + jLabel59.setText(bundle.getString("FeedViewer.jLabel59.text")); // NOI18N + jLabel59.setName("jLabel59"); // NOI18N + jLabel59.setBounds(550, 290, 120, 20); + jLayeredPane7.add(jLabel59, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane11.setName("jScrollPane11"); // NOI18N + + jList6.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jList6.setName("jList6"); // NOI18N + jList6.addListSelectionListener(new javax.swing.event.ListSelectionListener() { + public void valueChanged(javax.swing.event.ListSelectionEvent evt) { + jList6ValueChanged(evt); + } + }); + jScrollPane11.setViewportView(jList6); + + jScrollPane11.setBounds(10, 90, 170, 320); + jLayeredPane7.add(jScrollPane11, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel65.setFont(jLabel65.getFont().deriveFont(jLabel65.getFont().getSize()+1f)); + jLabel65.setText(bundle.getString("FeedViewer.jLabel65.text")); // NOI18N + jLabel65.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel65.setName("jLabel65"); // NOI18N + jLabel65.setBounds(550, 310, 120, 40); + jLayeredPane7.add(jLabel65, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel61.setFont(jLabel61.getFont().deriveFont(jLabel61.getFont().getSize()+1f)); + jLabel61.setText(bundle.getString("FeedViewer.jLabel61.text")); // NOI18N + jLabel61.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel61.setName("jLabel61"); // NOI18N + jLabel61.setBounds(230, 140, 280, 30); + jLayeredPane7.add(jLabel61, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel56.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel56.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/no-screenshot.png"))); // NOI18N + jLabel56.setText(bundle.getString("FeedViewer.jLabel56.text")); // NOI18N + jLabel56.setName("jLabel56"); // NOI18N + jLabel56.setBounds(520, 10, 180, 240); + jLayeredPane7.add(jLabel56, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel66.setFont(jLabel66.getFont().deriveFont(jLabel66.getFont().getStyle() | java.awt.Font.BOLD, jLabel66.getFont().getSize()+1)); + jLabel66.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabel66.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/url-icon.png"))); // NOI18N + jLabel66.setText(bundle.getString("FeedViewer.jLabel66.text")); // NOI18N + jLabel66.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); + jLabel66.setName("jLabel66"); // NOI18N + jLabel66.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel66MouseClicked(evt); + } + }); + jLabel66.setBounds(550, 260, 120, 20); + jLayeredPane7.add(jLabel66, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton11.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/find.png"))); // NOI18N + jButton11.setText(bundle.getString("FeedViewer.jButton11.text")); // NOI18N + jButton11.setFocusable(false); + jButton11.setName("jButton11"); // NOI18N + jButton11.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton11ActionPerformed(evt); + } + }); + jButton11.setBounds(150, 54, 30, 25); + jLayeredPane7.add(jButton11, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jSeparator6.setOrientation(javax.swing.SwingConstants.VERTICAL); + jSeparator6.setName("jSeparator6"); // NOI18N + jSeparator6.setBounds(200, 20, 10, 390); + jLayeredPane7.add(jSeparator6, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel62.setFont(jLabel62.getFont().deriveFont(jLabel62.getFont().getSize()+1f)); + jLabel62.setText(bundle.getString("FeedViewer.jLabel62.text")); // NOI18N + jLabel62.setName("jLabel62"); // NOI18N + jLabel62.setBounds(230, 170, 140, 20); + jLayeredPane7.add(jLabel62, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel60.setFont(jLabel60.getFont().deriveFont(jLabel60.getFont().getSize()+1f)); + jLabel60.setText(bundle.getString("FeedViewer.jLabel60.text")); // NOI18N + jLabel60.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel60.setName("jLabel60"); // NOI18N + jLabel60.setBounds(230, 80, 280, 30); + jLayeredPane7.add(jLabel60, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jComboBox6.setMaximumRowCount(10); + jComboBox6.setFocusable(false); + jComboBox6.setName("jComboBox6"); // NOI18N + jComboBox6.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jComboBox6ActionPerformed(evt); + } + }); + jComboBox6.setBounds(10, 20, 170, 22); + jLayeredPane7.add(jComboBox6, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTabbedPane2.addTab(bundle.getString("FeedViewer.jLayeredPane7.TabConstraints.tabTitle"), jLayeredPane7); // NOI18N + + jLayeredPane8.setName("jLayeredPane8"); // NOI18N + + jButton13.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/find.png"))); // NOI18N + jButton13.setText(bundle.getString("FeedViewer.jButton13.text")); // NOI18N + jButton13.setFocusable(false); + jButton13.setName("jButton13"); // NOI18N + jButton13.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton13ActionPerformed(evt); + } + }); + jButton13.setBounds(150, 54, 30, 25); + jLayeredPane8.add(jButton13, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel72.setFont(jLabel72.getFont().deriveFont(jLabel72.getFont().getSize()+1f)); + jLabel72.setText(bundle.getString("FeedViewer.jLabel72.text")); // NOI18N + jLabel72.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel72.setName("jLabel72"); // NOI18N + jLabel72.setBounds(230, 140, 280, 30); + jLayeredPane8.add(jLabel72, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane13.setName("jScrollPane13"); // NOI18N + + jList7.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jList7.setName("jList7"); // NOI18N + jList7.addListSelectionListener(new javax.swing.event.ListSelectionListener() { + public void valueChanged(javax.swing.event.ListSelectionEvent evt) { + jList7ValueChanged(evt); + } + }); + jScrollPane13.setViewportView(jList7); + + jScrollPane13.setBounds(10, 90, 170, 320); + jLayeredPane8.add(jScrollPane13, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel73.setFont(jLabel73.getFont().deriveFont(jLabel73.getFont().getSize()+1f)); + jLabel73.setText(bundle.getString("FeedViewer.jLabel73.text")); // NOI18N + jLabel73.setName("jLabel73"); // NOI18N + jLabel73.setBounds(230, 170, 140, 20); + jLayeredPane8.add(jLabel73, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel75.setFont(jLabel75.getFont().deriveFont(jLabel75.getFont().getSize()+1f)); + jLabel75.setText(bundle.getString("FeedViewer.jLabel75.text")); // NOI18N + jLabel75.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel75.setName("jLabel75"); // NOI18N + jLabel75.setBounds(230, 110, 280, 30); + jLayeredPane8.add(jLabel75, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jComboBox7.setMaximumRowCount(10); + jComboBox7.setFocusable(false); + jComboBox7.setName("jComboBox7"); // NOI18N + jComboBox7.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jComboBox7ActionPerformed(evt); + } + }); + jComboBox7.setBounds(10, 20, 170, 22); + jLayeredPane8.add(jComboBox7, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel76.setFont(jLabel76.getFont().deriveFont(jLabel76.getFont().getSize()+1f)); + jLabel76.setText(bundle.getString("FeedViewer.jLabel76.text")); // NOI18N + jLabel76.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel76.setName("jLabel76"); // NOI18N + jLabel76.setBounds(550, 310, 120, 40); + jLayeredPane8.add(jLabel76, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel71.setFont(jLabel71.getFont().deriveFont(jLabel71.getFont().getSize()+1f)); + jLabel71.setText(bundle.getString("FeedViewer.jLabel71.text")); // NOI18N + jLabel71.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel71.setName("jLabel71"); // NOI18N + jLabel71.setBounds(230, 80, 280, 30); + jLayeredPane8.add(jLabel71, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton14.setBackground(new java.awt.Color(224, 218, 218)); + jButton14.setFont(jButton14.getFont().deriveFont(jButton14.getFont().getSize()+1f)); + jButton14.setText(bundle.getString("FeedViewer.jButton14.text")); // NOI18N + jButton14.setFocusable(false); + jButton14.setName("jButton14"); // NOI18N + jButton14.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton14ActionPerformed(evt); + } + }); + jButton14.setBounds(370, 380, 90, 30); + jLayeredPane8.add(jButton14, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jSeparator7.setOrientation(javax.swing.SwingConstants.VERTICAL); + jSeparator7.setName("jSeparator7"); // NOI18N + jSeparator7.setBounds(200, 20, 10, 390); + jLayeredPane8.add(jSeparator7, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel68.setFont(jLabel68.getFont().deriveFont(jLabel68.getFont().getSize()+13f)); + jLabel68.setText(bundle.getString("FeedViewer.jLabel68.text")); // NOI18N + jLabel68.setName("jLabel68"); // NOI18N + jLabel68.setBounds(230, 10, 280, 70); + jLayeredPane8.add(jLabel68, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel69.setFont(jLabel69.getFont().deriveFont(jLabel69.getFont().getSize()+1f)); + jLabel69.setText(bundle.getString("FeedViewer.jLabel69.text")); // NOI18N + jLabel69.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel69.setName("jLabel69"); // NOI18N + jLabel69.setBounds(550, 350, 120, 20); + jLayeredPane8.add(jLabel69, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTextField7.setText(bundle.getString("FeedViewer.jTextField7.text")); // NOI18N + jTextField7.setName("jTextField7"); // NOI18N + jTextField7.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyTyped(java.awt.event.KeyEvent evt) { + jTextField7KeyTyped(evt); + } + }); + jTextField7.setBounds(10, 55, 140, 23); + jLayeredPane8.add(jTextField7, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel74.setFont(jLabel74.getFont().deriveFont(jLabel74.getFont().getSize()+1f)); + jLabel74.setText(bundle.getString("FeedViewer.jLabel74.text")); // NOI18N + jLabel74.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel74.setName("jLabel74"); // NOI18N + jLabel74.setBounds(550, 370, 120, 40); + jLayeredPane8.add(jLabel74, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel77.setFont(jLabel77.getFont().deriveFont(jLabel77.getFont().getStyle() | java.awt.Font.BOLD, jLabel77.getFont().getSize()+1)); + jLabel77.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabel77.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/url-icon.png"))); // NOI18N + jLabel77.setText(bundle.getString("FeedViewer.jLabel77.text")); // NOI18N + jLabel77.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); + jLabel77.setName("jLabel77"); // NOI18N + jLabel77.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel77MouseClicked(evt); + } + }); + jLabel77.setBounds(550, 260, 120, 20); + jLayeredPane8.add(jLabel77, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel70.setFont(jLabel70.getFont().deriveFont(jLabel70.getFont().getSize()+1f)); + jLabel70.setText(bundle.getString("FeedViewer.jLabel70.text")); // NOI18N + jLabel70.setName("jLabel70"); // NOI18N + jLabel70.setBounds(550, 290, 120, 20); + jLayeredPane8.add(jLabel70, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane14.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); + jScrollPane14.setName("jScrollPane14"); // NOI18N + + jTextPane7.setBorder(null); + jTextPane7.setContentType(bundle.getString("FeedViewer.jTextPane7.contentType")); // NOI18N + jTextPane7.setEditable(false); + jTextPane7.setFont(jTextPane7.getFont()); + jTextPane7.setText(bundle.getString("FeedViewer.jTextPane7.text")); // NOI18N + jTextPane7.setName("jTextPane7"); // NOI18N + jTextPane7.setOpaque(false); + jTextPane7.addHyperlinkListener(new javax.swing.event.HyperlinkListener() { + public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { + jTextPane7HyperlinkUpdate(evt); + } + }); + jScrollPane14.setViewportView(jTextPane7); + + jScrollPane14.setBounds(230, 200, 280, 170); + jLayeredPane8.add(jScrollPane14, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel67.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel67.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/no-screenshot.png"))); // NOI18N + jLabel67.setText(bundle.getString("FeedViewer.jLabel67.text")); // NOI18N + jLabel67.setName("jLabel67"); // NOI18N + jLabel67.setBounds(520, 10, 180, 240); + jLayeredPane8.add(jLabel67, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTabbedPane2.addTab(bundle.getString("FeedViewer.jLayeredPane8.TabConstraints.tabTitle"), jLayeredPane8); // NOI18N + + jTabbedPane1.addTab(bundle.getString("FeedViewer.availablePackagesTabs.TabConstraints.tabTitle"), jTabbedPane2); // NOI18N + + jLayeredPane1.setName("jLayeredPane1"); // NOI18N + + jLabel88.setFont(jLabel88.getFont().deriveFont(jLabel88.getFont().getStyle() | java.awt.Font.BOLD, jLabel88.getFont().getSize()+1)); + jLabel88.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); + jLabel88.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/url-icon.png"))); // NOI18N + jLabel88.setText(bundle.getString("FeedViewer.jLabel88.text")); // NOI18N + jLabel88.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); + jLabel88.setName("jLabel88"); // NOI18N + jLabel88.addMouseListener(new java.awt.event.MouseAdapter() { + public void mouseClicked(java.awt.event.MouseEvent evt) { + jLabel88MouseClicked(evt); + } + }); + jLabel88.setBounds(550, 280, 120, 20); + jLayeredPane1.add(jLabel88, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel84.setFont(jLabel84.getFont().deriveFont(jLabel84.getFont().getSize()+1f)); + jLabel84.setText(bundle.getString("FeedViewer.jLabel84.text")); // NOI18N + jLabel84.setName("jLabel84"); // NOI18N + jLabel84.setBounds(230, 170, 140, 20); + jLayeredPane1.add(jLabel84, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton15.setBackground(new java.awt.Color(224, 218, 218)); + jButton15.setFont(jButton15.getFont().deriveFont(jButton15.getFont().getSize()+1f)); + jButton15.setText(bundle.getString("FeedViewer.jButton15.text")); // NOI18N + jButton15.setName("jButton15"); // NOI18N + jButton15.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton15ActionPerformed(evt); + } + }); + jButton15.setBounds(29, 390, 130, 30); + jLayeredPane1.add(jButton15, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jButton16.setBackground(new java.awt.Color(224, 218, 218)); + jButton16.setFont(jButton16.getFont().deriveFont(jButton16.getFont().getSize()+1f)); + jButton16.setText(bundle.getString("FeedViewer.jButton16.text")); // NOI18N + jButton16.setName("jButton16"); // NOI18N + jButton16.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButton16ActionPerformed(evt); + } + }); + jButton16.setBounds(370, 400, 90, 30); + jLayeredPane1.add(jButton16, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane15.setName("jScrollPane15"); // NOI18N + + jList8.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); + jList8.setName("jList8"); // NOI18N + jList8.addListSelectionListener(new javax.swing.event.ListSelectionListener() { + public void valueChanged(javax.swing.event.ListSelectionEvent evt) { + jList8ValueChanged(evt); + } + }); + jScrollPane15.setViewportView(jList8); + + jScrollPane15.setBounds(10, 20, 170, 360); + jLayeredPane1.add(jScrollPane15, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel81.setFont(jLabel81.getFont().deriveFont(jLabel81.getFont().getSize()+1f)); + jLabel81.setText(bundle.getString("FeedViewer.jLabel81.text")); // NOI18N + jLabel81.setName("jLabel81"); // NOI18N + jLabel81.setBounds(550, 310, 120, 20); + jLayeredPane1.add(jLabel81, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel83.setFont(jLabel83.getFont().deriveFont(jLabel83.getFont().getSize()+1f)); + jLabel83.setText(bundle.getString("FeedViewer.jLabel83.text")); // NOI18N + jLabel83.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel83.setName("jLabel83"); // NOI18N + jLabel83.setBounds(230, 140, 280, 30); + jLayeredPane1.add(jLabel83, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel85.setFont(jLabel85.getFont().deriveFont(jLabel85.getFont().getSize()+1f)); + jLabel85.setText(bundle.getString("FeedViewer.jLabel85.text")); // NOI18N + jLabel85.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel85.setName("jLabel85"); // NOI18N + jLabel85.setBounds(550, 390, 120, 40); + jLayeredPane1.add(jLabel85, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel82.setFont(jLabel82.getFont().deriveFont(jLabel82.getFont().getSize()+1f)); + jLabel82.setText(bundle.getString("FeedViewer.jLabel82.text")); // NOI18N + jLabel82.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel82.setName("jLabel82"); // NOI18N + jLabel82.setBounds(230, 80, 280, 30); + jLayeredPane1.add(jLabel82, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel79.setFont(jLabel79.getFont().deriveFont(jLabel79.getFont().getSize()+13f)); + jLabel79.setText(bundle.getString("FeedViewer.jLabel79.text")); // NOI18N + jLabel79.setName("jLabel79"); // NOI18N + jLabel79.setBounds(230, 10, 280, 70); + jLayeredPane1.add(jLabel79, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel80.setFont(jLabel80.getFont().deriveFont(jLabel80.getFont().getSize()+1f)); + jLabel80.setText(bundle.getString("FeedViewer.jLabel80.text")); // NOI18N + jLabel80.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel80.setName("jLabel80"); // NOI18N + jLabel80.setBounds(550, 370, 120, 20); + jLayeredPane1.add(jLabel80, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jScrollPane16.setBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1)); + jScrollPane16.setName("jScrollPane16"); // NOI18N + + jTextPane8.setBorder(null); + jTextPane8.setContentType(bundle.getString("FeedViewer.jTextPane8.contentType")); // NOI18N + jTextPane8.setEditable(false); + jTextPane8.setFont(jTextPane8.getFont()); + jTextPane8.setText(bundle.getString("FeedViewer.jTextPane8.text")); // NOI18N + jTextPane8.setName("jTextPane8"); // NOI18N + jTextPane8.setOpaque(false); + jTextPane8.addHyperlinkListener(new javax.swing.event.HyperlinkListener() { + public void hyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) { + jTextPane8HyperlinkUpdate(evt); + } + }); + jScrollPane16.setViewportView(jTextPane8); + + jScrollPane16.setBounds(230, 200, 280, 190); + jLayeredPane1.add(jScrollPane16, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jSeparator8.setOrientation(javax.swing.SwingConstants.VERTICAL); + jSeparator8.setName("jSeparator8"); // NOI18N + jSeparator8.setBounds(200, 20, 10, 420); + jLayeredPane1.add(jSeparator8, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel87.setFont(jLabel87.getFont().deriveFont(jLabel87.getFont().getSize()+1f)); + jLabel87.setText(bundle.getString("FeedViewer.jLabel87.text")); // NOI18N + jLabel87.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel87.setName("jLabel87"); // NOI18N + jLabel87.setBounds(550, 330, 120, 40); + jLayeredPane1.add(jLabel87, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel78.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); + jLabel78.setIcon(new javax.swing.ImageIcon(getClass().getResource("/ca/canucksoftware/wosqi/resources/no-screenshot.png"))); // NOI18N + jLabel78.setText(bundle.getString("FeedViewer.jLabel78.text")); // NOI18N + jLabel78.setName("jLabel78"); // NOI18N + jLabel78.setBounds(520, 20, 180, 240); + jLayeredPane1.add(jLabel78, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jLabel86.setFont(jLabel86.getFont().deriveFont(jLabel86.getFont().getSize()+1f)); + jLabel86.setText(bundle.getString("FeedViewer.jLabel86.text")); // NOI18N + jLabel86.setVerticalAlignment(javax.swing.SwingConstants.TOP); + jLabel86.setName("jLabel86"); // NOI18N + jLabel86.setBounds(230, 110, 280, 30); + jLayeredPane1.add(jLabel86, javax.swing.JLayeredPane.DEFAULT_LAYER); + + jTabbedPane1.addTab(bundle.getString("FeedViewer.jLayeredPane1.TabConstraints.tabTitle"), jLayeredPane1); // NOI18N + + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); + getContentPane().setLayout(layout); + layout.setHorizontalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 720, javax.swing.GroupLayout.PREFERRED_SIZE) + ); + layout.setVerticalGroup( + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 500, javax.swing.GroupLayout.PREFERRED_SIZE) + ); + + pack(); + }// //GEN-END:initComponents + + private void jTextPane1HyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) {//GEN-FIRST:event_jTextPane1HyperlinkUpdate + if(evt.getEventType()==javax.swing.event.HyperlinkEvent.EventType.ACTIVATED) { + openUrl(evt.getURL()); + } + }//GEN-LAST:event_jTextPane1HyperlinkUpdate + + private void jTextPane2HyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) {//GEN-FIRST:event_jTextPane2HyperlinkUpdate + if(evt.getEventType()==javax.swing.event.HyperlinkEvent.EventType.ACTIVATED) { + openUrl(evt.getURL()); + } + }//GEN-LAST:event_jTextPane2HyperlinkUpdate + + private void jTextPane3HyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) {//GEN-FIRST:event_jTextPane3HyperlinkUpdate + if(evt.getEventType()==javax.swing.event.HyperlinkEvent.EventType.ACTIVATED) { + openUrl(evt.getURL()); + } + }//GEN-LAST:event_jTextPane3HyperlinkUpdate + + private void jTextPane4HyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) {//GEN-FIRST:event_jTextPane4HyperlinkUpdate + if(evt.getEventType()==javax.swing.event.HyperlinkEvent.EventType.ACTIVATED) { + openUrl(evt.getURL()); + } + }//GEN-LAST:event_jTextPane4HyperlinkUpdate + + private void jTextPane5HyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) {//GEN-FIRST:event_jTextPane5HyperlinkUpdate + if(evt.getEventType()==javax.swing.event.HyperlinkEvent.EventType.ACTIVATED) { + openUrl(evt.getURL()); + } + }//GEN-LAST:event_jTextPane5HyperlinkUpdate + + private void jTextPane6HyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) {//GEN-FIRST:event_jTextPane6HyperlinkUpdate + if(evt.getEventType()==javax.swing.event.HyperlinkEvent.EventType.ACTIVATED) { + openUrl(evt.getURL()); + } + }//GEN-LAST:event_jTextPane6HyperlinkUpdate + + private void jTextPane7HyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) {//GEN-FIRST:event_jTextPane7HyperlinkUpdate + if(evt.getEventType()==javax.swing.event.HyperlinkEvent.EventType.ACTIVATED) { + openUrl(evt.getURL()); + } + }//GEN-LAST:event_jTextPane7HyperlinkUpdate + + private void jTextPane8HyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) {//GEN-FIRST:event_jTextPane8HyperlinkUpdate + if(evt.getEventType()==javax.swing.event.HyperlinkEvent.EventType.ACTIVATED) { + openUrl(evt.getURL()); + } + }//GEN-LAST:event_jTextPane8HyperlinkUpdate + + private void jTextPane9HyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) {//GEN-FIRST:event_jTextPane9HyperlinkUpdate + if(evt.getEventType()==javax.swing.event.HyperlinkEvent.EventType.ACTIVATED) { + openUrl(evt.getURL()); + } + }//GEN-LAST:event_jTextPane9HyperlinkUpdate + + private void jLabel11MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel11MouseClicked + openHomepage(); + }//GEN-LAST:event_jLabel11MouseClicked + + private void jLabel22MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel22MouseClicked + openHomepage(); + }//GEN-LAST:event_jLabel22MouseClicked + + private void jLabel33MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel33MouseClicked + openHomepage(); + }//GEN-LAST:event_jLabel33MouseClicked + + private void jLabel44MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel44MouseClicked + openHomepage(); + }//GEN-LAST:event_jLabel44MouseClicked + + private void jLabel99MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel99MouseClicked + openHomepage(); + }//GEN-LAST:event_jLabel99MouseClicked + + private void jLabel55MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel55MouseClicked + openHomepage(); + }//GEN-LAST:event_jLabel55MouseClicked + + private void jLabel66MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel66MouseClicked + openHomepage(); + }//GEN-LAST:event_jLabel66MouseClicked + + private void jLabel77MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel77MouseClicked + openHomepage(); + }//GEN-LAST:event_jLabel77MouseClicked + + private void jTabbedPane2StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jTabbedPane2StateChanged + if(loaded) { + loadTab(); + } + }//GEN-LAST:event_jTabbedPane2StateChanged + + private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed + query(); + }//GEN-LAST:event_jButton1ActionPerformed + + private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed + query(); + }//GEN-LAST:event_jButton3ActionPerformed + + private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed + query(); + }//GEN-LAST:event_jButton5ActionPerformed + + private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed + query(); + }//GEN-LAST:event_jButton7ActionPerformed + + private void jButton17ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton17ActionPerformed + query(); + }//GEN-LAST:event_jButton17ActionPerformed + + private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton9ActionPerformed + query(); + }//GEN-LAST:event_jButton9ActionPerformed + + private void jButton11ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton11ActionPerformed + query(); + }//GEN-LAST:event_jButton11ActionPerformed + + private void jButton13ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton13ActionPerformed + query(); + }//GEN-LAST:event_jButton13ActionPerformed + + private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed + install(); + }//GEN-LAST:event_jButton2ActionPerformed + + private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed + install(); + }//GEN-LAST:event_jButton4ActionPerformed + + private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed + install(); + }//GEN-LAST:event_jButton6ActionPerformed + + private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton8ActionPerformed + install(); + }//GEN-LAST:event_jButton8ActionPerformed + + private void jButton18ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton18ActionPerformed + install(); + }//GEN-LAST:event_jButton18ActionPerformed + + private void jButton10ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton10ActionPerformed + install(); + }//GEN-LAST:event_jButton10ActionPerformed + + private void jButton12ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton12ActionPerformed + install(); + }//GEN-LAST:event_jButton12ActionPerformed + + private void jButton14ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton14ActionPerformed + install(); + }//GEN-LAST:event_jButton14ActionPerformed + + private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jList1ValueChanged + displayPackage(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jList1ValueChanged + + private void jList2ValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jList2ValueChanged + if(loaded) { + displayPackage(jTabbedPane2.getSelectedIndex()); + } + }//GEN-LAST:event_jList2ValueChanged + + private void jList3ValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jList3ValueChanged + displayPackage(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jList3ValueChanged + + private void jList4ValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jList4ValueChanged + displayPackage(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jList4ValueChanged + + private void jList9ValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jList9ValueChanged + displayPackage(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jList9ValueChanged + + private void jList5ValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jList5ValueChanged + displayPackage(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jList5ValueChanged + + private void jList6ValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jList6ValueChanged + displayPackage(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jList6ValueChanged + + private void jList7ValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jList7ValueChanged + displayPackage(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jList7ValueChanged + + private void jTextField7KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField7KeyTyped + if(evt.getKeyChar()=='\n' || evt.getKeyChar()=='\r') { + query(); + } + }//GEN-LAST:event_jTextField7KeyTyped + + private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField1KeyTyped + if(evt.getKeyChar()=='\n' || evt.getKeyChar()=='\r') { + query(); + } + }//GEN-LAST:event_jTextField1KeyTyped + + private void jTextField2KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField2KeyTyped + if(evt.getKeyChar()=='\n' || evt.getKeyChar()=='\r') { + query(); + } + }//GEN-LAST:event_jTextField2KeyTyped + + private void jTextField3KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField3KeyTyped + if(evt.getKeyChar()=='\n' || evt.getKeyChar()=='\r') { + query(); + } + }//GEN-LAST:event_jTextField3KeyTyped + + private void jTextField4KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField4KeyTyped + if(evt.getKeyChar()=='\n' || evt.getKeyChar()=='\r') { + query(); + } + }//GEN-LAST:event_jTextField4KeyTyped + + private void jTextField9KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField9KeyTyped + if(evt.getKeyChar()=='\n' || evt.getKeyChar()=='\r') { + query(); + } + }//GEN-LAST:event_jTextField9KeyTyped + + private void jTextField5KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField5KeyTyped + if(evt.getKeyChar()=='\n' || evt.getKeyChar()=='\r') { + query(); + } + }//GEN-LAST:event_jTextField5KeyTyped + + private void jTextField6KeyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextField6KeyTyped + if(evt.getKeyChar()=='\n' || evt.getKeyChar()=='\r') { + query(); + } + }//GEN-LAST:event_jTextField6KeyTyped + + private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox1ActionPerformed + loadCategory(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jComboBox1ActionPerformed + + private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox2ActionPerformed + loadCategory(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jComboBox2ActionPerformed + + private void jComboBox3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox3ActionPerformed + loadCategory(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jComboBox3ActionPerformed + + private void jComboBox4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox4ActionPerformed + loadCategory(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jComboBox4ActionPerformed + + private void jComboBox9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox9ActionPerformed + loadCategory(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jComboBox9ActionPerformed + + private void jComboBox5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox5ActionPerformed + loadCategory(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jComboBox5ActionPerformed + + private void jComboBox6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox6ActionPerformed + loadCategory(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jComboBox6ActionPerformed + + private void jComboBox7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jComboBox7ActionPerformed + loadCategory(jTabbedPane2.getSelectedIndex()); + }//GEN-LAST:event_jComboBox7ActionPerformed + + private void jLabel88MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel88MouseClicked + openHomepage(); + }//GEN-LAST:event_jLabel88MouseClicked + + private void jTabbedPane1StateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jTabbedPane1StateChanged + if(loaded) { + if(jTabbedPane1.getSelectedIndex()==0) { + loadTab(); + } else { + loadUpdates(); + } + } + }//GEN-LAST:event_jTabbedPane1StateChanged + + private void jButton15ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton15ActionPerformed + updateAll(); + }//GEN-LAST:event_jButton15ActionPerformed + + private void jButton16ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton16ActionPerformed + update(); + }//GEN-LAST:event_jButton16ActionPerformed + + private void jList8ValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jList8ValueChanged + displayPackage(packages.length-1); + }//GEN-LAST:event_jList8ValueChanged + + // Variables declaration - do not modify//GEN-BEGIN:variables + private javax.swing.JButton jButton1; + private javax.swing.JButton jButton10; + private javax.swing.JButton jButton11; + private javax.swing.JButton jButton12; + private javax.swing.JButton jButton13; + private javax.swing.JButton jButton14; + private javax.swing.JButton jButton15; + private javax.swing.JButton jButton16; + private javax.swing.JButton jButton17; + private javax.swing.JButton jButton18; + private javax.swing.JButton jButton2; + private javax.swing.JButton jButton3; + private javax.swing.JButton jButton4; + private javax.swing.JButton jButton5; + private javax.swing.JButton jButton6; + private javax.swing.JButton jButton7; + private javax.swing.JButton jButton8; + private javax.swing.JButton jButton9; + private javax.swing.JComboBox jComboBox1; + private javax.swing.JComboBox jComboBox2; + private javax.swing.JComboBox jComboBox3; + private javax.swing.JComboBox jComboBox4; + private javax.swing.JComboBox jComboBox5; + private javax.swing.JComboBox jComboBox6; + private javax.swing.JComboBox jComboBox7; + private javax.swing.JComboBox jComboBox9; + 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 jLabel14; + private javax.swing.JLabel jLabel15; + private javax.swing.JLabel jLabel16; + private javax.swing.JLabel jLabel17; + private javax.swing.JLabel jLabel18; + private javax.swing.JLabel jLabel19; + private javax.swing.JLabel jLabel2; + private javax.swing.JLabel jLabel20; + private javax.swing.JLabel jLabel21; + private javax.swing.JLabel jLabel22; + private javax.swing.JLabel jLabel23; + private javax.swing.JLabel jLabel24; + private javax.swing.JLabel jLabel25; + private javax.swing.JLabel jLabel26; + private javax.swing.JLabel jLabel27; + private javax.swing.JLabel jLabel28; + private javax.swing.JLabel jLabel29; + private javax.swing.JLabel jLabel3; + private javax.swing.JLabel jLabel30; + private javax.swing.JLabel jLabel31; + private javax.swing.JLabel jLabel32; + private javax.swing.JLabel jLabel33; + private javax.swing.JLabel jLabel34; + private javax.swing.JLabel jLabel35; + private javax.swing.JLabel jLabel36; + private javax.swing.JLabel jLabel37; + private javax.swing.JLabel jLabel38; + private javax.swing.JLabel jLabel39; + private javax.swing.JLabel jLabel4; + private javax.swing.JLabel jLabel40; + private javax.swing.JLabel jLabel41; + private javax.swing.JLabel jLabel42; + private javax.swing.JLabel jLabel43; + private javax.swing.JLabel jLabel44; + private javax.swing.JLabel jLabel45; + private javax.swing.JLabel jLabel46; + private javax.swing.JLabel jLabel47; + private javax.swing.JLabel jLabel48; + private javax.swing.JLabel jLabel49; + private javax.swing.JLabel jLabel5; + private javax.swing.JLabel jLabel50; + private javax.swing.JLabel jLabel51; + private javax.swing.JLabel jLabel52; + private javax.swing.JLabel jLabel53; + private javax.swing.JLabel jLabel54; + private javax.swing.JLabel jLabel55; + private javax.swing.JLabel jLabel56; + private javax.swing.JLabel jLabel57; + private javax.swing.JLabel jLabel58; + private javax.swing.JLabel jLabel59; + private javax.swing.JLabel jLabel6; + private javax.swing.JLabel jLabel60; + private javax.swing.JLabel jLabel61; + private javax.swing.JLabel jLabel62; + private javax.swing.JLabel jLabel63; + private javax.swing.JLabel jLabel64; + private javax.swing.JLabel jLabel65; + private javax.swing.JLabel jLabel66; + private javax.swing.JLabel jLabel67; + private javax.swing.JLabel jLabel68; + private javax.swing.JLabel jLabel69; + private javax.swing.JLabel jLabel7; + private javax.swing.JLabel jLabel70; + private javax.swing.JLabel jLabel71; + private javax.swing.JLabel jLabel72; + private javax.swing.JLabel jLabel73; + private javax.swing.JLabel jLabel74; + private javax.swing.JLabel jLabel75; + private javax.swing.JLabel jLabel76; + private javax.swing.JLabel jLabel77; + private javax.swing.JLabel jLabel78; + private javax.swing.JLabel jLabel79; + private javax.swing.JLabel jLabel8; + private javax.swing.JLabel jLabel80; + private javax.swing.JLabel jLabel81; + private javax.swing.JLabel jLabel82; + private javax.swing.JLabel jLabel83; + private javax.swing.JLabel jLabel84; + private javax.swing.JLabel jLabel85; + private javax.swing.JLabel jLabel86; + private javax.swing.JLabel jLabel87; + private javax.swing.JLabel jLabel88; + private javax.swing.JLabel jLabel89; + private javax.swing.JLabel jLabel9; + private javax.swing.JLabel jLabel90; + private javax.swing.JLabel jLabel91; + private javax.swing.JLabel jLabel92; + private javax.swing.JLabel jLabel93; + private javax.swing.JLabel jLabel94; + private javax.swing.JLabel jLabel95; + private javax.swing.JLabel jLabel96; + private javax.swing.JLabel jLabel97; + private javax.swing.JLabel jLabel98; + private javax.swing.JLabel jLabel99; + private javax.swing.JLayeredPane jLayeredPane1; + private javax.swing.JLayeredPane jLayeredPane2; + private javax.swing.JLayeredPane jLayeredPane3; + private javax.swing.JLayeredPane jLayeredPane4; + private javax.swing.JLayeredPane jLayeredPane5; + private javax.swing.JLayeredPane jLayeredPane6; + private javax.swing.JLayeredPane jLayeredPane7; + private javax.swing.JLayeredPane jLayeredPane8; + private javax.swing.JLayeredPane jLayeredPane9; + private javax.swing.JList jList1; + private javax.swing.JList jList2; + private javax.swing.JList jList3; + private javax.swing.JList jList4; + private javax.swing.JList jList5; + private javax.swing.JList jList6; + private javax.swing.JList jList7; + private javax.swing.JList jList8; + private javax.swing.JList jList9; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JScrollPane jScrollPane10; + private javax.swing.JScrollPane jScrollPane11; + private javax.swing.JScrollPane jScrollPane12; + private javax.swing.JScrollPane jScrollPane13; + private javax.swing.JScrollPane jScrollPane14; + private javax.swing.JScrollPane jScrollPane15; + private javax.swing.JScrollPane jScrollPane16; + private javax.swing.JScrollPane jScrollPane17; + private javax.swing.JScrollPane jScrollPane18; + private javax.swing.JScrollPane jScrollPane2; + private javax.swing.JScrollPane jScrollPane3; + private javax.swing.JScrollPane jScrollPane4; + private javax.swing.JScrollPane jScrollPane5; + private javax.swing.JScrollPane jScrollPane6; + private javax.swing.JScrollPane jScrollPane7; + private javax.swing.JScrollPane jScrollPane8; + private javax.swing.JScrollPane jScrollPane9; + private javax.swing.JSeparator jSeparator1; + private javax.swing.JSeparator jSeparator2; + private javax.swing.JSeparator jSeparator3; + private javax.swing.JSeparator jSeparator4; + private javax.swing.JSeparator jSeparator5; + private javax.swing.JSeparator jSeparator6; + private javax.swing.JSeparator jSeparator7; + private javax.swing.JSeparator jSeparator8; + private javax.swing.JSeparator jSeparator9; + private javax.swing.JTabbedPane jTabbedPane1; + private javax.swing.JTabbedPane jTabbedPane2; + private javax.swing.JTextField jTextField1; + private javax.swing.JTextField jTextField2; + private javax.swing.JTextField jTextField3; + private javax.swing.JTextField jTextField4; + private javax.swing.JTextField jTextField5; + private javax.swing.JTextField jTextField6; + private javax.swing.JTextField jTextField7; + private javax.swing.JTextField jTextField9; + private javax.swing.JTextPane jTextPane1; + private javax.swing.JTextPane jTextPane2; + private javax.swing.JTextPane jTextPane3; + private javax.swing.JTextPane jTextPane4; + private javax.swing.JTextPane jTextPane5; + private javax.swing.JTextPane jTextPane6; + private javax.swing.JTextPane jTextPane7; + private javax.swing.JTextPane jTextPane8; + private javax.swing.JTextPane jTextPane9; + // End of variables declaration//GEN-END:variables + + class DoDispose extends TimerTask { + public void run() { + dispose(); + } + } + + class DoLoad extends TimerTask { + public void run() { + loaded = true; + if(jTabbedPane1.getSelectedIndex()==0) { + loadTab(); + } else { + loadUpdates(); + } + for(int i=0; i0) { + SCREENSHOT[tab].setIcon(null); + SCREENSHOT[tab].setText("
    "); + } else { + SCREENSHOT[tab].setText(""); + SCREENSHOT[tab].setIcon(NO_SCREENSHOT); + } + } catch(Exception e) {} + } else { + SCREENSHOT[tab].setText(""); + SCREENSHOT[tab].setIcon(NO_SCREENSHOT); + } + } + } + + class ImageLayeredPane extends JLayeredPane { + private Image img; + public ImageLayeredPane(String img) { + this(new ImageIcon(img).getImage()); + } + public ImageLayeredPane(Image img) { + super(); + 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); + } + } +} diff --git a/src/ca/canucksoftware/wosqi/InstalledPatchInfo.form b/src/ca/canucksoftware/wosqi/InstalledPatchInfo.form new file mode 100644 index 0000000..1f195e5 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/InstalledPatchInfo.form @@ -0,0 +1,327 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ca/canucksoftware/wosqi/InstalledPatchInfo.java b/src/ca/canucksoftware/wosqi/InstalledPatchInfo.java new file mode 100644 index 0000000..e037fd1 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/InstalledPatchInfo.java @@ -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("

    " + app.getName() + "

    "); + jLabel6.setText(app.getVersion()); + jTextArea2.setText(app.getId()); + jTextArea2.setCaretPosition(0); + String dev = app.getDeveloper(); + if(dev!=null) { + jLabel10.setText("

    " + dev + "

    "); + } + t.schedule(new DoDelayedLoad(), 50); + } + + private String removeHTML(String s) { + s = s.replaceAll("

    ", "\n\n"); + s = s.replaceAll("
    ", "\n"); + s = s.replaceAll("
      ", "\n"); + s = s.replaceAll("
        ", "\n"); + s = s.replaceAll("
      1. ", "\t- "); + s = s.replaceAll("
      2. ", "\n"); + s = s.replaceAll("\\<.*?\\>", ""); + s = s.replaceAll("’", "'"); + s = s.replaceAll(" ", " "); + s = s.replaceAll(":", ":"); + s = s.replaceAll(""", "\""); + s = s.replaceAll("&", "&"); + s = s.replaceAll("<", "<"); + s = s.replaceAll(">", ">"); + s = s.replaceAll("»", "\""); + s = s.replaceAll("«", "\""); + s = s.replaceAll("»", "\""); + s = s.replaceAll("©", "©"); + s = s.replaceAll("®", "®"); + 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. + */ + // //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(); + }// //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("

        " + dev + "

        "); + jTextArea1.setText(removeHTML(descript)); + } + } +} diff --git a/src/ca/canucksoftware/wosqi/InstalledPkgInfo.form b/src/ca/canucksoftware/wosqi/InstalledPkgInfo.form new file mode 100644 index 0000000..f920d50 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/InstalledPkgInfo.form @@ -0,0 +1,272 @@ + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ca/canucksoftware/wosqi/InstalledPkgInfo.java b/src/ca/canucksoftware/wosqi/InstalledPkgInfo.java new file mode 100644 index 0000000..a5821c4 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/InstalledPkgInfo.java @@ -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("

        " + app.getName() + "

        "); + jLabel6.setText(app.getVersion()); + jTextArea2.setText(app.getId()); + jTextArea2.setCaretPosition(0); + String dev = app.getDeveloper(); + if(dev!=null) { + jLabel10.setText("

        " + dev + "

        "); + } + t.schedule(new DoDelayedLoad(), 50); + } + + private String removeHTML(String s) { + s = s.replaceAll("

        ", "\n\n"); + s = s.replaceAll("
        ", "\n"); + s = s.replaceAll("
          ", "\n"); + s = s.replaceAll("
            ", "\n"); + s = s.replaceAll("
          1. ", "\t- "); + s = s.replaceAll("
          2. ", "\n"); + s = s.replaceAll("\\<.*?\\>", ""); + s = s.replaceAll("’", "'"); + s = s.replaceAll(" ", " "); + s = s.replaceAll(":", ":"); + s = s.replaceAll(""", "\""); + s = s.replaceAll("&", "&"); + s = s.replaceAll("<", "<"); + s = s.replaceAll(">", ">"); + s = s.replaceAll("»", "\""); + s = s.replaceAll("«", "\""); + s = s.replaceAll("»", "\""); + s = s.replaceAll("©", "©"); + s = s.replaceAll("®", "®"); + 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. + */ + // //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(); + }// //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("

            " + app.getName(webOS) + "

            "); + app.parseControl(webOS); + String dev = app.getDeveloper(); + if(dev==null) { + dev = bundle.getString("UNKNOWN"); + } + jLabel10.setText("

            " + dev + "

            "); + } + } +} diff --git a/src/ca/canucksoftware/wosqi/Installer.form b/src/ca/canucksoftware/wosqi/Installer.form new file mode 100644 index 0000000..2c9500c --- /dev/null +++ b/src/ca/canucksoftware/wosqi/Installer.form @@ -0,0 +1,157 @@ + + +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ca/canucksoftware/wosqi/Installer.java b/src/ca/canucksoftware/wosqi/Installer.java new file mode 100644 index 0000000..4f7f63b --- /dev/null +++ b/src/ca/canucksoftware/wosqi/Installer.java @@ -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
            " + FileUtils.getFilename((String) curr) + + "
            "); + 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("
            " + name + "
            "); + 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. + */ + // //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(); + }// //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(); + } + } +} diff --git a/src/ca/canucksoftware/wosqi/MainView.form b/src/ca/canucksoftware/wosqi/MainView.form new file mode 100644 index 0000000..1387d3c --- /dev/null +++ b/src/ca/canucksoftware/wosqi/MainView.form @@ -0,0 +1,523 @@ + + +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            + + + + + <ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.installTable.columnModel.title0" replaceFormat="bundle.getString("{key}")"/> + + + + + + + <ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.installTable.columnModel.title1" replaceFormat="bundle.getString("{key}")"/> + + + + + + + <ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="MainView.installTable.columnModel.title2" replaceFormat="bundle.getString("{key}")"/> + + + + + + + + + + + + + + + + + + + +
            +
            +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ca/canucksoftware/wosqi/MainView.java b/src/ca/canucksoftware/wosqi/MainView.java new file mode 100644 index 0000000..a74dfda --- /dev/null +++ b/src/ca/canucksoftware/wosqi/MainView.java @@ -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 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(); + 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; i0) { + modTable.removeRow(0); + } + File[] files = installDir.listFiles(new WebOSFileFilter()); + for(int i=0; i0) { + chooserPath = files[0].getParentFile().getAbsolutePath(); + Preferences.userRoot().put("chooserPath", chooserPath); + } + for(int i=0; i0) { + 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; i0) { + 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//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); + }// //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, "" + + bundle.getString("FULL_WOSQI_DISCLAIMER") + "", + 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" + + 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; + } + } +} diff --git a/src/ca/canucksoftware/wosqi/ReceiveFile.form b/src/ca/canucksoftware/wosqi/ReceiveFile.form new file mode 100644 index 0000000..c7c0cbf --- /dev/null +++ b/src/ca/canucksoftware/wosqi/ReceiveFile.form @@ -0,0 +1,208 @@ + + +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ca/canucksoftware/wosqi/ReceiveFile.java b/src/ca/canucksoftware/wosqi/ReceiveFile.java new file mode 100644 index 0000000..da61f79 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/ReceiveFile.java @@ -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//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(); + }// //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(); + } + } +} diff --git a/src/ca/canucksoftware/wosqi/SendFile.form b/src/ca/canucksoftware/wosqi/SendFile.form new file mode 100644 index 0000000..84cf137 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/SendFile.form @@ -0,0 +1,208 @@ + + +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ca/canucksoftware/wosqi/SendFile.java b/src/ca/canucksoftware/wosqi/SendFile.java new file mode 100644 index 0000000..d04c915 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/SendFile.java @@ -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//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(); + }// //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(); + } + } +} diff --git a/src/ca/canucksoftware/wosqi/Settings.form b/src/ca/canucksoftware/wosqi/Settings.form new file mode 100644 index 0000000..b324b21 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/Settings.form @@ -0,0 +1,347 @@ + + +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            + + + + + <ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Settings.jTable1.columnModel.title1" replaceFormat="bundle.getString("{key}")"/> + + + + + + + <ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Settings.jTable1.columnModel.title0" replaceFormat="bundle.getString("{key}")"/> + + + + + + + + + + + + + + +
            +
            +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            + + + + + <ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Settings.jTable1.columnModel.title1" replaceFormat="bundle.getString("{key}")"/> + + + + + + + <ResourceString bundle="ca/canucksoftware/wosqi/Bundle.properties" key="Settings.jTable1.columnModel.title0" replaceFormat="bundle.getString("{key}")"/> + + + + + + + + + + + + + +
            + + + + +
            +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
            +
            +
            +
            +
            + diff --git a/src/ca/canucksoftware/wosqi/Settings.java b/src/ca/canucksoftware/wosqi/Settings.java new file mode 100644 index 0000000..774222b --- /dev/null +++ b/src/ca/canucksoftware/wosqi/Settings.java @@ -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 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("")); + 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//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(); + }// //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); + } + } +} diff --git a/src/ca/canucksoftware/wosqi/Usage.form b/src/ca/canucksoftware/wosqi/Usage.form new file mode 100644 index 0000000..6e1cbec --- /dev/null +++ b/src/ca/canucksoftware/wosqi/Usage.form @@ -0,0 +1,129 @@ + + +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ca/canucksoftware/wosqi/Usage.java b/src/ca/canucksoftware/wosqi/Usage.java new file mode 100644 index 0000000..8a42a72 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/Usage.java @@ -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. + */ + // //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(); + }// //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 + +} diff --git a/src/ca/canucksoftware/wosqi/WebOSQuickInstallApp.java b/src/ca/canucksoftware/wosqi/WebOSQuickInstallApp.java new file mode 100644 index 0000000..5166144 --- /dev/null +++ b/src/ca/canucksoftware/wosqi/WebOSQuickInstallApp.java @@ -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