New application for I2P: desktopgui. Should eventually replace systray, and have more functionality.
To use the application, you need to (by default) add the following to clients.config : # desktopgui clientApp.6.args= clientApp.6.delay=5 clientApp.6.main=desktopgui.Main clientApp.6.name=desktopgui clientApp.6.startOnLoad=true
This commit is contained in:
15
apps/desktopgui/LICENSE
Normal file
15
apps/desktopgui/LICENSE
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
Desktop GUI: provides a simple GUI for I2P.
|
||||||
|
Copyright (C) 2009 Mathias De Maré
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License
|
||||||
|
as published by the Free Software Foundation; only version 2 of the License.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
69
apps/desktopgui/build.xml
Normal file
69
apps/desktopgui/build.xml
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- You may freely edit this file. See commented blocks below for -->
|
||||||
|
<!-- some examples of how to customize the build. -->
|
||||||
|
<!-- (If you delete it and reopen the project it will be recreated.) -->
|
||||||
|
<project name="desktopgui" default="default" basedir=".">
|
||||||
|
<description>Builds, tests, and runs the project desktopgui.</description>
|
||||||
|
<import file="nbproject/build-impl.xml"/>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
There exist several targets which are by default empty and which can be
|
||||||
|
used for execution of your tasks. These targets are usually executed
|
||||||
|
before and after some main targets. They are:
|
||||||
|
|
||||||
|
-pre-init: called before initialization of project properties
|
||||||
|
-post-init: called after initialization of project properties
|
||||||
|
-pre-compile: called before javac compilation
|
||||||
|
-post-compile: called after javac compilation
|
||||||
|
-pre-compile-single: called before javac compilation of single file
|
||||||
|
-post-compile-single: called after javac compilation of single file
|
||||||
|
-pre-compile-test: called before javac compilation of JUnit tests
|
||||||
|
-post-compile-test: called after javac compilation of JUnit tests
|
||||||
|
-pre-compile-test-single: called before javac compilation of single JUnit test
|
||||||
|
-post-compile-test-single: called after javac compilation of single JUunit test
|
||||||
|
-pre-jar: called before JAR building
|
||||||
|
-post-jar: called after JAR building
|
||||||
|
-post-clean: called after cleaning build products
|
||||||
|
|
||||||
|
(Targets beginning with '-' are not intended to be called on their own.)
|
||||||
|
|
||||||
|
Example of inserting an obfuscator after compilation could look like this:
|
||||||
|
|
||||||
|
<target name="-post-compile">
|
||||||
|
<obfuscate>
|
||||||
|
<fileset dir="${build.classes.dir}"/>
|
||||||
|
</obfuscate>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
For list of available properties check the imported
|
||||||
|
nbproject/build-impl.xml file.
|
||||||
|
|
||||||
|
|
||||||
|
Another way to customize the build is by overriding existing main targets.
|
||||||
|
The targets of interest are:
|
||||||
|
|
||||||
|
-init-macrodef-javac: defines macro for javac compilation
|
||||||
|
-init-macrodef-junit: defines macro for junit execution
|
||||||
|
-init-macrodef-debug: defines macro for class debugging
|
||||||
|
-init-macrodef-java: defines macro for class execution
|
||||||
|
-do-jar-with-manifest: JAR building (if you are using a manifest)
|
||||||
|
-do-jar-without-manifest: JAR building (if you are not using a manifest)
|
||||||
|
run: execution of project
|
||||||
|
-javadoc-build: Javadoc generation
|
||||||
|
test-report: JUnit report generation
|
||||||
|
|
||||||
|
An example of overriding the target for project execution could look like this:
|
||||||
|
|
||||||
|
<target name="run" depends="desktopgui-impl.jar">
|
||||||
|
<exec dir="bin" executable="launcher.exe">
|
||||||
|
<arg file="${dist.jar}"/>
|
||||||
|
</exec>
|
||||||
|
</target>
|
||||||
|
|
||||||
|
Notice that the overridden target depends on the jar target and not only on
|
||||||
|
the compile target as the regular run target does. Again, for a list of available
|
||||||
|
properties which you can use, check the target you are overriding in the
|
||||||
|
nbproject/build-impl.xml file.
|
||||||
|
|
||||||
|
-->
|
||||||
|
</project>
|
261
apps/desktopgui/desktopgui/resources/howto/howto.html
Normal file
261
apps/desktopgui/desktopgui/resources/howto/howto.html
Normal file
@ -0,0 +1,261 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Small Guide to I2P</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Small Guide to I2P</h1>
|
||||||
|
|
||||||
|
<h2>So, what's this all about?</h2>
|
||||||
|
|
||||||
|
<p>I2P builds up a new net inside the usual internet, connecting nodes together
|
||||||
|
via encrypted connections.
|
||||||
|
It is a JAVA prgram with its most used part (the encryption of the data) written
|
||||||
|
in handoptimized assembler code.
|
||||||
|
It will use your bandwith, your RAM and your CPU. It will use them all up if you
|
||||||
|
do not limit it.
|
||||||
|
I2P will route unknown traffic through your node, even stuff you dislike.
|
||||||
|
As that data is encrypted, nobody knows whats data went to or drom your node.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
First, ALWAYS use the latest stable release.
|
||||||
|
Development releases are called "mtn version" and are marked with a -, e.g.
|
||||||
|
0.6.5-1. Those are usually useable by all but could do harm to your I2P
|
||||||
|
experience.
|
||||||
|
You can get the latest MTN builds from my eepsite echelon.i2p, but always
|
||||||
|
remember: I built them, you need to trust me not to changed the code!
|
||||||
|
After you get the right "i2pupdate.zip" file, put that file into the I2P
|
||||||
|
directory and hit restart on the router console http://127.0.0.1:7657.
|
||||||
|
Do NOT deflate the zip file!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I2P is very dynamic - after startup it tries to get known to other I2P routers
|
||||||
|
and measures their speed - you need to wait some 10-120 minutes until your
|
||||||
|
I2P router knows enough other ones to obtain full power of I2P.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Filesharing</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I2P is able to do anonymous filesharing.
|
||||||
|
But as there are NO gateways between real net and I2P, you can only share/
|
||||||
|
download torrents from within I2P. Look e.g. postman.i2p or planet.i2p.
|
||||||
|
You CANNOT use azureus, utorrent or any other usual client.
|
||||||
|
You cannot download anonymous torrents from mininova, piratebay or else.
|
||||||
|
You need to use I2P internal torrents and I2P aware programs like
|
||||||
|
I2Psnark (builtin, suitable for 1-20 torrents)
|
||||||
|
I2PRufus (external, python, high CPU load, suitable >20 torrents) http://echelon.i2p/i2prufus
|
||||||
|
I2P-BT (external, python)
|
||||||
|
I2PsnarkXL (mod of I2Psnark made by fwd)
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
There are also gnutella and edonkey clients:
|
||||||
|
i2phex for gnutella (http://echelon.i2p/i2phex)
|
||||||
|
imule for edonkey (http://echelon.i2p/imule)
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Remember, as I2P uses other routers to route your traffic via 1-6 other PCs,
|
||||||
|
your transferrates in P2P are slower than in usual internet.
|
||||||
|
But you are anonymous, no one can easily (within 2 months-2 years) get your IP!
|
||||||
|
torrents inside of I2P reaches up to 50 kb/sec, usual are 10-20 kb/sec per torrent
|
||||||
|
i2phex reaches up to 20 kb/sec, usually 5-10 kb/sec
|
||||||
|
imule in times reaches 10 kb/sec, usually 5-10 kb/sec
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
In I2PHex and imule you can just tell "share file or directory", in torrent
|
||||||
|
you need to create a .torrent file and upload that (and ONLY that small .torrent)
|
||||||
|
file to the trackers like tracker.postman.i2p/
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I2P is a smaller net (1000 users) which grows slowly. As of which amount of shared
|
||||||
|
data will slowly rise.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I2P is anonymous and it does not censor - there is no administrator.
|
||||||
|
There IS unwanted stuff like kiddyporn, nazism, or else.
|
||||||
|
If you dislike all this, do not use I2P.
|
||||||
|
There is NO way to prohibite this stuff to appear in a anonymous net like I2P.
|
||||||
|
(as that stuff is available shows the anonymity and transfer function of I2P
|
||||||
|
is working well enough)
|
||||||
|
You can delete the destinations in question from your local hosts.txt file (or
|
||||||
|
deface them) which will partly prevent you to reach those bad sies by accident.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Internet (the websites)</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Only one outproxy (gateway I2P - webpages in usual Internet) is working.
|
||||||
|
It is NOT official from I2P, I2P does work without.
|
||||||
|
If that outproxy is slow, offline, gone,.. I2P still works on and cannot do
|
||||||
|
anything to change that failure.
|
||||||
|
That outproxy translates usual internet webpages into the I2P net and you can
|
||||||
|
reach them via your Router.
|
||||||
|
The best way for usual webpages is TOR, not that outproxy.
|
||||||
|
Remember: the owner of the outproxy got ALL traffic from all I2P users
|
||||||
|
visiting Internet pages and will risk that into the police!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This proxy is false.i2p. In newer I2P routers it is enabled, but not in
|
||||||
|
older ones. Go to http://127.0.0.1:7657/i2ptunnel/index.jsp tunnels page and
|
||||||
|
click on the eepProxy tunnel. Change the entry for the "Outproxies" to false.i2p
|
||||||
|
and save. On the tunnels page, stop the epproxy tunnel and start it again,
|
||||||
|
now your router will use the false.i2p outproxy.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
No other (known) gateways are setup and running. No one we know will run
|
||||||
|
the gateway for torrent or any other P2P data (and risk his life).
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Bandwidth</h2>
|
||||||
|
|
||||||
|
<p>http://127.0.0.1:7657/config.jsp</p>
|
||||||
|
|
||||||
|
<p>Setup your bandwith wisely. Know your linespeed!</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
E.g. most common terms are:
|
||||||
|
1Mbit = roughly 100 kbyte/sec
|
||||||
|
10 MBit = roughly 1100 kbyte/sec
|
||||||
|
512 kbit = roughly 50 kbyte/sec
|
||||||
|
or in germany:
|
||||||
|
16000er = roughly 1500 kbyte/sec
|
||||||
|
6000er = roughly 600 kbyte/sec
|
||||||
|
1000er = roughly 100 kb/sec
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Set your bandwith limits to 10% under your line speed and burst rate to
|
||||||
|
your line speed.
|
||||||
|
Set the bandwith share percentage to:
|
||||||
|
>80% if lowest bandwith setting is >50k
|
||||||
|
>50% if lowest bandwith setting is >30k
|
||||||
|
>20% if lowest bandwith setting is >16k
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>There is no shared bandwith under 16k.</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Limit your participating tunnels (shared bandwith) on:
|
||||||
|
http://127.0.0.1:7657/configadvanced.jsp
|
||||||
|
with the line:
|
||||||
|
router.maxParticipatingTunnels=500
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
2000 is for roughly 600 kb/sec - very high value with high CPU load
|
||||||
|
1000 is for roughly 300 kb/sec
|
||||||
|
600 is a good value for 150-200kb/sec
|
||||||
|
300 is roughly 90 kb/sec
|
||||||
|
150 roughly 50 kb/sec
|
||||||
|
Remember: even failed tunnel requests will result in a part tunnel on the hops in between!
|
||||||
|
Those said, there are far more part tunnels unused than used in the live net under load, which
|
||||||
|
results in slower bandwith per tunnel in the end.
|
||||||
|
It is wise to first limit the bandwith and afterwards the part tunnels, e.g. set some more part
|
||||||
|
tunnels and let I2P reach the bandwith limit instead of the part tunnels limit!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>What is shared bandwidth?</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I2P transports your date from the client to the server through 1-6 hops
|
||||||
|
(other I2P routers). Each of this hops sees the data from you as "participating
|
||||||
|
tunnel" - which is the shared bandwith of them.
|
||||||
|
With this in mind, I2P needs some amount of this shared bandwith at some
|
||||||
|
amount of routers.
|
||||||
|
Share as much as you are able of - others will thank you!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
With the "share percentage" set like above, you will obtain enough speed for
|
||||||
|
your own traffic and obtain some participating tunnels (if >16kb/sec) with some
|
||||||
|
noise traffic to hide your traffic in the stream.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
With release 0.6.5 there is some method to prefer your own traffic ahead
|
||||||
|
of shared traffic which will result in better experience to you!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Addressbook</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
I2P uses a local addressbook to link short DNS names with the internal used 512bit
|
||||||
|
hashes (which are destination IDs).
|
||||||
|
Those links are saved insside the hosts.txt and userhosts.txt files in the i2p
|
||||||
|
directory.
|
||||||
|
Hosts which are not in those files cannot be reached via the short DNS names
|
||||||
|
and a error message with "jumper links" will appear. Those links will ask
|
||||||
|
some hosts services and forward to the correct site (if the site is known to them).
|
||||||
|
Those hosts services just made a form to add new "hosts" and those results public
|
||||||
|
available.
|
||||||
|
You can subscribe to those hosts service and let your hosts.txt file be updated
|
||||||
|
automatic. Go to http://127.0.0.1:7657/susidns/subscriptions.jsp SusiDNS
|
||||||
|
and enter the hosts services into the textbox (and save afterwards):
|
||||||
|
http://www.i2p2.i2p/hosts.txt
|
||||||
|
http://stats.i2p/cgi-bin/newhosts.txt
|
||||||
|
http://tino.i2p/hosts.txt
|
||||||
|
http://i2host.i2p/cgi-bin/i2hostag
|
||||||
|
You can add one of them, two or all.
|
||||||
|
SusiDNS will now ask those hosts for new entries to the hosts.txt and those
|
||||||
|
will be added to your hosts.txt. The userhosts.txt will ONLY be updated by
|
||||||
|
yourself (the user) and not be published into the net!
|
||||||
|
Remember, names once set could not be changed! If you loose your key (destination
|
||||||
|
ID) to your eepsite, service,..., there is no way to change the linking
|
||||||
|
between the DNS name and the (lost) destination ID automatic! Only manual by each
|
||||||
|
user itself - great topic to discuss of need to renew DNS hostnames.
|
||||||
|
As this subscription will not update old entries, you can "deface" unwanted
|
||||||
|
eepsites with a false key and if you hit the bad name in browser by accident,
|
||||||
|
you will not see the bad stuff!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Out of Memory errors </h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
If your router hits the Out of Memory error - check your logs!
|
||||||
|
Usual point for OOM are to much torrents in i2psnark - i2psnark is a real
|
||||||
|
memory hogg and >10 torrents it requiers hell a lot of memory!
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Maybe it is possible for you to increase the wrapper memory config.
|
||||||
|
This ONLY works if you start the I2P service restartable with console
|
||||||
|
(on Windows).
|
||||||
|
In I2P directory edit the wrapper.config file and change the values:
|
||||||
|
wrapper.java.maxmemory=256 (or even to 512, IF possible)
|
||||||
|
Afterwards shutdown I2P complete (the service) and restart it.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Blocklists</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Sometimes attackers trying to flood the I2P net and try to do some harm.
|
||||||
|
And some folks setting localnet IPs as their internet reachable address.
|
||||||
|
To prevent those bad router to harm the local router, I2P implemented
|
||||||
|
a local blocklist system. It is NOT integrated automatic as it could
|
||||||
|
really harm your I2P experience if setup the wrong way.
|
||||||
|
The way to enable blocklists is:
|
||||||
|
Get the file http://zzz.i2p/files/blocklist.txt and copy this file into the
|
||||||
|
I2P directory.
|
||||||
|
On http://127.0.0.1:7657/configadvanced.jsp set the option
|
||||||
|
router.blocklist.enable=true - click on Apply and restart the router
|
||||||
|
with the restart link left on router console.
|
||||||
|
The blockfile.txt file follows a special order, you<6F>ll get it if you read it.
|
||||||
|
The first entry is the reason to be shown on http://127.0.0.1:7657/profiles.jsp
|
||||||
|
at the bottom in the shitlist section.
|
||||||
|
The second entry is the IP or the dest ID of a router.
|
||||||
|
Right now there are only private subnets in the blocklist AND one chinese router
|
||||||
|
which floods the floodfill DB while restarting every few minutes with a different
|
||||||
|
router ID and far to less bandwith for being a floodfill router.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>(By echelon -- echelon.i2p )</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
apps/desktopgui/desktopgui/resources/logo/logo.jpg
Normal file
BIN
apps/desktopgui/desktopgui/resources/logo/logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
apps/desktopgui/lib/appframework.jar
Normal file
BIN
apps/desktopgui/lib/appframework.jar
Normal file
Binary file not shown.
BIN
apps/desktopgui/lib/swing-worker.jar
Normal file
BIN
apps/desktopgui/lib/swing-worker.jar
Normal file
Binary file not shown.
3
apps/desktopgui/manifest.mf
Normal file
3
apps/desktopgui/manifest.mf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Manifest-Version: 1.0
|
||||||
|
X-COMMENT: Main-Class will be added automatically by build
|
||||||
|
|
629
apps/desktopgui/nbproject/build-impl.xml
Normal file
629
apps/desktopgui/nbproject/build-impl.xml
Normal file
@ -0,0 +1,629 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
*** GENERATED FROM project.xml - DO NOT EDIT ***
|
||||||
|
*** EDIT ../build.xml INSTEAD ***
|
||||||
|
|
||||||
|
For the purpose of easier reading the script
|
||||||
|
is divided into following sections:
|
||||||
|
|
||||||
|
- initialization
|
||||||
|
- compilation
|
||||||
|
- jar
|
||||||
|
- execution
|
||||||
|
- debugging
|
||||||
|
- javadoc
|
||||||
|
- junit compilation
|
||||||
|
- junit execution
|
||||||
|
- junit debugging
|
||||||
|
- applet
|
||||||
|
- cleanup
|
||||||
|
|
||||||
|
-->
|
||||||
|
<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="desktopgui-impl">
|
||||||
|
<target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
|
||||||
|
<!--
|
||||||
|
======================
|
||||||
|
INITIALIZATION SECTION
|
||||||
|
======================
|
||||||
|
-->
|
||||||
|
<target name="-pre-init">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init" name="-init-private">
|
||||||
|
<property file="nbproject/private/config.properties"/>
|
||||||
|
<property file="nbproject/private/configs/${config}.properties"/>
|
||||||
|
<property file="nbproject/private/private.properties"/>
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private" name="-init-user">
|
||||||
|
<property file="${user.properties.file}"/>
|
||||||
|
<!-- The two properties below are usually overridden -->
|
||||||
|
<!-- by the active platform. Just a fallback. -->
|
||||||
|
<property name="default.javac.source" value="1.4"/>
|
||||||
|
<property name="default.javac.target" value="1.4"/>
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private,-init-user" name="-init-project">
|
||||||
|
<property file="nbproject/configs/${config}.properties"/>
|
||||||
|
<property file="nbproject/project.properties"/>
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
|
||||||
|
<available file="${manifest.file}" property="manifest.available"/>
|
||||||
|
<condition property="manifest.available+main.class">
|
||||||
|
<and>
|
||||||
|
<isset property="manifest.available"/>
|
||||||
|
<isset property="main.class"/>
|
||||||
|
<not>
|
||||||
|
<equals arg1="${main.class}" arg2="" trim="true"/>
|
||||||
|
</not>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<condition property="manifest.available+main.class+mkdist.available">
|
||||||
|
<and>
|
||||||
|
<istrue value="${manifest.available+main.class}"/>
|
||||||
|
<isset property="libs.CopyLibs.classpath"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<condition property="have.tests">
|
||||||
|
<or>
|
||||||
|
<available file="${test.src.dir}"/>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
<condition property="have.sources">
|
||||||
|
<or>
|
||||||
|
<available file="${src.dir}"/>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
<condition property="netbeans.home+have.tests">
|
||||||
|
<and>
|
||||||
|
<isset property="netbeans.home"/>
|
||||||
|
<isset property="have.tests"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<condition property="no.javadoc.preview">
|
||||||
|
<and>
|
||||||
|
<isset property="javadoc.preview"/>
|
||||||
|
<isfalse value="${javadoc.preview}"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<property name="run.jvmargs" value=""/>
|
||||||
|
<property name="javac.compilerargs" value=""/>
|
||||||
|
<property name="work.dir" value="${basedir}"/>
|
||||||
|
<condition property="no.deps">
|
||||||
|
<and>
|
||||||
|
<istrue value="${no.dependencies}"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<property name="javac.debug" value="true"/>
|
||||||
|
<property name="javadoc.preview" value="true"/>
|
||||||
|
<property name="application.args" value=""/>
|
||||||
|
<property name="source.encoding" value="${file.encoding}"/>
|
||||||
|
<condition property="javadoc.encoding.used" value="${javadoc.encoding}">
|
||||||
|
<and>
|
||||||
|
<isset property="javadoc.encoding"/>
|
||||||
|
<not>
|
||||||
|
<equals arg1="${javadoc.encoding}" arg2=""/>
|
||||||
|
</not>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
<property name="javadoc.encoding.used" value="${source.encoding}"/>
|
||||||
|
<property name="includes" value="**"/>
|
||||||
|
<property name="excludes" value=""/>
|
||||||
|
<property name="do.depend" value="false"/>
|
||||||
|
<condition property="do.depend.true">
|
||||||
|
<istrue value="${do.depend}"/>
|
||||||
|
</condition>
|
||||||
|
<condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
|
||||||
|
<and>
|
||||||
|
<isset property="jaxws.endorsed.dir"/>
|
||||||
|
<available file="nbproject/jaxws-build.xml"/>
|
||||||
|
</and>
|
||||||
|
</condition>
|
||||||
|
</target>
|
||||||
|
<target name="-post-init">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
|
||||||
|
<fail unless="src.dir">Must set src.dir</fail>
|
||||||
|
<fail unless="test.src.dir">Must set test.src.dir</fail>
|
||||||
|
<fail unless="build.dir">Must set build.dir</fail>
|
||||||
|
<fail unless="dist.dir">Must set dist.dir</fail>
|
||||||
|
<fail unless="build.classes.dir">Must set build.classes.dir</fail>
|
||||||
|
<fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
|
||||||
|
<fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
|
||||||
|
<fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
|
||||||
|
<fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
|
||||||
|
<fail unless="dist.jar">Must set dist.jar</fail>
|
||||||
|
</target>
|
||||||
|
<target name="-init-macrodef-property">
|
||||||
|
<macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<attribute name="name"/>
|
||||||
|
<attribute name="value"/>
|
||||||
|
<sequential>
|
||||||
|
<property name="@{name}" value="${@{value}}"/>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-macrodef-javac">
|
||||||
|
<macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${src.dir}" name="srcdir"/>
|
||||||
|
<attribute default="${build.classes.dir}" name="destdir"/>
|
||||||
|
<attribute default="${javac.classpath}" name="classpath"/>
|
||||||
|
<attribute default="${includes}" name="includes"/>
|
||||||
|
<attribute default="${excludes}" name="excludes"/>
|
||||||
|
<attribute default="${javac.debug}" name="debug"/>
|
||||||
|
<attribute default="" name="sourcepath"/>
|
||||||
|
<element name="customize" optional="true"/>
|
||||||
|
<sequential>
|
||||||
|
<javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}">
|
||||||
|
<classpath>
|
||||||
|
<path path="@{classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
|
||||||
|
<customize/>
|
||||||
|
</javac>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
<macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${src.dir}" name="srcdir"/>
|
||||||
|
<attribute default="${build.classes.dir}" name="destdir"/>
|
||||||
|
<attribute default="${javac.classpath}" name="classpath"/>
|
||||||
|
<sequential>
|
||||||
|
<depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
|
||||||
|
<classpath>
|
||||||
|
<path path="@{classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
</depend>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
<macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${build.classes.dir}" name="destdir"/>
|
||||||
|
<sequential>
|
||||||
|
<fail unless="javac.includes">Must set javac.includes</fail>
|
||||||
|
<pathconvert pathsep="," property="javac.includes.binary">
|
||||||
|
<path>
|
||||||
|
<filelist dir="@{destdir}" files="${javac.includes}"/>
|
||||||
|
</path>
|
||||||
|
<globmapper from="*.java" to="*.class"/>
|
||||||
|
</pathconvert>
|
||||||
|
<delete>
|
||||||
|
<files includes="${javac.includes.binary}"/>
|
||||||
|
</delete>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-macrodef-junit">
|
||||||
|
<macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${includes}" name="includes"/>
|
||||||
|
<attribute default="${excludes}" name="excludes"/>
|
||||||
|
<attribute default="**" name="testincludes"/>
|
||||||
|
<sequential>
|
||||||
|
<junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
|
||||||
|
<batchtest todir="${build.test.results.dir}">
|
||||||
|
<fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
|
||||||
|
<filename name="@{testincludes}"/>
|
||||||
|
</fileset>
|
||||||
|
</batchtest>
|
||||||
|
<classpath>
|
||||||
|
<path path="${run.test.classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<syspropertyset>
|
||||||
|
<propertyref prefix="test-sys-prop."/>
|
||||||
|
<mapper from="test-sys-prop.*" to="*" type="glob"/>
|
||||||
|
</syspropertyset>
|
||||||
|
<formatter type="brief" usefile="false"/>
|
||||||
|
<formatter type="xml"/>
|
||||||
|
<jvmarg line="${run.jvmargs}"/>
|
||||||
|
</junit>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-macrodef-nbjpda">
|
||||||
|
<macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<attribute default="${main.class}" name="name"/>
|
||||||
|
<attribute default="${debug.classpath}" name="classpath"/>
|
||||||
|
<attribute default="" name="stopclassname"/>
|
||||||
|
<sequential>
|
||||||
|
<nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="dt_socket">
|
||||||
|
<classpath>
|
||||||
|
<path path="@{classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
</nbjpdastart>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
<macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<attribute default="${build.classes.dir}" name="dir"/>
|
||||||
|
<sequential>
|
||||||
|
<nbjpdareload>
|
||||||
|
<fileset dir="@{dir}" includes="${fix.classes}">
|
||||||
|
<include name="${fix.includes}*.class"/>
|
||||||
|
</fileset>
|
||||||
|
</nbjpdareload>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-debug-args">
|
||||||
|
<property name="version-output" value="java version "${ant.java.version}"/>
|
||||||
|
<condition property="have-jdk-older-than-1.4">
|
||||||
|
<or>
|
||||||
|
<contains string="${version-output}" substring="java version "1.0"/>
|
||||||
|
<contains string="${version-output}" substring="java version "1.1"/>
|
||||||
|
<contains string="${version-output}" substring="java version "1.2"/>
|
||||||
|
<contains string="${version-output}" substring="java version "1.3"/>
|
||||||
|
</or>
|
||||||
|
</condition>
|
||||||
|
<condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
|
||||||
|
<istrue value="${have-jdk-older-than-1.4}"/>
|
||||||
|
</condition>
|
||||||
|
</target>
|
||||||
|
<target depends="-init-debug-args" name="-init-macrodef-debug">
|
||||||
|
<macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<attribute default="${main.class}" name="classname"/>
|
||||||
|
<attribute default="${debug.classpath}" name="classpath"/>
|
||||||
|
<element name="customize" optional="true"/>
|
||||||
|
<sequential>
|
||||||
|
<java classname="@{classname}" dir="${work.dir}" fork="true">
|
||||||
|
<jvmarg line="${debug-args-line}"/>
|
||||||
|
<jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
|
||||||
|
<jvmarg line="${run.jvmargs}"/>
|
||||||
|
<classpath>
|
||||||
|
<path path="@{classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<syspropertyset>
|
||||||
|
<propertyref prefix="run-sys-prop."/>
|
||||||
|
<mapper from="run-sys-prop.*" to="*" type="glob"/>
|
||||||
|
</syspropertyset>
|
||||||
|
<customize/>
|
||||||
|
</java>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-macrodef-java">
|
||||||
|
<macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<attribute default="${main.class}" name="classname"/>
|
||||||
|
<element name="customize" optional="true"/>
|
||||||
|
<sequential>
|
||||||
|
<java classname="@{classname}" dir="${work.dir}" fork="true">
|
||||||
|
<jvmarg line="${run.jvmargs}"/>
|
||||||
|
<classpath>
|
||||||
|
<path path="${run.classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<syspropertyset>
|
||||||
|
<propertyref prefix="run-sys-prop."/>
|
||||||
|
<mapper from="run-sys-prop.*" to="*" type="glob"/>
|
||||||
|
</syspropertyset>
|
||||||
|
<customize/>
|
||||||
|
</java>
|
||||||
|
</sequential>
|
||||||
|
</macrodef>
|
||||||
|
</target>
|
||||||
|
<target name="-init-presetdef-jar">
|
||||||
|
<presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
|
||||||
|
<jar compress="${jar.compress}" jarfile="${dist.jar}">
|
||||||
|
<j2seproject1:fileset dir="${build.classes.dir}"/>
|
||||||
|
</jar>
|
||||||
|
</presetdef>
|
||||||
|
</target>
|
||||||
|
<target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" name="init"/>
|
||||||
|
<!--
|
||||||
|
===================
|
||||||
|
COMPILATION SECTION
|
||||||
|
===================
|
||||||
|
-->
|
||||||
|
<target depends="init" name="deps-jar" unless="no.deps"/>
|
||||||
|
<target depends="init,deps-jar" name="-pre-pre-compile">
|
||||||
|
<mkdir dir="${build.classes.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-pre-compile">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target if="do.depend.true" name="-compile-depend">
|
||||||
|
<j2seproject3:depend/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
|
||||||
|
<j2seproject3:javac/>
|
||||||
|
<copy todir="${build.classes.dir}">
|
||||||
|
<fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
|
||||||
|
</copy>
|
||||||
|
</target>
|
||||||
|
<target name="-post-compile">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
|
||||||
|
<target name="-pre-compile-single">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
|
||||||
|
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
|
||||||
|
<j2seproject3:force-recompile/>
|
||||||
|
<j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-post-compile-single">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
|
||||||
|
<!--
|
||||||
|
====================
|
||||||
|
JAR BUILDING SECTION
|
||||||
|
====================
|
||||||
|
-->
|
||||||
|
<target depends="init" name="-pre-pre-jar">
|
||||||
|
<dirname file="${dist.jar}" property="dist.jar.dir"/>
|
||||||
|
<mkdir dir="${dist.jar.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-pre-jar">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
|
||||||
|
<j2seproject1:jar/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
|
||||||
|
<j2seproject1:jar manifest="${manifest.file}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
|
||||||
|
<j2seproject1:jar manifest="${manifest.file}">
|
||||||
|
<j2seproject1:manifest>
|
||||||
|
<j2seproject1:attribute name="Main-Class" value="${main.class}"/>
|
||||||
|
</j2seproject1:manifest>
|
||||||
|
</j2seproject1:jar>
|
||||||
|
<echo>To run this application from the command line without Ant, try:</echo>
|
||||||
|
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
|
||||||
|
<property location="${dist.jar}" name="dist.jar.resolved"/>
|
||||||
|
<pathconvert property="run.classpath.with.dist.jar">
|
||||||
|
<path path="${run.classpath}"/>
|
||||||
|
<map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
|
||||||
|
</pathconvert>
|
||||||
|
<echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
|
||||||
|
<property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
|
||||||
|
<pathconvert property="run.classpath.without.build.classes.dir">
|
||||||
|
<path path="${run.classpath}"/>
|
||||||
|
<map from="${build.classes.dir.resolved}" to=""/>
|
||||||
|
</pathconvert>
|
||||||
|
<pathconvert pathsep=" " property="jar.classpath">
|
||||||
|
<path path="${run.classpath.without.build.classes.dir}"/>
|
||||||
|
<chainedmapper>
|
||||||
|
<flattenmapper/>
|
||||||
|
<globmapper from="*" to="lib/*"/>
|
||||||
|
</chainedmapper>
|
||||||
|
</pathconvert>
|
||||||
|
<taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
|
||||||
|
<copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
|
||||||
|
<fileset dir="${build.classes.dir}"/>
|
||||||
|
<manifest>
|
||||||
|
<attribute name="Main-Class" value="${main.class}"/>
|
||||||
|
<attribute name="Class-Path" value="${jar.classpath}"/>
|
||||||
|
</manifest>
|
||||||
|
</copylibs>
|
||||||
|
<echo>To run this application from the command line without Ant, try:</echo>
|
||||||
|
<property location="${dist.jar}" name="dist.jar.resolved"/>
|
||||||
|
<echo>java -jar "${dist.jar.resolved}"</echo>
|
||||||
|
</target>
|
||||||
|
<target name="-post-jar">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
|
||||||
|
<!--
|
||||||
|
=================
|
||||||
|
EXECUTION SECTION
|
||||||
|
=================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile" description="Run a main class." name="run">
|
||||||
|
<j2seproject1:java>
|
||||||
|
<customize>
|
||||||
|
<arg line="${application.args}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject1:java>
|
||||||
|
</target>
|
||||||
|
<target name="-do-not-recompile">
|
||||||
|
<property name="javac.includes.binary" value=""/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-do-not-recompile,compile-single" name="run-single">
|
||||||
|
<fail unless="run.class">Must select one file in the IDE or set run.class</fail>
|
||||||
|
<j2seproject1:java classname="${run.class}"/>
|
||||||
|
</target>
|
||||||
|
<!--
|
||||||
|
=================
|
||||||
|
DEBUGGING SECTION
|
||||||
|
=================
|
||||||
|
-->
|
||||||
|
<target depends="init" if="netbeans.home" name="-debug-start-debugger">
|
||||||
|
<j2seproject1:nbjpdastart name="${debug.class}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile" name="-debug-start-debuggee">
|
||||||
|
<j2seproject3:debug>
|
||||||
|
<customize>
|
||||||
|
<arg line="${application.args}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject3:debug>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
|
||||||
|
<target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
|
||||||
|
<j2seproject1:nbjpdastart stopclassname="${main.class}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
|
||||||
|
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
|
||||||
|
<fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
|
||||||
|
<j2seproject3:debug classname="${debug.class}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
|
||||||
|
<target depends="init" name="-pre-debug-fix">
|
||||||
|
<fail unless="fix.includes">Must set fix.includes</fail>
|
||||||
|
<property name="javac.includes" value="${fix.includes}.java"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
|
||||||
|
<j2seproject1:nbjpdareload/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
|
||||||
|
<!--
|
||||||
|
===============
|
||||||
|
JAVADOC SECTION
|
||||||
|
===============
|
||||||
|
-->
|
||||||
|
<target depends="init" name="-javadoc-build">
|
||||||
|
<mkdir dir="${dist.javadoc.dir}"/>
|
||||||
|
<javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
|
||||||
|
<classpath>
|
||||||
|
<path path="${javac.classpath}"/>
|
||||||
|
</classpath>
|
||||||
|
<fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
|
||||||
|
<filename name="**/*.java"/>
|
||||||
|
</fileset>
|
||||||
|
</javadoc>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
|
||||||
|
<nbbrowse file="${dist.javadoc.dir}/index.html"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
|
||||||
|
<!--
|
||||||
|
=========================
|
||||||
|
JUNIT COMPILATION SECTION
|
||||||
|
=========================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
|
||||||
|
<mkdir dir="${build.test.classes.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-pre-compile-test">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target if="do.depend.true" name="-compile-test-depend">
|
||||||
|
<j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
|
||||||
|
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
|
||||||
|
<copy todir="${build.test.classes.dir}">
|
||||||
|
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
|
||||||
|
</copy>
|
||||||
|
</target>
|
||||||
|
<target name="-post-compile-test">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
|
||||||
|
<target name="-pre-compile-test-single">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
|
||||||
|
<fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
|
||||||
|
<j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
|
||||||
|
<j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
|
||||||
|
<copy todir="${build.test.classes.dir}">
|
||||||
|
<fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
|
||||||
|
</copy>
|
||||||
|
</target>
|
||||||
|
<target name="-post-compile-test-single">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
|
||||||
|
<!--
|
||||||
|
=======================
|
||||||
|
JUNIT EXECUTION SECTION
|
||||||
|
=======================
|
||||||
|
-->
|
||||||
|
<target depends="init" if="have.tests" name="-pre-test-run">
|
||||||
|
<mkdir dir="${build.test.results.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
|
||||||
|
<j2seproject3:junit testincludes="**/*Test.java"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
|
||||||
|
<fail if="tests.failed">Some tests failed; see details above.</fail>
|
||||||
|
</target>
|
||||||
|
<target depends="init" if="have.tests" name="test-report"/>
|
||||||
|
<target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
|
||||||
|
<target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
|
||||||
|
<target depends="init" if="have.tests" name="-pre-test-run-single">
|
||||||
|
<mkdir dir="${build.test.results.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
|
||||||
|
<fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
|
||||||
|
<j2seproject3:junit excludes="" includes="${test.includes}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
|
||||||
|
<fail if="tests.failed">Some tests failed; see details above.</fail>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
|
||||||
|
<!--
|
||||||
|
=======================
|
||||||
|
JUNIT DEBUGGING SECTION
|
||||||
|
=======================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
|
||||||
|
<fail unless="test.class">Must select one file in the IDE or set test.class</fail>
|
||||||
|
<property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
|
||||||
|
<delete file="${test.report.file}"/>
|
||||||
|
<mkdir dir="${build.test.results.dir}"/>
|
||||||
|
<j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
|
||||||
|
<customize>
|
||||||
|
<syspropertyset>
|
||||||
|
<propertyref prefix="test-sys-prop."/>
|
||||||
|
<mapper from="test-sys-prop.*" to="*" type="glob"/>
|
||||||
|
</syspropertyset>
|
||||||
|
<arg value="${test.class}"/>
|
||||||
|
<arg value="showoutput=true"/>
|
||||||
|
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
|
||||||
|
<arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject3:debug>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
|
||||||
|
<j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
|
||||||
|
<target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
|
||||||
|
<j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
|
||||||
|
<!--
|
||||||
|
=========================
|
||||||
|
APPLET EXECUTION SECTION
|
||||||
|
=========================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile-single" name="run-applet">
|
||||||
|
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
|
||||||
|
<j2seproject1:java classname="sun.applet.AppletViewer">
|
||||||
|
<customize>
|
||||||
|
<arg value="${applet.url}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject1:java>
|
||||||
|
</target>
|
||||||
|
<!--
|
||||||
|
=========================
|
||||||
|
APPLET DEBUGGING SECTION
|
||||||
|
=========================
|
||||||
|
-->
|
||||||
|
<target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
|
||||||
|
<fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
|
||||||
|
<j2seproject3:debug classname="sun.applet.AppletViewer">
|
||||||
|
<customize>
|
||||||
|
<arg value="${applet.url}"/>
|
||||||
|
</customize>
|
||||||
|
</j2seproject3:debug>
|
||||||
|
</target>
|
||||||
|
<target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
|
||||||
|
<!--
|
||||||
|
===============
|
||||||
|
CLEANUP SECTION
|
||||||
|
===============
|
||||||
|
-->
|
||||||
|
<target depends="init" name="deps-clean" unless="no.deps"/>
|
||||||
|
<target depends="init" name="-do-clean">
|
||||||
|
<delete dir="${build.dir}"/>
|
||||||
|
<delete dir="${dist.dir}"/>
|
||||||
|
</target>
|
||||||
|
<target name="-post-clean">
|
||||||
|
<!-- Empty placeholder for easier customization. -->
|
||||||
|
<!-- You can override this target in the ../build.xml file. -->
|
||||||
|
</target>
|
||||||
|
<target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
|
||||||
|
</project>
|
8
apps/desktopgui/nbproject/genfiles.properties
Normal file
8
apps/desktopgui/nbproject/genfiles.properties
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
build.xml.data.CRC32=c4b345cd
|
||||||
|
build.xml.script.CRC32=9785bb9a
|
||||||
|
build.xml.stylesheet.CRC32=be360661
|
||||||
|
# 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=c4b345cd
|
||||||
|
nbproject/build-impl.xml.script.CRC32=74d3fda2
|
||||||
|
nbproject/build-impl.xml.stylesheet.CRC32=487672f9
|
68
apps/desktopgui/nbproject/project.properties
Normal file
68
apps/desktopgui/nbproject/project.properties
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
application.desc=An anonymous communication network.
|
||||||
|
application.homepage=http://www.i2p2.de
|
||||||
|
application.title=I2P Desktop GUI
|
||||||
|
application.vendor=I2P Developers
|
||||||
|
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
|
||||||
|
# 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}/desktopgui.jar
|
||||||
|
dist.javadoc.dir=${dist.dir}/javadoc
|
||||||
|
excludes=
|
||||||
|
file.reference.i2p.jar=../../core/java/build/i2p.jar
|
||||||
|
file.reference.router.jar=../../router/java/build/router.jar
|
||||||
|
includes=**
|
||||||
|
jar.compress=false
|
||||||
|
javac.classpath=\
|
||||||
|
${libs.swing-app-framework.classpath}:\
|
||||||
|
${file.reference.router.jar}:\
|
||||||
|
${file.reference.i2p.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=
|
||||||
|
main.class=desktopgui.Main
|
||||||
|
manifest.file=manifest.mf
|
||||||
|
meta.inf.dir=${src.dir}/META-INF
|
||||||
|
platform.active=default_platform
|
||||||
|
run.classpath=\
|
||||||
|
${javac.classpath}:\
|
||||||
|
${build.classes.dir}
|
||||||
|
# Space-separated list of JVM arguments used when running the project
|
||||||
|
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
|
||||||
|
# or test-sys-prop.name=value to set system properties for unit tests):
|
||||||
|
run.jvmargs=
|
||||||
|
run.test.classpath=\
|
||||||
|
${javac.test.classpath}:\
|
||||||
|
${build.test.classes.dir}
|
||||||
|
source.encoding=UTF-8
|
||||||
|
src.dir=src
|
||||||
|
test.src.dir=test
|
19
apps/desktopgui/nbproject/project.xml
Normal file
19
apps/desktopgui/nbproject/project.xml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||||
|
<type>org.netbeans.modules.java.j2seproject</type>
|
||||||
|
<configuration>
|
||||||
|
<data xmlns="http://www.netbeans.org/ns/j2se-project/3">
|
||||||
|
<name>desktopgui</name>
|
||||||
|
<minimum-ant-version>1.6.5</minimum-ant-version>
|
||||||
|
<source-roots>
|
||||||
|
<root id="src.dir"/>
|
||||||
|
</source-roots>
|
||||||
|
<test-roots>
|
||||||
|
<root id="test.src.dir"/>
|
||||||
|
</test-roots>
|
||||||
|
</data>
|
||||||
|
<swingapp xmlns="http://www.netbeans.org/ns/form-swingapp/1">
|
||||||
|
<application-class name="desktopgui.Main"/>
|
||||||
|
</swingapp>
|
||||||
|
</configuration>
|
||||||
|
</project>
|
@ -0,0 +1 @@
|
|||||||
|
desktopgui.Main
|
109
apps/desktopgui/src/desktopgui/Main.java
Normal file
109
apps/desktopgui/src/desktopgui/Main.java
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
package desktopgui;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Main.java
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import gui.Tray;
|
||||||
|
import gui.SpeedSelector;
|
||||||
|
import java.awt.SystemTray;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import javax.swing.UIManager;
|
||||||
|
import javax.swing.UnsupportedLookAndFeelException;
|
||||||
|
import org.jdesktop.application.Application;
|
||||||
|
import org.jdesktop.application.SingleFrameApplication;
|
||||||
|
import persistence.PropertyManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The main class of the application.
|
||||||
|
*/
|
||||||
|
public class Main extends SingleFrameApplication {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* At startup create and show the main frame of the application.
|
||||||
|
*/
|
||||||
|
@Override protected void startup() {
|
||||||
|
Properties props = PropertyManager.loadProps();
|
||||||
|
|
||||||
|
//First load: present screen with information (to help choose I2P settings)
|
||||||
|
if(props.getProperty(FIRSTLOAD).equals("true")) {
|
||||||
|
props.setProperty(FIRSTLOAD, "false");
|
||||||
|
PropertyManager.saveProps(props);
|
||||||
|
new SpeedSelector(); //Start speed selector GUI
|
||||||
|
}
|
||||||
|
|
||||||
|
if(SystemTray.isSupported()) {
|
||||||
|
tray = new Tray();
|
||||||
|
}
|
||||||
|
else { //Alternative if SystemTray is not supported on the platform
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 Main
|
||||||
|
*/
|
||||||
|
public static Main getApplication() {
|
||||||
|
return Application.getInstance(Main.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Main method launching the application.
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.setProperty("java.awt.headless", "false"); //Make sure I2P is running in GUI mode for our application
|
||||||
|
try {
|
||||||
|
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
||||||
|
} catch (ClassNotFoundException ex) {
|
||||||
|
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
} catch (InstantiationException ex) {
|
||||||
|
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
} catch (IllegalAccessException ex) {
|
||||||
|
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
} catch (UnsupportedLookAndFeelException ex) {
|
||||||
|
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
Main main = getApplication();
|
||||||
|
main.launchForeverLoop();
|
||||||
|
main.startup();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Avoids the app terminating because no Window is opened anymore.
|
||||||
|
* More info: http://java.sun.com/javase/6/docs/api/java/awt/doc-files/AWTThreadIssues.html#Autoshutdown
|
||||||
|
*/
|
||||||
|
public void launchForeverLoop() {
|
||||||
|
Runnable r = new Runnable() {
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
Object o = new Object();
|
||||||
|
synchronized (o) {
|
||||||
|
o.wait();
|
||||||
|
}
|
||||||
|
} catch (InterruptedException ie) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Thread t = new Thread(r);
|
||||||
|
t.setDaemon(false);
|
||||||
|
t.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Tray tray = null;
|
||||||
|
///Indicates if this is the first time the application loads
|
||||||
|
///(is only true at the very start of loading the first time!)
|
||||||
|
private static final String FIRSTLOAD = "firstLoad";
|
||||||
|
}
|
11
apps/desktopgui/src/desktopgui/resources/Main.properties
Normal file
11
apps/desktopgui/src/desktopgui/resources/Main.properties
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# Application global resources
|
||||||
|
|
||||||
|
Application.name = desktopgui
|
||||||
|
Application.title = I2P Desktop GUI
|
||||||
|
Application.version = 0.7.1
|
||||||
|
Application.vendor = I2P Developers
|
||||||
|
Application.homepage = http://www.i2p2.de
|
||||||
|
Application.description = An anonymous communication network.
|
||||||
|
Application.vendorId = I2P
|
||||||
|
Application.id = ${Application.name}
|
||||||
|
Application.lookAndFeel = system
|
160
apps/desktopgui/src/gui/SpeedSelector.form
Normal file
160
apps/desktopgui/src/gui/SpeedSelector.form
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
|
<Form version="1.5" maxVersion="1.6" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
|
||||||
|
<Properties>
|
||||||
|
<Property name="defaultCloseOperation" type="int" value="2"/>
|
||||||
|
<Property name="title" type="java.lang.String" resourceKey="Form.title"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="Form" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<SyntheticProperties>
|
||||||
|
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
|
||||||
|
</SyntheticProperties>
|
||||||
|
<AuxValues>
|
||||||
|
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
|
||||||
|
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
|
||||||
|
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
||||||
|
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
||||||
|
</AuxValues>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace min="-2" pref="49" max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="downloadLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="uploadLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<Component id="downloadChoice" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="kbps2" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Group type="103" alignment="0" groupAlignment="0" max="-2" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="1">
|
||||||
|
<Component id="uploadChoice" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="kbps1" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Group type="102" alignment="1" attributes="0">
|
||||||
|
<Component id="nextButton" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace min="-2" pref="34" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace min="-2" pref="40" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace min="-2" pref="67" max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="uploadLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="uploadChoice" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="kbps1" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="downloadLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="downloadChoice" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="kbps2" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace pref="173" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Group type="102" alignment="1" attributes="0">
|
||||||
|
<EmptySpace pref="271" max="32767" attributes="0"/>
|
||||||
|
<Component id="nextButton" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JButton" name="nextButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="nextButton.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="nextButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="nextButtonMouseClicked"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="uploadLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="uploadLabel.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="uploadLabel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="downloadLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="downloadLabel.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="downloadLabel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JComboBox" name="uploadChoice">
|
||||||
|
<Properties>
|
||||||
|
<Property name="editable" type="boolean" value="true"/>
|
||||||
|
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
|
||||||
|
<StringArray count="11">
|
||||||
|
<StringItem index="0" value="100"/>
|
||||||
|
<StringItem index="1" value="200"/>
|
||||||
|
<StringItem index="2" value="500"/>
|
||||||
|
<StringItem index="3" value="1000"/>
|
||||||
|
<StringItem index="4" value="2000"/>
|
||||||
|
<StringItem index="5" value="4000"/>
|
||||||
|
<StringItem index="6" value="8000"/>
|
||||||
|
<StringItem index="7" value="10000"/>
|
||||||
|
<StringItem index="8" value="20000"/>
|
||||||
|
<StringItem index="9" value="50000"/>
|
||||||
|
<StringItem index="10" value="100000"/>
|
||||||
|
</StringArray>
|
||||||
|
</Property>
|
||||||
|
<Property name="selectedIndex" type="int" value="3"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="uploadChoice" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JComboBox" name="downloadChoice">
|
||||||
|
<Properties>
|
||||||
|
<Property name="editable" type="boolean" value="true"/>
|
||||||
|
<Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
|
||||||
|
<StringArray count="11">
|
||||||
|
<StringItem index="0" value="100"/>
|
||||||
|
<StringItem index="1" value="200"/>
|
||||||
|
<StringItem index="2" value="500"/>
|
||||||
|
<StringItem index="3" value="1000"/>
|
||||||
|
<StringItem index="4" value="2000"/>
|
||||||
|
<StringItem index="5" value="4000"/>
|
||||||
|
<StringItem index="6" value="8000"/>
|
||||||
|
<StringItem index="7" value="10000"/>
|
||||||
|
<StringItem index="8" value="20000"/>
|
||||||
|
<StringItem index="9" value="50000"/>
|
||||||
|
<StringItem index="10" value="100000"/>
|
||||||
|
</StringArray>
|
||||||
|
</Property>
|
||||||
|
<Property name="selectedIndex" type="int" value="3"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="downloadChoice" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="kbps1">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="kbps1.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="kbps1" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="kbps2">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="kbps2.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="kbps2" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Form>
|
176
apps/desktopgui/src/gui/SpeedSelector.java
Normal file
176
apps/desktopgui/src/gui/SpeedSelector.java
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
/*
|
||||||
|
* ProfileSelector.java
|
||||||
|
*
|
||||||
|
* Created on 3 april 2009, 13:57
|
||||||
|
*/
|
||||||
|
|
||||||
|
package gui;
|
||||||
|
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.Point;
|
||||||
|
import java.util.Properties;
|
||||||
|
import javax.swing.JTextField;
|
||||||
|
import persistence.PropertyManager;
|
||||||
|
import util.IntegerVerifier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author mathias
|
||||||
|
*/
|
||||||
|
public class SpeedSelector extends javax.swing.JFrame {
|
||||||
|
|
||||||
|
/** Creates new form ProfileSelector */
|
||||||
|
public SpeedSelector() {
|
||||||
|
this.props = PropertyManager.getProps();
|
||||||
|
initComponents();
|
||||||
|
initComponentsCustom();
|
||||||
|
initSpeeds(props);
|
||||||
|
this.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SpeedSelector(Point point, Dimension dimension) {
|
||||||
|
this();
|
||||||
|
this.setLocation(point);
|
||||||
|
this.setSize(dimension);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void initComponentsCustom() {
|
||||||
|
((JTextField)uploadChoice.getEditor().getEditorComponent()).setInputVerifier(new IntegerVerifier());
|
||||||
|
((JTextField)downloadChoice.getEditor().getEditorComponent()).setInputVerifier(new IntegerVerifier());
|
||||||
|
}
|
||||||
|
|
||||||
|
/** This method is called from within the constructor to
|
||||||
|
* initialize the form.
|
||||||
|
* WARNING: Do NOT modify this code. The content of this method is
|
||||||
|
* always regenerated by the Form Editor.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
|
private void initComponents() {
|
||||||
|
|
||||||
|
nextButton = new javax.swing.JButton();
|
||||||
|
uploadLabel = new javax.swing.JLabel();
|
||||||
|
downloadLabel = new javax.swing.JLabel();
|
||||||
|
uploadChoice = new javax.swing.JComboBox();
|
||||||
|
downloadChoice = new javax.swing.JComboBox();
|
||||||
|
kbps1 = new javax.swing.JLabel();
|
||||||
|
kbps2 = new javax.swing.JLabel();
|
||||||
|
|
||||||
|
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
||||||
|
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(desktopgui.Main.class).getContext().getResourceMap(SpeedSelector.class);
|
||||||
|
setTitle(resourceMap.getString("Form.title")); // NOI18N
|
||||||
|
setName("Form"); // NOI18N
|
||||||
|
|
||||||
|
nextButton.setText(resourceMap.getString("nextButton.text")); // NOI18N
|
||||||
|
nextButton.setName("nextButton"); // NOI18N
|
||||||
|
nextButton.addMouseListener(new java.awt.event.MouseAdapter() {
|
||||||
|
public void mouseClicked(java.awt.event.MouseEvent evt) {
|
||||||
|
nextButtonMouseClicked(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
uploadLabel.setText(resourceMap.getString("uploadLabel.text")); // NOI18N
|
||||||
|
uploadLabel.setName("uploadLabel"); // NOI18N
|
||||||
|
|
||||||
|
downloadLabel.setText(resourceMap.getString("downloadLabel.text")); // NOI18N
|
||||||
|
downloadLabel.setName("downloadLabel"); // NOI18N
|
||||||
|
|
||||||
|
uploadChoice.setEditable(true);
|
||||||
|
uploadChoice.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "100", "200", "500", "1000", "2000", "4000", "8000", "10000", "20000", "50000", "100000" }));
|
||||||
|
uploadChoice.setSelectedIndex(3);
|
||||||
|
uploadChoice.setName("uploadChoice"); // NOI18N
|
||||||
|
|
||||||
|
downloadChoice.setEditable(true);
|
||||||
|
downloadChoice.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "100", "200", "500", "1000", "2000", "4000", "8000", "10000", "20000", "50000", "100000" }));
|
||||||
|
downloadChoice.setSelectedIndex(3);
|
||||||
|
downloadChoice.setName("downloadChoice"); // NOI18N
|
||||||
|
|
||||||
|
kbps1.setText(resourceMap.getString("kbps1.text")); // NOI18N
|
||||||
|
kbps1.setName("kbps1"); // NOI18N
|
||||||
|
|
||||||
|
kbps2.setText(resourceMap.getString("kbps2.text")); // NOI18N
|
||||||
|
kbps2.setName("kbps2"); // NOI18N
|
||||||
|
|
||||||
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||||
|
getContentPane().setLayout(layout);
|
||||||
|
layout.setHorizontalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGap(49, 49, 49)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(downloadLabel)
|
||||||
|
.addComponent(uploadLabel))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addComponent(downloadChoice, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(kbps2))
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addComponent(uploadChoice, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addComponent(kbps1)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||||
|
.addComponent(nextButton)
|
||||||
|
.addGap(34, 34, 34))))
|
||||||
|
.addGap(40, 40, 40))
|
||||||
|
);
|
||||||
|
layout.setVerticalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGap(67, 67, 67)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(uploadLabel)
|
||||||
|
.addComponent(uploadChoice, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addComponent(kbps1))
|
||||||
|
.addGap(18, 18, 18)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(downloadLabel)
|
||||||
|
.addComponent(downloadChoice, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addComponent(kbps2))
|
||||||
|
.addContainerGap(173, Short.MAX_VALUE))
|
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||||
|
.addContainerGap(271, Short.MAX_VALUE)
|
||||||
|
.addComponent(nextButton)
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
|
||||||
|
pack();
|
||||||
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
private void nextButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_nextButtonMouseClicked
|
||||||
|
props.setProperty(SpeedSelectorConstants.MAXUPLOADCAPABLE, uploadChoice.getSelectedItem().toString());
|
||||||
|
props.setProperty(SpeedSelectorConstants.MAXDOWNLOADCAPABLE, downloadChoice.getSelectedItem().toString());
|
||||||
|
PropertyManager.saveProps(props);
|
||||||
|
new SpeedSelector2(this.getLocationOnScreen(), this.getSize());
|
||||||
|
this.dispose();
|
||||||
|
}//GEN-LAST:event_nextButtonMouseClicked
|
||||||
|
|
||||||
|
private void initSpeeds(Properties props) {
|
||||||
|
String up = props.getProperty(SpeedSelectorConstants.MAXUPLOADCAPABLE);
|
||||||
|
String down = props.getProperty(SpeedSelectorConstants.MAXDOWNLOADCAPABLE);
|
||||||
|
|
||||||
|
if(up == null)
|
||||||
|
props.setProperty(SpeedSelectorConstants.MAXUPLOADCAPABLE, "1000");
|
||||||
|
if(down == null)
|
||||||
|
props.setProperty(SpeedSelectorConstants.MAXDOWNLOADCAPABLE, "1000");
|
||||||
|
|
||||||
|
uploadChoice.setSelectedItem(props.getProperty(SpeedSelectorConstants.MAXUPLOADCAPABLE));
|
||||||
|
downloadChoice.setSelectedItem(props.getProperty(SpeedSelectorConstants.MAXDOWNLOADCAPABLE));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
|
private javax.swing.JComboBox downloadChoice;
|
||||||
|
private javax.swing.JLabel downloadLabel;
|
||||||
|
private javax.swing.JLabel kbps1;
|
||||||
|
private javax.swing.JLabel kbps2;
|
||||||
|
private javax.swing.JButton nextButton;
|
||||||
|
private javax.swing.JComboBox uploadChoice;
|
||||||
|
private javax.swing.JLabel uploadLabel;
|
||||||
|
// End of variables declaration//GEN-END:variables
|
||||||
|
|
||||||
|
Properties props;
|
||||||
|
}
|
116
apps/desktopgui/src/gui/SpeedSelector2.form
Normal file
116
apps/desktopgui/src/gui/SpeedSelector2.form
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
|
<Form version="1.5" maxVersion="1.6" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
|
||||||
|
<NonVisualComponents>
|
||||||
|
<Component class="javax.swing.ButtonGroup" name="buttonGroup1">
|
||||||
|
</Component>
|
||||||
|
</NonVisualComponents>
|
||||||
|
<Properties>
|
||||||
|
<Property name="defaultCloseOperation" type="int" value="2"/>
|
||||||
|
<Property name="title" type="java.lang.String" resourceKey="Form.title"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="Form" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<SyntheticProperties>
|
||||||
|
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
|
||||||
|
</SyntheticProperties>
|
||||||
|
<AuxValues>
|
||||||
|
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
|
||||||
|
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
|
||||||
|
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
||||||
|
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
||||||
|
</AuxValues>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="1" attributes="0">
|
||||||
|
<EmptySpace pref="406" max="32767" attributes="0"/>
|
||||||
|
<Component id="returnButton" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
|
<Component id="nextButton" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace min="-2" pref="74" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace min="-2" pref="42" max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="questionLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Group type="102" alignment="0" attributes="0">
|
||||||
|
<EmptySpace min="12" pref="12" max="12" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="downloadButton" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="browseButton" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace pref="32" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<EmptySpace min="-2" pref="54" max="-2" attributes="0"/>
|
||||||
|
<Component id="questionLabel" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||||
|
<Component id="browseButton" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||||
|
<Component id="downloadButton" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace pref="120" max="32767" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="nextButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="returnButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JButton" name="nextButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="nextButton.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="nextButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="nextButtonMouseClicked"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="returnButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="returnButton.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="returnButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="returnButtonMouseClicked"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="questionLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="questionLabel.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="questionLabel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JRadioButton" name="browseButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
|
||||||
|
<ComponentRef name="buttonGroup1"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="browseButton.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="browseButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JRadioButton" name="downloadButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
|
||||||
|
<ComponentRef name="buttonGroup1"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="downloadButton.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="downloadButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Form>
|
174
apps/desktopgui/src/gui/SpeedSelector2.java
Normal file
174
apps/desktopgui/src/gui/SpeedSelector2.java
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
/*
|
||||||
|
* ProfileSelector2.java
|
||||||
|
*
|
||||||
|
* Created on 3 april 2009, 14:36
|
||||||
|
*/
|
||||||
|
|
||||||
|
package gui;
|
||||||
|
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.Point;
|
||||||
|
import java.util.Enumeration;
|
||||||
|
import java.util.Properties;
|
||||||
|
import javax.swing.AbstractButton;
|
||||||
|
import persistence.PropertyManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author mathias
|
||||||
|
*/
|
||||||
|
public class SpeedSelector2 extends javax.swing.JFrame {
|
||||||
|
Properties props;
|
||||||
|
|
||||||
|
/** Creates new form ProfileSelector2 */
|
||||||
|
public SpeedSelector2(Point point, Dimension dimension) {
|
||||||
|
this.props = PropertyManager.getProps();
|
||||||
|
initComponents();
|
||||||
|
this.setLocation(point);
|
||||||
|
this.setSize(dimension);
|
||||||
|
loadButtonSelection();
|
||||||
|
this.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** This method is called from within the constructor to
|
||||||
|
* initialize the form.
|
||||||
|
* WARNING: Do NOT modify this code. The content of this method is
|
||||||
|
* always regenerated by the Form Editor.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
|
private void initComponents() {
|
||||||
|
|
||||||
|
buttonGroup1 = new javax.swing.ButtonGroup();
|
||||||
|
nextButton = new javax.swing.JButton();
|
||||||
|
returnButton = new javax.swing.JButton();
|
||||||
|
questionLabel = new javax.swing.JLabel();
|
||||||
|
browseButton = new javax.swing.JRadioButton();
|
||||||
|
downloadButton = new javax.swing.JRadioButton();
|
||||||
|
|
||||||
|
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
||||||
|
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(desktopgui.Main.class).getContext().getResourceMap(SpeedSelector2.class);
|
||||||
|
setTitle(resourceMap.getString("Form.title")); // NOI18N
|
||||||
|
setName("Form"); // NOI18N
|
||||||
|
|
||||||
|
nextButton.setText(resourceMap.getString("nextButton.text")); // NOI18N
|
||||||
|
nextButton.setName("nextButton"); // NOI18N
|
||||||
|
nextButton.addMouseListener(new java.awt.event.MouseAdapter() {
|
||||||
|
public void mouseClicked(java.awt.event.MouseEvent evt) {
|
||||||
|
nextButtonMouseClicked(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
returnButton.setText(resourceMap.getString("returnButton.text")); // NOI18N
|
||||||
|
returnButton.setName("returnButton"); // NOI18N
|
||||||
|
returnButton.addMouseListener(new java.awt.event.MouseAdapter() {
|
||||||
|
public void mouseClicked(java.awt.event.MouseEvent evt) {
|
||||||
|
returnButtonMouseClicked(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
questionLabel.setText(resourceMap.getString("questionLabel.text")); // NOI18N
|
||||||
|
questionLabel.setName("questionLabel"); // NOI18N
|
||||||
|
|
||||||
|
buttonGroup1.add(browseButton);
|
||||||
|
browseButton.setText(resourceMap.getString("browseButton.text")); // NOI18N
|
||||||
|
browseButton.setName("browseButton"); // NOI18N
|
||||||
|
|
||||||
|
buttonGroup1.add(downloadButton);
|
||||||
|
downloadButton.setText(resourceMap.getString("downloadButton.text")); // NOI18N
|
||||||
|
downloadButton.setName("downloadButton"); // NOI18N
|
||||||
|
|
||||||
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||||
|
getContentPane().setLayout(layout);
|
||||||
|
layout.setHorizontalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||||
|
.addContainerGap(406, Short.MAX_VALUE)
|
||||||
|
.addComponent(returnButton)
|
||||||
|
.addGap(18, 18, 18)
|
||||||
|
.addComponent(nextButton)
|
||||||
|
.addGap(74, 74, 74))
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGap(42, 42, 42)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(questionLabel)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGap(12, 12, 12)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(downloadButton)
|
||||||
|
.addComponent(browseButton))))
|
||||||
|
.addContainerGap(32, Short.MAX_VALUE))
|
||||||
|
);
|
||||||
|
layout.setVerticalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGap(54, 54, 54)
|
||||||
|
.addComponent(questionLabel)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
|
.addComponent(browseButton)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
|
.addComponent(downloadButton)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 120, Short.MAX_VALUE)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(nextButton)
|
||||||
|
.addComponent(returnButton))
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
|
||||||
|
pack();
|
||||||
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
private void returnButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_returnButtonMouseClicked
|
||||||
|
saveButtonSelection();
|
||||||
|
PropertyManager.saveProps(props);
|
||||||
|
new SpeedSelector(this.getLocationOnScreen(), this.getSize()).setVisible(true);
|
||||||
|
this.dispose();
|
||||||
|
}//GEN-LAST:event_returnButtonMouseClicked
|
||||||
|
|
||||||
|
private void nextButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_nextButtonMouseClicked
|
||||||
|
saveButtonSelection();
|
||||||
|
PropertyManager.saveProps(props);
|
||||||
|
new SpeedSelector3(this.getLocationOnScreen(), this.getSize()).setVisible(true);
|
||||||
|
this.dispose();
|
||||||
|
}//GEN-LAST:event_nextButtonMouseClicked
|
||||||
|
|
||||||
|
private void loadButtonSelection() {
|
||||||
|
Enumeration<AbstractButton> elements = buttonGroup1.getElements();
|
||||||
|
while(elements.hasMoreElements()) {
|
||||||
|
AbstractButton button = elements.nextElement();
|
||||||
|
if(button == null)
|
||||||
|
continue;
|
||||||
|
if(props.getProperty(SpeedSelectorConstants.USERTYPE) == null)
|
||||||
|
break;
|
||||||
|
String type = button.getText().split(":")[0];
|
||||||
|
if(type.equals(props.getProperty(SpeedSelectorConstants.USERTYPE))) {
|
||||||
|
button.setSelected(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveButtonSelection() {
|
||||||
|
Enumeration<AbstractButton> elements = buttonGroup1.getElements();
|
||||||
|
while(elements.hasMoreElements()) {
|
||||||
|
AbstractButton button = elements.nextElement();
|
||||||
|
if(button == null)
|
||||||
|
continue;
|
||||||
|
if(button.isSelected()) {
|
||||||
|
String type = button.getText().split(":")[0];
|
||||||
|
props.setProperty(SpeedSelectorConstants.USERTYPE, type);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
|
private javax.swing.JRadioButton browseButton;
|
||||||
|
private javax.swing.ButtonGroup buttonGroup1;
|
||||||
|
private javax.swing.JRadioButton downloadButton;
|
||||||
|
private javax.swing.JButton nextButton;
|
||||||
|
private javax.swing.JLabel questionLabel;
|
||||||
|
private javax.swing.JButton returnButton;
|
||||||
|
// End of variables declaration//GEN-END:variables
|
||||||
|
|
||||||
|
}
|
223
apps/desktopgui/src/gui/SpeedSelector3.form
Normal file
223
apps/desktopgui/src/gui/SpeedSelector3.form
Normal file
@ -0,0 +1,223 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
|
||||||
|
<Form version="1.5" maxVersion="1.6" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
|
||||||
|
<Properties>
|
||||||
|
<Property name="defaultCloseOperation" type="int" value="2"/>
|
||||||
|
<Property name="title" type="java.lang.String" resourceKey="Form.title"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="Form" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<SyntheticProperties>
|
||||||
|
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
|
||||||
|
</SyntheticProperties>
|
||||||
|
<AuxValues>
|
||||||
|
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="2"/>
|
||||||
|
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="true"/>
|
||||||
|
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
|
||||||
|
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
|
||||||
|
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
|
||||||
|
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
|
||||||
|
</AuxValues>
|
||||||
|
|
||||||
|
<Layout>
|
||||||
|
<DimensionLayout dim="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<Group type="103" groupAlignment="1" attributes="0">
|
||||||
|
<Component id="jLabel1" alignment="1" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Group type="102" attributes="0">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="uploadLabel" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="uploadBurstLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="uploadUsageLabel" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" max="-2" attributes="0">
|
||||||
|
<Component id="uploadBurstField" alignment="0" max="32767" attributes="1"/>
|
||||||
|
<Component id="uploadField" alignment="0" max="32767" attributes="1"/>
|
||||||
|
<Component id="uploadMonth" alignment="0" max="32767" attributes="1"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace min="-2" pref="46" max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="downloadLabel" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="downloadBurstLabel" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="downloadUsageLabel" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="1" max="-2" attributes="0">
|
||||||
|
<Component id="downloadField" max="32767" attributes="1"/>
|
||||||
|
<Component id="downloadMonth" alignment="0" max="32767" attributes="1"/>
|
||||||
|
<Component id="downloadBurstField" alignment="0" max="32767" attributes="1"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<Group type="102" alignment="1" attributes="0">
|
||||||
|
<Component id="previousButton" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
|
<Component id="finishButton" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace min="-2" pref="33" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace min="-2" pref="400" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
<DimensionLayout dim="1">
|
||||||
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Group type="102" alignment="1" attributes="0">
|
||||||
|
<EmptySpace min="-2" pref="81" max="-2" attributes="0"/>
|
||||||
|
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="uploadLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="downloadLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="uploadField" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="downloadField" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="uploadBurstLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="downloadBurstLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="downloadBurstField" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="uploadBurstField" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="uploadUsageLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="downloadUsageLabel" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="uploadMonth" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="downloadMonth" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace pref="48" max="32767" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
|
<Component id="previousButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
<Component id="finishButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
</Group>
|
||||||
|
</DimensionLayout>
|
||||||
|
</Layout>
|
||||||
|
<SubComponents>
|
||||||
|
<Component class="javax.swing.JButton" name="finishButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="finishButton.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="finishButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="finishButtonMouseClicked"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JButton" name="previousButton">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="previousButton.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="previousButton" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="previousButtonMouseClicked"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="jLabel1">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="jLabel1.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="jLabel1" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="uploadLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="uploadLabel.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="uploadLabel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="downloadLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="downloadLabel.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="downloadLabel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="uploadBurstLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="uploadBurstLabel.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="uploadBurstLabel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="downloadBurstLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="downloadBurstLabel.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="downloadBurstLabel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="uploadUsageLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="uploadUsageLabel.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="uploadUsageLabel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="downloadUsageLabel">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="downloadUsageLabel.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="downloadUsageLabel" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JTextField" name="uploadField">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="uploadField.text"/>
|
||||||
|
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||||
|
<Dimension value="[77, 27]"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="uploadField" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="keyReleased" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="speedFieldKeyReleased"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JTextField" name="uploadBurstField">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="uploadBurstField.text"/>
|
||||||
|
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||||
|
<Dimension value="[77, 27]"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="uploadBurstField" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JTextField" name="downloadField">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="downloadField.text"/>
|
||||||
|
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||||
|
<Dimension value="[77, 27]"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="downloadField" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
<Events>
|
||||||
|
<EventHandler event="keyReleased" listener="java.awt.event.KeyListener" parameters="java.awt.event.KeyEvent" handler="speedFieldKeyReleased"/>
|
||||||
|
</Events>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JTextField" name="downloadBurstField">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="downloadBurstField.text"/>
|
||||||
|
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
|
||||||
|
<Dimension value="[77, 27]"/>
|
||||||
|
</Property>
|
||||||
|
<Property name="name" type="java.lang.String" value="downloadBurstField" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="uploadMonth">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="uploadMonth.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="uploadMonth" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
<Component class="javax.swing.JLabel" name="downloadMonth">
|
||||||
|
<Properties>
|
||||||
|
<Property name="text" type="java.lang.String" resourceKey="downloadMonth.text"/>
|
||||||
|
<Property name="name" type="java.lang.String" value="downloadMonth" noResource="true"/>
|
||||||
|
</Properties>
|
||||||
|
</Component>
|
||||||
|
</SubComponents>
|
||||||
|
</Form>
|
286
apps/desktopgui/src/gui/SpeedSelector3.java
Normal file
286
apps/desktopgui/src/gui/SpeedSelector3.java
Normal file
@ -0,0 +1,286 @@
|
|||||||
|
/*
|
||||||
|
* ProfileSelector3.java
|
||||||
|
*
|
||||||
|
* Created on 3 april 2009, 15:17
|
||||||
|
*/
|
||||||
|
|
||||||
|
package gui;
|
||||||
|
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.awt.Point;
|
||||||
|
import java.util.Properties;
|
||||||
|
import persistence.PropertyManager;
|
||||||
|
import router.configuration.SpeedHandler;
|
||||||
|
import router.configuration.SpeedHelper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author mathias
|
||||||
|
*/
|
||||||
|
public class SpeedSelector3 extends javax.swing.JFrame {
|
||||||
|
Properties props;
|
||||||
|
|
||||||
|
/** Creates new form ProfileSelector3 */
|
||||||
|
public SpeedSelector3(Point point, Dimension dimension) {
|
||||||
|
this.props = PropertyManager.getProps();
|
||||||
|
initComponents();
|
||||||
|
this.setLocation(point);
|
||||||
|
this.setSize(dimension);
|
||||||
|
initSpeeds();
|
||||||
|
this.setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** This method is called from within the constructor to
|
||||||
|
* initialize the form.
|
||||||
|
* WARNING: Do NOT modify this code. The content of this method is
|
||||||
|
* always regenerated by the Form Editor.
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||||
|
private void initComponents() {
|
||||||
|
|
||||||
|
finishButton = new javax.swing.JButton();
|
||||||
|
previousButton = new javax.swing.JButton();
|
||||||
|
jLabel1 = new javax.swing.JLabel();
|
||||||
|
uploadLabel = new javax.swing.JLabel();
|
||||||
|
downloadLabel = new javax.swing.JLabel();
|
||||||
|
uploadBurstLabel = new javax.swing.JLabel();
|
||||||
|
downloadBurstLabel = new javax.swing.JLabel();
|
||||||
|
uploadUsageLabel = new javax.swing.JLabel();
|
||||||
|
downloadUsageLabel = new javax.swing.JLabel();
|
||||||
|
uploadField = new javax.swing.JTextField();
|
||||||
|
uploadBurstField = new javax.swing.JTextField();
|
||||||
|
downloadField = new javax.swing.JTextField();
|
||||||
|
downloadBurstField = new javax.swing.JTextField();
|
||||||
|
uploadMonth = new javax.swing.JLabel();
|
||||||
|
downloadMonth = new javax.swing.JLabel();
|
||||||
|
|
||||||
|
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
|
||||||
|
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(desktopgui.Main.class).getContext().getResourceMap(SpeedSelector3.class);
|
||||||
|
setTitle(resourceMap.getString("Form.title")); // NOI18N
|
||||||
|
setName("Form"); // NOI18N
|
||||||
|
|
||||||
|
finishButton.setText(resourceMap.getString("finishButton.text")); // NOI18N
|
||||||
|
finishButton.setName("finishButton"); // NOI18N
|
||||||
|
finishButton.addMouseListener(new java.awt.event.MouseAdapter() {
|
||||||
|
public void mouseClicked(java.awt.event.MouseEvent evt) {
|
||||||
|
finishButtonMouseClicked(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
previousButton.setText(resourceMap.getString("previousButton.text")); // NOI18N
|
||||||
|
previousButton.setName("previousButton"); // NOI18N
|
||||||
|
previousButton.addMouseListener(new java.awt.event.MouseAdapter() {
|
||||||
|
public void mouseClicked(java.awt.event.MouseEvent evt) {
|
||||||
|
previousButtonMouseClicked(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
|
||||||
|
jLabel1.setName("jLabel1"); // NOI18N
|
||||||
|
|
||||||
|
uploadLabel.setText(resourceMap.getString("uploadLabel.text")); // NOI18N
|
||||||
|
uploadLabel.setName("uploadLabel"); // NOI18N
|
||||||
|
|
||||||
|
downloadLabel.setText(resourceMap.getString("downloadLabel.text")); // NOI18N
|
||||||
|
downloadLabel.setName("downloadLabel"); // NOI18N
|
||||||
|
|
||||||
|
uploadBurstLabel.setText(resourceMap.getString("uploadBurstLabel.text")); // NOI18N
|
||||||
|
uploadBurstLabel.setName("uploadBurstLabel"); // NOI18N
|
||||||
|
|
||||||
|
downloadBurstLabel.setText(resourceMap.getString("downloadBurstLabel.text")); // NOI18N
|
||||||
|
downloadBurstLabel.setName("downloadBurstLabel"); // NOI18N
|
||||||
|
|
||||||
|
uploadUsageLabel.setText(resourceMap.getString("uploadUsageLabel.text")); // NOI18N
|
||||||
|
uploadUsageLabel.setName("uploadUsageLabel"); // NOI18N
|
||||||
|
|
||||||
|
downloadUsageLabel.setText(resourceMap.getString("downloadUsageLabel.text")); // NOI18N
|
||||||
|
downloadUsageLabel.setName("downloadUsageLabel"); // NOI18N
|
||||||
|
|
||||||
|
uploadField.setText(resourceMap.getString("uploadField.text")); // NOI18N
|
||||||
|
uploadField.setMinimumSize(new java.awt.Dimension(77, 27));
|
||||||
|
uploadField.setName("uploadField"); // NOI18N
|
||||||
|
uploadField.addKeyListener(new java.awt.event.KeyAdapter() {
|
||||||
|
public void keyReleased(java.awt.event.KeyEvent evt) {
|
||||||
|
speedFieldKeyReleased(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
uploadBurstField.setText(resourceMap.getString("uploadBurstField.text")); // NOI18N
|
||||||
|
uploadBurstField.setMinimumSize(new java.awt.Dimension(77, 27));
|
||||||
|
uploadBurstField.setName("uploadBurstField"); // NOI18N
|
||||||
|
|
||||||
|
downloadField.setText(resourceMap.getString("downloadField.text")); // NOI18N
|
||||||
|
downloadField.setMinimumSize(new java.awt.Dimension(77, 27));
|
||||||
|
downloadField.setName("downloadField"); // NOI18N
|
||||||
|
downloadField.addKeyListener(new java.awt.event.KeyAdapter() {
|
||||||
|
public void keyReleased(java.awt.event.KeyEvent evt) {
|
||||||
|
speedFieldKeyReleased(evt);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
downloadBurstField.setText(resourceMap.getString("downloadBurstField.text")); // NOI18N
|
||||||
|
downloadBurstField.setMinimumSize(new java.awt.Dimension(77, 27));
|
||||||
|
downloadBurstField.setName("downloadBurstField"); // NOI18N
|
||||||
|
|
||||||
|
uploadMonth.setText(resourceMap.getString("uploadMonth.text")); // NOI18N
|
||||||
|
uploadMonth.setName("uploadMonth"); // NOI18N
|
||||||
|
|
||||||
|
downloadMonth.setText(resourceMap.getString("downloadMonth.text")); // NOI18N
|
||||||
|
downloadMonth.setName("downloadMonth"); // NOI18N
|
||||||
|
|
||||||
|
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||||
|
getContentPane().setLayout(layout);
|
||||||
|
layout.setHorizontalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addContainerGap()
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||||
|
.addComponent(jLabel1)
|
||||||
|
.addGroup(layout.createSequentialGroup()
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(uploadLabel)
|
||||||
|
.addComponent(uploadBurstLabel)
|
||||||
|
.addComponent(uploadUsageLabel))
|
||||||
|
.addGap(18, 18, 18)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
|
||||||
|
.addComponent(uploadBurstField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addComponent(uploadField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addComponent(uploadMonth, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
|
.addGap(46, 46, 46)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addComponent(downloadLabel)
|
||||||
|
.addComponent(downloadBurstLabel)
|
||||||
|
.addComponent(downloadUsageLabel))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
|
||||||
|
.addComponent(downloadField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addComponent(downloadMonth, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
|
.addComponent(downloadBurstField, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
|
||||||
|
.addGap(18, 18, 18))
|
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||||
|
.addComponent(previousButton)
|
||||||
|
.addGap(18, 18, 18)
|
||||||
|
.addComponent(finishButton)
|
||||||
|
.addGap(33, 33, 33)))
|
||||||
|
.addGap(400, 400, 400))
|
||||||
|
);
|
||||||
|
layout.setVerticalGroup(
|
||||||
|
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
|
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
|
||||||
|
.addGap(81, 81, 81)
|
||||||
|
.addComponent(jLabel1)
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(uploadLabel)
|
||||||
|
.addComponent(downloadLabel)
|
||||||
|
.addComponent(uploadField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addComponent(downloadField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
|
.addGap(18, 18, 18)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(uploadBurstLabel)
|
||||||
|
.addComponent(downloadBurstLabel)
|
||||||
|
.addComponent(downloadBurstField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
|
.addComponent(uploadBurstField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
|
.addGap(18, 18, 18)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(uploadUsageLabel)
|
||||||
|
.addComponent(downloadUsageLabel)
|
||||||
|
.addComponent(uploadMonth)
|
||||||
|
.addComponent(downloadMonth))
|
||||||
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 48, Short.MAX_VALUE)
|
||||||
|
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
|
.addComponent(previousButton)
|
||||||
|
.addComponent(finishButton))
|
||||||
|
.addContainerGap())
|
||||||
|
);
|
||||||
|
|
||||||
|
pack();
|
||||||
|
}// </editor-fold>//GEN-END:initComponents
|
||||||
|
|
||||||
|
private void previousButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_previousButtonMouseClicked
|
||||||
|
saveSpeeds();
|
||||||
|
PropertyManager.saveProps(props);
|
||||||
|
new SpeedSelector2(this.getLocationOnScreen(), this.getSize()).setVisible(true);
|
||||||
|
this.dispose();
|
||||||
|
}//GEN-LAST:event_previousButtonMouseClicked
|
||||||
|
|
||||||
|
private void finishButtonMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_finishButtonMouseClicked
|
||||||
|
saveSpeeds();
|
||||||
|
PropertyManager.saveProps(props);
|
||||||
|
|
||||||
|
int maxDownload = Integer.parseInt(props.getProperty(SpeedSelectorConstants.MAXDOWNLOAD));
|
||||||
|
int maxUpload = Integer.parseInt(props.getProperty(SpeedSelectorConstants.MAXUPLOAD));
|
||||||
|
int maxUploadBurst = Integer.parseInt(props.getProperty(SpeedSelectorConstants.MAXUPLOADBURST));
|
||||||
|
int maxDownloadBurst = Integer.parseInt(props.getProperty(SpeedSelectorConstants.MAXDOWNLOADBURST));
|
||||||
|
|
||||||
|
//Working in kB, not kb!
|
||||||
|
SpeedHandler.setInboundBandwidth(maxDownload/8);
|
||||||
|
SpeedHandler.setOutboundBandwidth(maxUpload/8);
|
||||||
|
SpeedHandler.setInboundBurstBandwidth(maxDownloadBurst);
|
||||||
|
SpeedHandler.setOutboundBurstBandwidth(maxUploadBurst/8);
|
||||||
|
|
||||||
|
this.dispose();
|
||||||
|
}//GEN-LAST:event_finishButtonMouseClicked
|
||||||
|
|
||||||
|
private void speedFieldKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_speedFieldKeyReleased
|
||||||
|
try {
|
||||||
|
initUsage(uploadField.getText(), downloadField.getText());
|
||||||
|
}
|
||||||
|
catch(NumberFormatException e) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}//GEN-LAST:event_speedFieldKeyReleased
|
||||||
|
|
||||||
|
protected void initSpeeds() {
|
||||||
|
String up = "" + SpeedHelper.calculateSpeed(
|
||||||
|
props.getProperty(SpeedSelectorConstants.MAXUPLOADCAPABLE), props.getProperty(SpeedSelectorConstants.USERTYPE));
|
||||||
|
String upBurst = "" + SpeedHelper.calculateSpeed(
|
||||||
|
props.getProperty(SpeedSelectorConstants.MAXUPLOADCAPABLE), props.getProperty(SpeedSelectorConstants.USERTYPE));
|
||||||
|
String down = "" + SpeedHelper.calculateSpeed(
|
||||||
|
props.getProperty(SpeedSelectorConstants.MAXDOWNLOADCAPABLE), props.getProperty(SpeedSelectorConstants.USERTYPE));
|
||||||
|
String downBurst = "" + SpeedHelper.calculateSpeed(
|
||||||
|
props.getProperty(SpeedSelectorConstants.MAXDOWNLOADCAPABLE), props.getProperty(SpeedSelectorConstants.USERTYPE));
|
||||||
|
String userType = props.getProperty(SpeedSelectorConstants.USERTYPE);
|
||||||
|
|
||||||
|
uploadField.setText(up);
|
||||||
|
uploadBurstField.setText(upBurst);
|
||||||
|
downloadField.setText(down);
|
||||||
|
downloadBurstField.setText(downBurst);
|
||||||
|
|
||||||
|
initUsage(up, down);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void saveSpeeds() {
|
||||||
|
props.setProperty(SpeedSelectorConstants.MAXUPLOAD, uploadField.getText());
|
||||||
|
props.setProperty(SpeedSelectorConstants.MAXUPLOADBURST, uploadBurstField.getText());
|
||||||
|
props.setProperty(SpeedSelectorConstants.MAXDOWNLOAD, downloadField.getText());
|
||||||
|
props.setProperty(SpeedSelectorConstants.MAXDOWNLOADBURST, downloadBurstField.getText());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void initUsage(String upload, String download) {
|
||||||
|
uploadMonth.setText(SpeedHelper.calculateMonthlyUsage(Integer.parseInt(upload)/8) + " GB");
|
||||||
|
downloadMonth.setText(SpeedHelper.calculateMonthlyUsage(Integer.parseInt(download)/8) + " GB");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||||
|
private javax.swing.JTextField downloadBurstField;
|
||||||
|
private javax.swing.JLabel downloadBurstLabel;
|
||||||
|
private javax.swing.JTextField downloadField;
|
||||||
|
private javax.swing.JLabel downloadLabel;
|
||||||
|
private javax.swing.JLabel downloadMonth;
|
||||||
|
private javax.swing.JLabel downloadUsageLabel;
|
||||||
|
private javax.swing.JButton finishButton;
|
||||||
|
private javax.swing.JLabel jLabel1;
|
||||||
|
private javax.swing.JButton previousButton;
|
||||||
|
private javax.swing.JTextField uploadBurstField;
|
||||||
|
private javax.swing.JLabel uploadBurstLabel;
|
||||||
|
private javax.swing.JTextField uploadField;
|
||||||
|
private javax.swing.JLabel uploadLabel;
|
||||||
|
private javax.swing.JLabel uploadMonth;
|
||||||
|
private javax.swing.JLabel uploadUsageLabel;
|
||||||
|
// End of variables declaration//GEN-END:variables
|
||||||
|
|
||||||
|
}
|
25
apps/desktopgui/src/gui/SpeedSelectorConstants.java
Normal file
25
apps/desktopgui/src/gui/SpeedSelectorConstants.java
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package gui;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author mathias
|
||||||
|
*/
|
||||||
|
public class SpeedSelectorConstants {
|
||||||
|
///Maximum upload speed for the internet connection
|
||||||
|
public static final String MAXUPLOADCAPABLE = "maxUploadCapable";
|
||||||
|
///Maximum download speed for the internet connection
|
||||||
|
public static final String MAXDOWNLOADCAPABLE = "maxDownloadCapable";
|
||||||
|
|
||||||
|
//User profile type: what behaviour does this user have while using IP2?
|
||||||
|
public static final String USERTYPE = "userType";
|
||||||
|
|
||||||
|
//Maximum upload speed for I2P
|
||||||
|
public static final String MAXUPLOAD = "maxUpload";
|
||||||
|
//Maximum upload burst speed for I2P
|
||||||
|
public static final String MAXUPLOADBURST = "maxUploadBurst";
|
||||||
|
|
||||||
|
//Maximum download speed for I2P
|
||||||
|
public static final String MAXDOWNLOAD = "maxDownload";
|
||||||
|
//Maximum download burst speed for I2P
|
||||||
|
public static final String MAXDOWNLOADBURST = "maxDownloadBurst";
|
||||||
|
}
|
138
apps/desktopgui/src/gui/Tray.java
Normal file
138
apps/desktopgui/src/gui/Tray.java
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package gui;
|
||||||
|
|
||||||
|
import desktopgui.*;
|
||||||
|
import java.awt.AWTException;
|
||||||
|
import java.awt.Desktop;
|
||||||
|
import java.awt.Image;
|
||||||
|
import java.awt.MenuItem;
|
||||||
|
import java.awt.Menu;
|
||||||
|
import java.awt.PopupMenu;
|
||||||
|
import java.awt.SystemTray;
|
||||||
|
import java.awt.Toolkit;
|
||||||
|
import java.awt.TrayIcon;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import router.RouterHandler;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author mathias
|
||||||
|
*/
|
||||||
|
public class Tray {
|
||||||
|
|
||||||
|
public Tray() {
|
||||||
|
tray = SystemTray.getSystemTray();
|
||||||
|
loadSystemTray();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void loadSystemTray() {
|
||||||
|
|
||||||
|
Image image = Toolkit.getDefaultToolkit().getImage("desktopgui/resources/logo/logo.jpg");
|
||||||
|
|
||||||
|
PopupMenu popup = new PopupMenu();
|
||||||
|
|
||||||
|
//Create menu items to put in the popup menu
|
||||||
|
MenuItem browserLauncher = new MenuItem("Launch browser");
|
||||||
|
browserLauncher.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
if(Desktop.isDesktopSupported()) {
|
||||||
|
Desktop desktop = Desktop.getDesktop();
|
||||||
|
try {
|
||||||
|
desktop.browse(new URI("http://localhost:7657"));
|
||||||
|
} catch (URISyntaxException ex) {
|
||||||
|
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
} catch(IOException ex) {
|
||||||
|
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
MenuItem howto = new MenuItem("How to use I2P");
|
||||||
|
howto.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
if(Desktop.isDesktopSupported()) {
|
||||||
|
Desktop desktop = Desktop.getDesktop();
|
||||||
|
try {
|
||||||
|
File f = new File("desktopgui/resources/howto/howto.html");
|
||||||
|
desktop.browse(new URI("file://" + f.getAbsolutePath()));
|
||||||
|
} catch (URISyntaxException ex) {
|
||||||
|
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
} catch(IOException ex) {
|
||||||
|
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
Menu config = new Menu("Configuration");
|
||||||
|
MenuItem speedConfig = new MenuItem("Speed");
|
||||||
|
speedConfig.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
(new SpeedSelector()).setVisible(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
MenuItem advancedConfig = new MenuItem("Advanced Configuration");
|
||||||
|
advancedConfig.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
if(Desktop.isDesktopSupported()) {
|
||||||
|
Desktop desktop = Desktop.getDesktop();
|
||||||
|
try {
|
||||||
|
desktop.browse(new URI("http://localhost:7657/config.jsp"));
|
||||||
|
} catch (URISyntaxException ex) {
|
||||||
|
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
} catch(IOException ex) {
|
||||||
|
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
MenuItem shutdown = new MenuItem("Shutdown I2P");
|
||||||
|
shutdown.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
|
public void actionPerformed(ActionEvent arg0) {
|
||||||
|
RouterHandler.setStatus(RouterHandler.SHUTDOWN_GRACEFULLY);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
//Add menu items to popup menu
|
||||||
|
popup.add(browserLauncher);
|
||||||
|
popup.add(howto);
|
||||||
|
|
||||||
|
config.add(speedConfig);
|
||||||
|
config.add(advancedConfig);
|
||||||
|
popup.add(config);
|
||||||
|
|
||||||
|
popup.add(shutdown);
|
||||||
|
|
||||||
|
//Add tray icon
|
||||||
|
trayIcon = new TrayIcon(image, "I2P: the anonymous network", popup);
|
||||||
|
try {
|
||||||
|
tray.add(trayIcon);
|
||||||
|
} catch (AWTException ex) {
|
||||||
|
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private SystemTray tray = null;
|
||||||
|
private TrayIcon trayIcon = null;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
|
||||||
|
Form.title=I2P Configuration
|
||||||
|
nextButton.text=Next
|
||||||
|
uploadLabel.text=What is your maximum upload speed?
|
||||||
|
downloadLabel.text=What is your maximum download speed?
|
||||||
|
kbps1.text=kbit/second
|
||||||
|
kbps2.text=kbit/second
|
@ -0,0 +1,6 @@
|
|||||||
|
returnButton.text=Previous
|
||||||
|
Form.title=I2P Configuration
|
||||||
|
questionLabel.text=Which of these descriptions fits you best?
|
||||||
|
browseButton.text=Browsing: I want to use I2P to browse websites anonymously, no heavy usage.
|
||||||
|
downloadButton.text=Downloading: I want to use I2P for downloads and filesharing, heavy usage.
|
||||||
|
nextButton.text=Next
|
16
apps/desktopgui/src/gui/resources/SpeedSelector3.properties
Normal file
16
apps/desktopgui/src/gui/resources/SpeedSelector3.properties
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
Form.title=I2P Configuration
|
||||||
|
jLabel1.text=The profile information your entered, indicates that these are your optimal settings:
|
||||||
|
previousButton.text=Previous
|
||||||
|
finishButton.text=Finish
|
||||||
|
uploadLabel.text=Upload Speed:
|
||||||
|
uploadBurstLabel.text=Burst Upload Speed:
|
||||||
|
downloadLabel.text=Download Speed:
|
||||||
|
downloadBurstLabel.text=Burst Download Speed:
|
||||||
|
uploadUsageLabel.text=Monthy upload usage:
|
||||||
|
downloadUsageLabel.text=Monthy Download Usage:
|
||||||
|
uploadField.text=jTextField1
|
||||||
|
uploadBurstField.text=jTextField2
|
||||||
|
uploadMonth.text=jLabel8
|
||||||
|
downloadMonth.text=jLabel9
|
||||||
|
downloadField.text=jTextField4
|
||||||
|
downloadBurstField.text=jTextField5
|
72
apps/desktopgui/src/persistence/PropertyManager.java
Normal file
72
apps/desktopgui/src/persistence/PropertyManager.java
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
package persistence;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Properties;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author mathias
|
||||||
|
*/
|
||||||
|
public class PropertyManager {
|
||||||
|
|
||||||
|
public static void setProps(Properties props) {
|
||||||
|
PropertyManager.props = props;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Properties getProps() {
|
||||||
|
return props;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Properties loadProps() {
|
||||||
|
Properties defaultProps = new Properties();
|
||||||
|
defaultProps.setProperty("firstLoad", "true");
|
||||||
|
|
||||||
|
// create application properties with default
|
||||||
|
Properties applicationProps = new Properties(defaultProps);
|
||||||
|
|
||||||
|
// now load properties from last invocation
|
||||||
|
FileInputStream in;
|
||||||
|
try {
|
||||||
|
in = new FileInputStream(PROPSLOCATION);
|
||||||
|
applicationProps.load(in);
|
||||||
|
in.close();
|
||||||
|
} catch (FileNotFoundException ex) {
|
||||||
|
//Nothing serious, just means it's being loaded for the first time.
|
||||||
|
} catch(IOException ex) {
|
||||||
|
Logger.getLogger(PropertyManager.class.getName()).log(Level.INFO, null, ex);
|
||||||
|
}
|
||||||
|
props = applicationProps;
|
||||||
|
return applicationProps;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void saveProps(Properties props) {
|
||||||
|
FileOutputStream out;
|
||||||
|
try {
|
||||||
|
File d = new File(PROPSDIRECTORY);
|
||||||
|
if(!d.exists())
|
||||||
|
d.mkdir();
|
||||||
|
File f = new File(PROPSLOCATION);
|
||||||
|
if(!f.exists())
|
||||||
|
f.createNewFile();
|
||||||
|
out = new FileOutputStream(f);
|
||||||
|
props.store(out, PROPSLOCATION);
|
||||||
|
} catch (FileNotFoundException ex) {
|
||||||
|
Logger.getLogger(PropertyManager.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
} catch(IOException ex) {
|
||||||
|
Logger.getLogger(PropertyManager.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Properties props;
|
||||||
|
|
||||||
|
///Location where we store the Application Properties
|
||||||
|
public static final String PROPSDIRECTORY = "desktopgui";
|
||||||
|
public static final String PROPSFILENAME = "appProperties";
|
||||||
|
public static final String PROPSLOCATION = PROPSDIRECTORY + File.separator + PROPSFILENAME;
|
||||||
|
}
|
38
apps/desktopgui/src/router/RouterHandler.java
Normal file
38
apps/desktopgui/src/router/RouterHandler.java
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* To change this template, choose Tools | Templates
|
||||||
|
* and open the template in the editor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package router;
|
||||||
|
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import net.i2p.router.RouterContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author mathias
|
||||||
|
*/
|
||||||
|
public class RouterHandler {
|
||||||
|
public static final int SHUTDOWN_GRACEFULLY = 0;
|
||||||
|
public static void setStatus(int status) {
|
||||||
|
if(status == SHUTDOWN_GRACEFULLY) {
|
||||||
|
Thread t = new Thread(new Runnable() {
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
RouterContext context = RouterHelper.getContext();
|
||||||
|
context.router().shutdownGracefully();
|
||||||
|
while(context.router().getShutdownTimeRemaining()>0)
|
||||||
|
try {
|
||||||
|
Thread.sleep(context.router().getShutdownTimeRemaining());
|
||||||
|
} catch (InterruptedException ex) {
|
||||||
|
Logger.getLogger(RouterHandler.class.getName()).log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
t.start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
13
apps/desktopgui/src/router/RouterHelper.java
Normal file
13
apps/desktopgui/src/router/RouterHelper.java
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package router;
|
||||||
|
|
||||||
|
import net.i2p.router.RouterContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author mathias
|
||||||
|
*/
|
||||||
|
public class RouterHelper {
|
||||||
|
public static RouterContext getContext() {
|
||||||
|
return (RouterContext) RouterContext.listContexts().get(0);
|
||||||
|
}
|
||||||
|
}
|
34
apps/desktopgui/src/router/configuration/SpeedHandler.java
Normal file
34
apps/desktopgui/src/router/configuration/SpeedHandler.java
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
package router.configuration;
|
||||||
|
|
||||||
|
import net.i2p.router.RouterContext;
|
||||||
|
import net.i2p.router.transport.FIFOBandwidthRefiller;
|
||||||
|
import router.RouterHelper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author mathias
|
||||||
|
*/
|
||||||
|
public class SpeedHandler {
|
||||||
|
|
||||||
|
public static void setInboundBandwidth(int kbytes) {
|
||||||
|
context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_INBOUND_BANDWIDTH, "" + kbytes);
|
||||||
|
context.router().saveConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setOutboundBandwidth(int kbytes) {
|
||||||
|
context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_OUTBOUND_BANDWIDTH, "" + kbytes);
|
||||||
|
context.router().saveConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setInboundBurstBandwidth(int kbytes) {
|
||||||
|
context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_INBOUND_BURST_BANDWIDTH, "" + kbytes);
|
||||||
|
context.router().saveConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setOutboundBurstBandwidth(int kbytes) {
|
||||||
|
context.router().setConfigSetting(FIFOBandwidthRefiller.PROP_OUTBOUND_BURST_BANDWIDTH, "" + kbytes);
|
||||||
|
context.router().saveConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final RouterContext context = RouterHelper.getContext();
|
||||||
|
}
|
28
apps/desktopgui/src/router/configuration/SpeedHelper.java
Normal file
28
apps/desktopgui/src/router/configuration/SpeedHelper.java
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package router.configuration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author mathias
|
||||||
|
*/
|
||||||
|
public class SpeedHelper {
|
||||||
|
public static final String USERTYPE_BROWSING = "Browsing";
|
||||||
|
public static final String USERTYPE_DOWNLOADING = "Downloading";
|
||||||
|
|
||||||
|
public static int calculateSpeed(String capable, String profile) {
|
||||||
|
int capableSpeed = Integer.parseInt(capable);
|
||||||
|
int advisedSpeed = capableSpeed;
|
||||||
|
if(capableSpeed > 1000) {
|
||||||
|
if(profile.equals(USERTYPE_BROWSING)) //Don't overdo usage for people just wanting to browse (we don't want to drive them away due to resource hogging)
|
||||||
|
advisedSpeed *= 0.6;
|
||||||
|
else if(profile.equals(USERTYPE_DOWNLOADING))
|
||||||
|
advisedSpeed *= 0.8;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
advisedSpeed *= 0.6; //Lower available bandwidth: don't hog all the bandwidth
|
||||||
|
return advisedSpeed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int calculateMonthlyUsage(int kbytes) {
|
||||||
|
return (kbytes*3600*24*31)/1000000;
|
||||||
|
}
|
||||||
|
}
|
32
apps/desktopgui/src/util/IntegerVerifier.java
Normal file
32
apps/desktopgui/src/util/IntegerVerifier.java
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
package util;
|
||||||
|
|
||||||
|
import javax.swing.InputVerifier;
|
||||||
|
import javax.swing.JComponent;
|
||||||
|
import javax.swing.JTextField;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author mathias
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class IntegerVerifier extends InputVerifier {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean verify(JComponent arg0) {
|
||||||
|
JTextField jtf = (JTextField) arg0;
|
||||||
|
return verify(jtf.getText());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldYieldFocus(JComponent input) {
|
||||||
|
return verify(input);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean verify(String s) {
|
||||||
|
for(int i=0;i<s.length();i++)
|
||||||
|
if(s.charAt(i) > '9' || s.charAt(i) < '0')
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -37,6 +37,7 @@
|
|||||||
<ant dir="apps/susimail/" target="war" />
|
<ant dir="apps/susimail/" target="war" />
|
||||||
<ant dir="apps/susidns/src" target="all" />
|
<ant dir="apps/susidns/src" target="all" />
|
||||||
<ant dir="apps/i2psnark/java/" target="war" />
|
<ant dir="apps/i2psnark/java/" target="war" />
|
||||||
|
<ant dir="apps/desktopgui/" target="jar" />
|
||||||
</target>
|
</target>
|
||||||
<target name="builddepSmall">
|
<target name="builddepSmall">
|
||||||
<ant dir="core/java/" target="jar" />
|
<ant dir="core/java/" target="jar" />
|
||||||
@ -104,6 +105,7 @@
|
|||||||
<target name="compile" />
|
<target name="compile" />
|
||||||
<target name="jar" depends="jarSmall" >
|
<target name="jar" depends="jarSmall" >
|
||||||
<copy file="apps/BOB/dist/BOB.jar" todir="build/" />
|
<copy file="apps/BOB/dist/BOB.jar" todir="build/" />
|
||||||
|
<copy file="apps/desktopgui/dist/desktopgui.jar" todir="build/" />
|
||||||
<copy file="apps/sam/java/build/sam.jar" todir="build/" />
|
<copy file="apps/sam/java/build/sam.jar" todir="build/" />
|
||||||
<copy file="apps/susimail/susimail.war" todir="build/" />
|
<copy file="apps/susimail/susimail.war" todir="build/" />
|
||||||
<copy file="apps/susidns/src/susidns.war" todir="build/" />
|
<copy file="apps/susidns/src/susidns.war" todir="build/" />
|
||||||
@ -214,6 +216,13 @@
|
|||||||
<copy file="build/routerconsole.jar" todir="pkg-temp/lib/" />
|
<copy file="build/routerconsole.jar" todir="pkg-temp/lib/" />
|
||||||
<copy file="build/sam.jar" todir="pkg-temp/lib/" />
|
<copy file="build/sam.jar" todir="pkg-temp/lib/" />
|
||||||
<copy file="build/BOB.jar" todir="pkg-temp/lib/" />
|
<copy file="build/BOB.jar" todir="pkg-temp/lib/" />
|
||||||
|
<copy file="apps/desktopgui/dist/desktopgui.jar" todir="pkg-temp/lib/" />
|
||||||
|
<copy file="apps/desktopgui/lib/swing-worker.jar" todir="pkg-temp/lib/" />
|
||||||
|
<copy file="apps/desktopgui/lib/appframework.jar" todir="pkg-temp/lib/" />
|
||||||
|
<mkdir dir="pkg-temp/desktopgui/resources/" />
|
||||||
|
<copy todir="pkg-temp/desktopgui/resources/" >
|
||||||
|
<fileset dir="apps/desktopgui/desktopgui/resources/" />
|
||||||
|
</copy>
|
||||||
<copy file="build/systray.jar" todir="pkg-temp/lib" />
|
<copy file="build/systray.jar" todir="pkg-temp/lib" />
|
||||||
<!-- <copy file="build/sucker.jar" todir="pkg-temp/lib" /> -->
|
<!-- <copy file="build/sucker.jar" todir="pkg-temp/lib" /> -->
|
||||||
<copy file="build/i2psnark.jar" todir="pkg-temp/lib/" />
|
<copy file="build/i2psnark.jar" todir="pkg-temp/lib/" />
|
||||||
|
@ -54,6 +54,10 @@ wrapper.java.classpath.17=lib/systray.jar
|
|||||||
wrapper.java.classpath.18=lib/systray4j.jar
|
wrapper.java.classpath.18=lib/systray4j.jar
|
||||||
# BOB
|
# BOB
|
||||||
wrapper.java.classpath.19=lib/BOB.jar
|
wrapper.java.classpath.19=lib/BOB.jar
|
||||||
|
# desktopgui
|
||||||
|
wrapper.java.classpath.20=lib/appframework.jar
|
||||||
|
wrapper.java.classpath.21=lib/swing-worker.jar
|
||||||
|
wrapper.java.classpath.22=lib/desktopgui.jar
|
||||||
|
|
||||||
# Java Library Path (location of Wrapper.DLL or libwrapper.so)
|
# Java Library Path (location of Wrapper.DLL or libwrapper.so)
|
||||||
wrapper.java.library.path.1=.
|
wrapper.java.library.path.1=.
|
||||||
|
Reference in New Issue
Block a user