1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/.hgignore Sun Nov 23 22:19:20 2008 +0100
1.3 @@ -0,0 +1,9 @@
1.4 +java/Postak/dist/*
1.5 +java/Postak/build/*
1.6 +
1.7 +java/SuperPostak/dist/*
1.8 +java/SuperPostak/build/*
1.9 +
1.10 +java/SuperPostak2/*
1.11 +java/SuperPostak2/dist/*
1.12 +java/SuperPostak2/build/*
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/java/Postak/nbproject/build-impl.xml Sun Nov 23 22:19:20 2008 +0100
2.3 @@ -0,0 +1,629 @@
2.4 +<?xml version="1.0" encoding="UTF-8"?>
2.5 +<!--
2.6 +*** GENERATED FROM project.xml - DO NOT EDIT ***
2.7 +*** EDIT ../build.xml INSTEAD ***
2.8 +
2.9 +For the purpose of easier reading the script
2.10 +is divided into following sections:
2.11 +
2.12 + - initialization
2.13 + - compilation
2.14 + - jar
2.15 + - execution
2.16 + - debugging
2.17 + - javadoc
2.18 + - junit compilation
2.19 + - junit execution
2.20 + - junit debugging
2.21 + - applet
2.22 + - cleanup
2.23 +
2.24 + -->
2.25 +<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="Postak-impl">
2.26 + <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
2.27 + <!--
2.28 + ======================
2.29 + INITIALIZATION SECTION
2.30 + ======================
2.31 + -->
2.32 + <target name="-pre-init">
2.33 + <!-- Empty placeholder for easier customization. -->
2.34 + <!-- You can override this target in the ../build.xml file. -->
2.35 + </target>
2.36 + <target depends="-pre-init" name="-init-private">
2.37 + <property file="nbproject/private/config.properties"/>
2.38 + <property file="nbproject/private/configs/${config}.properties"/>
2.39 + <property file="nbproject/private/private.properties"/>
2.40 + </target>
2.41 + <target depends="-pre-init,-init-private" name="-init-user">
2.42 + <property file="${user.properties.file}"/>
2.43 + <!-- The two properties below are usually overridden -->
2.44 + <!-- by the active platform. Just a fallback. -->
2.45 + <property name="default.javac.source" value="1.4"/>
2.46 + <property name="default.javac.target" value="1.4"/>
2.47 + </target>
2.48 + <target depends="-pre-init,-init-private,-init-user" name="-init-project">
2.49 + <property file="nbproject/configs/${config}.properties"/>
2.50 + <property file="nbproject/project.properties"/>
2.51 + </target>
2.52 + <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
2.53 + <available file="${manifest.file}" property="manifest.available"/>
2.54 + <condition property="manifest.available+main.class">
2.55 + <and>
2.56 + <isset property="manifest.available"/>
2.57 + <isset property="main.class"/>
2.58 + <not>
2.59 + <equals arg1="${main.class}" arg2="" trim="true"/>
2.60 + </not>
2.61 + </and>
2.62 + </condition>
2.63 + <condition property="manifest.available+main.class+mkdist.available">
2.64 + <and>
2.65 + <istrue value="${manifest.available+main.class}"/>
2.66 + <isset property="libs.CopyLibs.classpath"/>
2.67 + </and>
2.68 + </condition>
2.69 + <condition property="have.tests">
2.70 + <or>
2.71 + <available file="${test.src.dir}"/>
2.72 + </or>
2.73 + </condition>
2.74 + <condition property="have.sources">
2.75 + <or>
2.76 + <available file="${src.dir}"/>
2.77 + </or>
2.78 + </condition>
2.79 + <condition property="netbeans.home+have.tests">
2.80 + <and>
2.81 + <isset property="netbeans.home"/>
2.82 + <isset property="have.tests"/>
2.83 + </and>
2.84 + </condition>
2.85 + <condition property="no.javadoc.preview">
2.86 + <and>
2.87 + <isset property="javadoc.preview"/>
2.88 + <isfalse value="${javadoc.preview}"/>
2.89 + </and>
2.90 + </condition>
2.91 + <property name="run.jvmargs" value=""/>
2.92 + <property name="javac.compilerargs" value=""/>
2.93 + <property name="work.dir" value="${basedir}"/>
2.94 + <condition property="no.deps">
2.95 + <and>
2.96 + <istrue value="${no.dependencies}"/>
2.97 + </and>
2.98 + </condition>
2.99 + <property name="javac.debug" value="true"/>
2.100 + <property name="javadoc.preview" value="true"/>
2.101 + <property name="application.args" value=""/>
2.102 + <property name="source.encoding" value="${file.encoding}"/>
2.103 + <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
2.104 + <and>
2.105 + <isset property="javadoc.encoding"/>
2.106 + <not>
2.107 + <equals arg1="${javadoc.encoding}" arg2=""/>
2.108 + </not>
2.109 + </and>
2.110 + </condition>
2.111 + <property name="javadoc.encoding.used" value="${source.encoding}"/>
2.112 + <property name="includes" value="**"/>
2.113 + <property name="excludes" value=""/>
2.114 + <property name="do.depend" value="false"/>
2.115 + <condition property="do.depend.true">
2.116 + <istrue value="${do.depend}"/>
2.117 + </condition>
2.118 + <condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
2.119 + <and>
2.120 + <isset property="jaxws.endorsed.dir"/>
2.121 + <available file="nbproject/jaxws-build.xml"/>
2.122 + </and>
2.123 + </condition>
2.124 + </target>
2.125 + <target name="-post-init">
2.126 + <!-- Empty placeholder for easier customization. -->
2.127 + <!-- You can override this target in the ../build.xml file. -->
2.128 + </target>
2.129 + <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
2.130 + <fail unless="src.dir">Must set src.dir</fail>
2.131 + <fail unless="test.src.dir">Must set test.src.dir</fail>
2.132 + <fail unless="build.dir">Must set build.dir</fail>
2.133 + <fail unless="dist.dir">Must set dist.dir</fail>
2.134 + <fail unless="build.classes.dir">Must set build.classes.dir</fail>
2.135 + <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
2.136 + <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
2.137 + <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
2.138 + <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
2.139 + <fail unless="dist.jar">Must set dist.jar</fail>
2.140 + </target>
2.141 + <target name="-init-macrodef-property">
2.142 + <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
2.143 + <attribute name="name"/>
2.144 + <attribute name="value"/>
2.145 + <sequential>
2.146 + <property name="@{name}" value="${@{value}}"/>
2.147 + </sequential>
2.148 + </macrodef>
2.149 + </target>
2.150 + <target name="-init-macrodef-javac">
2.151 + <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
2.152 + <attribute default="${src.dir}" name="srcdir"/>
2.153 + <attribute default="${build.classes.dir}" name="destdir"/>
2.154 + <attribute default="${javac.classpath}" name="classpath"/>
2.155 + <attribute default="${includes}" name="includes"/>
2.156 + <attribute default="${excludes}" name="excludes"/>
2.157 + <attribute default="${javac.debug}" name="debug"/>
2.158 + <attribute default="" name="sourcepath"/>
2.159 + <element name="customize" optional="true"/>
2.160 + <sequential>
2.161 + <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}">
2.162 + <classpath>
2.163 + <path path="@{classpath}"/>
2.164 + </classpath>
2.165 + <compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
2.166 + <customize/>
2.167 + </javac>
2.168 + </sequential>
2.169 + </macrodef>
2.170 + <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
2.171 + <attribute default="${src.dir}" name="srcdir"/>
2.172 + <attribute default="${build.classes.dir}" name="destdir"/>
2.173 + <attribute default="${javac.classpath}" name="classpath"/>
2.174 + <sequential>
2.175 + <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
2.176 + <classpath>
2.177 + <path path="@{classpath}"/>
2.178 + </classpath>
2.179 + </depend>
2.180 + </sequential>
2.181 + </macrodef>
2.182 + <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
2.183 + <attribute default="${build.classes.dir}" name="destdir"/>
2.184 + <sequential>
2.185 + <fail unless="javac.includes">Must set javac.includes</fail>
2.186 + <pathconvert pathsep="," property="javac.includes.binary">
2.187 + <path>
2.188 + <filelist dir="@{destdir}" files="${javac.includes}"/>
2.189 + </path>
2.190 + <globmapper from="*.java" to="*.class"/>
2.191 + </pathconvert>
2.192 + <delete>
2.193 + <files includes="${javac.includes.binary}"/>
2.194 + </delete>
2.195 + </sequential>
2.196 + </macrodef>
2.197 + </target>
2.198 + <target name="-init-macrodef-junit">
2.199 + <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
2.200 + <attribute default="${includes}" name="includes"/>
2.201 + <attribute default="${excludes}" name="excludes"/>
2.202 + <attribute default="**" name="testincludes"/>
2.203 + <sequential>
2.204 + <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
2.205 + <batchtest todir="${build.test.results.dir}">
2.206 + <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
2.207 + <filename name="@{testincludes}"/>
2.208 + </fileset>
2.209 + </batchtest>
2.210 + <classpath>
2.211 + <path path="${run.test.classpath}"/>
2.212 + </classpath>
2.213 + <syspropertyset>
2.214 + <propertyref prefix="test-sys-prop."/>
2.215 + <mapper from="test-sys-prop.*" to="*" type="glob"/>
2.216 + </syspropertyset>
2.217 + <formatter type="brief" usefile="false"/>
2.218 + <formatter type="xml"/>
2.219 + <jvmarg line="${run.jvmargs}"/>
2.220 + </junit>
2.221 + </sequential>
2.222 + </macrodef>
2.223 + </target>
2.224 + <target name="-init-macrodef-nbjpda">
2.225 + <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
2.226 + <attribute default="${main.class}" name="name"/>
2.227 + <attribute default="${debug.classpath}" name="classpath"/>
2.228 + <attribute default="" name="stopclassname"/>
2.229 + <sequential>
2.230 + <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="dt_socket">
2.231 + <classpath>
2.232 + <path path="@{classpath}"/>
2.233 + </classpath>
2.234 + </nbjpdastart>
2.235 + </sequential>
2.236 + </macrodef>
2.237 + <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
2.238 + <attribute default="${build.classes.dir}" name="dir"/>
2.239 + <sequential>
2.240 + <nbjpdareload>
2.241 + <fileset dir="@{dir}" includes="${fix.classes}">
2.242 + <include name="${fix.includes}*.class"/>
2.243 + </fileset>
2.244 + </nbjpdareload>
2.245 + </sequential>
2.246 + </macrodef>
2.247 + </target>
2.248 + <target name="-init-debug-args">
2.249 + <property name="version-output" value="java version "${ant.java.version}"/>
2.250 + <condition property="have-jdk-older-than-1.4">
2.251 + <or>
2.252 + <contains string="${version-output}" substring="java version "1.0"/>
2.253 + <contains string="${version-output}" substring="java version "1.1"/>
2.254 + <contains string="${version-output}" substring="java version "1.2"/>
2.255 + <contains string="${version-output}" substring="java version "1.3"/>
2.256 + </or>
2.257 + </condition>
2.258 + <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
2.259 + <istrue value="${have-jdk-older-than-1.4}"/>
2.260 + </condition>
2.261 + </target>
2.262 + <target depends="-init-debug-args" name="-init-macrodef-debug">
2.263 + <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
2.264 + <attribute default="${main.class}" name="classname"/>
2.265 + <attribute default="${debug.classpath}" name="classpath"/>
2.266 + <element name="customize" optional="true"/>
2.267 + <sequential>
2.268 + <java classname="@{classname}" dir="${work.dir}" fork="true">
2.269 + <jvmarg line="${debug-args-line}"/>
2.270 + <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
2.271 + <jvmarg line="${run.jvmargs}"/>
2.272 + <classpath>
2.273 + <path path="@{classpath}"/>
2.274 + </classpath>
2.275 + <syspropertyset>
2.276 + <propertyref prefix="run-sys-prop."/>
2.277 + <mapper from="run-sys-prop.*" to="*" type="glob"/>
2.278 + </syspropertyset>
2.279 + <customize/>
2.280 + </java>
2.281 + </sequential>
2.282 + </macrodef>
2.283 + </target>
2.284 + <target name="-init-macrodef-java">
2.285 + <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
2.286 + <attribute default="${main.class}" name="classname"/>
2.287 + <element name="customize" optional="true"/>
2.288 + <sequential>
2.289 + <java classname="@{classname}" dir="${work.dir}" fork="true">
2.290 + <jvmarg line="${run.jvmargs}"/>
2.291 + <classpath>
2.292 + <path path="${run.classpath}"/>
2.293 + </classpath>
2.294 + <syspropertyset>
2.295 + <propertyref prefix="run-sys-prop."/>
2.296 + <mapper from="run-sys-prop.*" to="*" type="glob"/>
2.297 + </syspropertyset>
2.298 + <customize/>
2.299 + </java>
2.300 + </sequential>
2.301 + </macrodef>
2.302 + </target>
2.303 + <target name="-init-presetdef-jar">
2.304 + <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
2.305 + <jar compress="${jar.compress}" jarfile="${dist.jar}">
2.306 + <j2seproject1:fileset dir="${build.classes.dir}"/>
2.307 + </jar>
2.308 + </presetdef>
2.309 + </target>
2.310 + <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"/>
2.311 + <!--
2.312 + ===================
2.313 + COMPILATION SECTION
2.314 + ===================
2.315 + -->
2.316 + <target depends="init" name="deps-jar" unless="no.deps"/>
2.317 + <target depends="init,deps-jar" name="-pre-pre-compile">
2.318 + <mkdir dir="${build.classes.dir}"/>
2.319 + </target>
2.320 + <target name="-pre-compile">
2.321 + <!-- Empty placeholder for easier customization. -->
2.322 + <!-- You can override this target in the ../build.xml file. -->
2.323 + </target>
2.324 + <target if="do.depend.true" name="-compile-depend">
2.325 + <j2seproject3:depend/>
2.326 + </target>
2.327 + <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
2.328 + <j2seproject3:javac/>
2.329 + <copy todir="${build.classes.dir}">
2.330 + <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
2.331 + </copy>
2.332 + </target>
2.333 + <target name="-post-compile">
2.334 + <!-- Empty placeholder for easier customization. -->
2.335 + <!-- You can override this target in the ../build.xml file. -->
2.336 + </target>
2.337 + <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
2.338 + <target name="-pre-compile-single">
2.339 + <!-- Empty placeholder for easier customization. -->
2.340 + <!-- You can override this target in the ../build.xml file. -->
2.341 + </target>
2.342 + <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
2.343 + <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
2.344 + <j2seproject3:force-recompile/>
2.345 + <j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.dir}"/>
2.346 + </target>
2.347 + <target name="-post-compile-single">
2.348 + <!-- Empty placeholder for easier customization. -->
2.349 + <!-- You can override this target in the ../build.xml file. -->
2.350 + </target>
2.351 + <target depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
2.352 + <!--
2.353 + ====================
2.354 + JAR BUILDING SECTION
2.355 + ====================
2.356 + -->
2.357 + <target depends="init" name="-pre-pre-jar">
2.358 + <dirname file="${dist.jar}" property="dist.jar.dir"/>
2.359 + <mkdir dir="${dist.jar.dir}"/>
2.360 + </target>
2.361 + <target name="-pre-jar">
2.362 + <!-- Empty placeholder for easier customization. -->
2.363 + <!-- You can override this target in the ../build.xml file. -->
2.364 + </target>
2.365 + <target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
2.366 + <j2seproject1:jar/>
2.367 + </target>
2.368 + <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
2.369 + <j2seproject1:jar manifest="${manifest.file}"/>
2.370 + </target>
2.371 + <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">
2.372 + <j2seproject1:jar manifest="${manifest.file}">
2.373 + <j2seproject1:manifest>
2.374 + <j2seproject1:attribute name="Main-Class" value="${main.class}"/>
2.375 + </j2seproject1:manifest>
2.376 + </j2seproject1:jar>
2.377 + <echo>To run this application from the command line without Ant, try:</echo>
2.378 + <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
2.379 + <property location="${dist.jar}" name="dist.jar.resolved"/>
2.380 + <pathconvert property="run.classpath.with.dist.jar">
2.381 + <path path="${run.classpath}"/>
2.382 + <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
2.383 + </pathconvert>
2.384 + <echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
2.385 + </target>
2.386 + <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
2.387 + <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
2.388 + <pathconvert property="run.classpath.without.build.classes.dir">
2.389 + <path path="${run.classpath}"/>
2.390 + <map from="${build.classes.dir.resolved}" to=""/>
2.391 + </pathconvert>
2.392 + <pathconvert pathsep=" " property="jar.classpath">
2.393 + <path path="${run.classpath.without.build.classes.dir}"/>
2.394 + <chainedmapper>
2.395 + <flattenmapper/>
2.396 + <globmapper from="*" to="lib/*"/>
2.397 + </chainedmapper>
2.398 + </pathconvert>
2.399 + <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
2.400 + <copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
2.401 + <fileset dir="${build.classes.dir}"/>
2.402 + <manifest>
2.403 + <attribute name="Main-Class" value="${main.class}"/>
2.404 + <attribute name="Class-Path" value="${jar.classpath}"/>
2.405 + </manifest>
2.406 + </copylibs>
2.407 + <echo>To run this application from the command line without Ant, try:</echo>
2.408 + <property location="${dist.jar}" name="dist.jar.resolved"/>
2.409 + <echo>java -jar "${dist.jar.resolved}"</echo>
2.410 + </target>
2.411 + <target name="-post-jar">
2.412 + <!-- Empty placeholder for easier customization. -->
2.413 + <!-- You can override this target in the ../build.xml file. -->
2.414 + </target>
2.415 + <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"/>
2.416 + <!--
2.417 + =================
2.418 + EXECUTION SECTION
2.419 + =================
2.420 + -->
2.421 + <target depends="init,compile" description="Run a main class." name="run">
2.422 + <j2seproject1:java>
2.423 + <customize>
2.424 + <arg line="${application.args}"/>
2.425 + </customize>
2.426 + </j2seproject1:java>
2.427 + </target>
2.428 + <target name="-do-not-recompile">
2.429 + <property name="javac.includes.binary" value=""/>
2.430 + </target>
2.431 + <target depends="init,-do-not-recompile,compile-single" name="run-single">
2.432 + <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
2.433 + <j2seproject1:java classname="${run.class}"/>
2.434 + </target>
2.435 + <!--
2.436 + =================
2.437 + DEBUGGING SECTION
2.438 + =================
2.439 + -->
2.440 + <target depends="init" if="netbeans.home" name="-debug-start-debugger">
2.441 + <j2seproject1:nbjpdastart name="${debug.class}"/>
2.442 + </target>
2.443 + <target depends="init,compile" name="-debug-start-debuggee">
2.444 + <j2seproject3:debug>
2.445 + <customize>
2.446 + <arg line="${application.args}"/>
2.447 + </customize>
2.448 + </j2seproject3:debug>
2.449 + </target>
2.450 + <target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
2.451 + <target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
2.452 + <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
2.453 + </target>
2.454 + <target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
2.455 + <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
2.456 + <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
2.457 + <j2seproject3:debug classname="${debug.class}"/>
2.458 + </target>
2.459 + <target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
2.460 + <target depends="init" name="-pre-debug-fix">
2.461 + <fail unless="fix.includes">Must set fix.includes</fail>
2.462 + <property name="javac.includes" value="${fix.includes}.java"/>
2.463 + </target>
2.464 + <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
2.465 + <j2seproject1:nbjpdareload/>
2.466 + </target>
2.467 + <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
2.468 + <!--
2.469 + ===============
2.470 + JAVADOC SECTION
2.471 + ===============
2.472 + -->
2.473 + <target depends="init" name="-javadoc-build">
2.474 + <mkdir dir="${dist.javadoc.dir}"/>
2.475 + <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}">
2.476 + <classpath>
2.477 + <path path="${javac.classpath}"/>
2.478 + </classpath>
2.479 + <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
2.480 + <filename name="**/*.java"/>
2.481 + </fileset>
2.482 + </javadoc>
2.483 + </target>
2.484 + <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
2.485 + <nbbrowse file="${dist.javadoc.dir}/index.html"/>
2.486 + </target>
2.487 + <target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
2.488 + <!--
2.489 + =========================
2.490 + JUNIT COMPILATION SECTION
2.491 + =========================
2.492 + -->
2.493 + <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
2.494 + <mkdir dir="${build.test.classes.dir}"/>
2.495 + </target>
2.496 + <target name="-pre-compile-test">
2.497 + <!-- Empty placeholder for easier customization. -->
2.498 + <!-- You can override this target in the ../build.xml file. -->
2.499 + </target>
2.500 + <target if="do.depend.true" name="-compile-test-depend">
2.501 + <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
2.502 + </target>
2.503 + <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
2.504 + <j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
2.505 + <copy todir="${build.test.classes.dir}">
2.506 + <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
2.507 + </copy>
2.508 + </target>
2.509 + <target name="-post-compile-test">
2.510 + <!-- Empty placeholder for easier customization. -->
2.511 + <!-- You can override this target in the ../build.xml file. -->
2.512 + </target>
2.513 + <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
2.514 + <target name="-pre-compile-test-single">
2.515 + <!-- Empty placeholder for easier customization. -->
2.516 + <!-- You can override this target in the ../build.xml file. -->
2.517 + </target>
2.518 + <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
2.519 + <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
2.520 + <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
2.521 + <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}"/>
2.522 + <copy todir="${build.test.classes.dir}">
2.523 + <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
2.524 + </copy>
2.525 + </target>
2.526 + <target name="-post-compile-test-single">
2.527 + <!-- Empty placeholder for easier customization. -->
2.528 + <!-- You can override this target in the ../build.xml file. -->
2.529 + </target>
2.530 + <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
2.531 + <!--
2.532 + =======================
2.533 + JUNIT EXECUTION SECTION
2.534 + =======================
2.535 + -->
2.536 + <target depends="init" if="have.tests" name="-pre-test-run">
2.537 + <mkdir dir="${build.test.results.dir}"/>
2.538 + </target>
2.539 + <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
2.540 + <j2seproject3:junit testincludes="**/*Test.java"/>
2.541 + </target>
2.542 + <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
2.543 + <fail if="tests.failed">Some tests failed; see details above.</fail>
2.544 + </target>
2.545 + <target depends="init" if="have.tests" name="test-report"/>
2.546 + <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
2.547 + <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
2.548 + <target depends="init" if="have.tests" name="-pre-test-run-single">
2.549 + <mkdir dir="${build.test.results.dir}"/>
2.550 + </target>
2.551 + <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
2.552 + <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
2.553 + <j2seproject3:junit excludes="" includes="${test.includes}"/>
2.554 + </target>
2.555 + <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
2.556 + <fail if="tests.failed">Some tests failed; see details above.</fail>
2.557 + </target>
2.558 + <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"/>
2.559 + <!--
2.560 + =======================
2.561 + JUNIT DEBUGGING SECTION
2.562 + =======================
2.563 + -->
2.564 + <target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
2.565 + <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
2.566 + <property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
2.567 + <delete file="${test.report.file}"/>
2.568 + <mkdir dir="${build.test.results.dir}"/>
2.569 + <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}">
2.570 + <customize>
2.571 + <syspropertyset>
2.572 + <propertyref prefix="test-sys-prop."/>
2.573 + <mapper from="test-sys-prop.*" to="*" type="glob"/>
2.574 + </syspropertyset>
2.575 + <arg value="${test.class}"/>
2.576 + <arg value="showoutput=true"/>
2.577 + <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
2.578 + <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
2.579 + </customize>
2.580 + </j2seproject3:debug>
2.581 + </target>
2.582 + <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
2.583 + <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
2.584 + </target>
2.585 + <target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
2.586 + <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
2.587 + <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
2.588 + </target>
2.589 + <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
2.590 + <!--
2.591 + =========================
2.592 + APPLET EXECUTION SECTION
2.593 + =========================
2.594 + -->
2.595 + <target depends="init,compile-single" name="run-applet">
2.596 + <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
2.597 + <j2seproject1:java classname="sun.applet.AppletViewer">
2.598 + <customize>
2.599 + <arg value="${applet.url}"/>
2.600 + </customize>
2.601 + </j2seproject1:java>
2.602 + </target>
2.603 + <!--
2.604 + =========================
2.605 + APPLET DEBUGGING SECTION
2.606 + =========================
2.607 + -->
2.608 + <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
2.609 + <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
2.610 + <j2seproject3:debug classname="sun.applet.AppletViewer">
2.611 + <customize>
2.612 + <arg value="${applet.url}"/>
2.613 + </customize>
2.614 + </j2seproject3:debug>
2.615 + </target>
2.616 + <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
2.617 + <!--
2.618 + ===============
2.619 + CLEANUP SECTION
2.620 + ===============
2.621 + -->
2.622 + <target depends="init" name="deps-clean" unless="no.deps"/>
2.623 + <target depends="init" name="-do-clean">
2.624 + <delete dir="${build.dir}"/>
2.625 + <delete dir="${dist.dir}"/>
2.626 + </target>
2.627 + <target name="-post-clean">
2.628 + <!-- Empty placeholder for easier customization. -->
2.629 + <!-- You can override this target in the ../build.xml file. -->
2.630 + </target>
2.631 + <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
2.632 +</project>
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/java/Postak/nbproject/genfiles.properties Sun Nov 23 22:19:20 2008 +0100
3.3 @@ -0,0 +1,8 @@
3.4 +build.xml.data.CRC32=ecce8ba0
3.5 +build.xml.script.CRC32=b613dcff
3.6 +build.xml.stylesheet.CRC32=be360661
3.7 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
3.8 +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
3.9 +nbproject/build-impl.xml.data.CRC32=ecce8ba0
3.10 +nbproject/build-impl.xml.script.CRC32=38f4cab2
3.11 +nbproject/build-impl.xml.stylesheet.CRC32=487672f9
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2 +++ b/java/Postak/nbproject/private/private.properties Sun Nov 23 22:19:20 2008 +0100
4.3 @@ -0,0 +1,6 @@
4.4 +do.depend=false
4.5 +do.jar=true
4.6 +javac.debug=true
4.7 +javadoc.preview=true
4.8 +jaxws.endorsed.dir=/usr/local/netbeans-6.1/java2/modules/ext/jaxws21/api
4.9 +user.properties.file=/home/fiki/.netbeans/6.1/build.properties
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
5.2 +++ b/java/Postak/nbproject/project.properties Sun Nov 23 22:19:20 2008 +0100
5.3 @@ -0,0 +1,67 @@
5.4 +application.title=Postak
5.5 +application.vendor=fiki
5.6 +build.classes.dir=${build.dir}/classes
5.7 +build.classes.excludes=**/*.java,**/*.form
5.8 +# This directory is removed when the project is cleaned:
5.9 +build.dir=build
5.10 +build.generated.dir=${build.dir}/generated
5.11 +# Only compile against the classpath explicitly listed here:
5.12 +build.sysclasspath=ignore
5.13 +build.test.classes.dir=${build.dir}/test/classes
5.14 +build.test.results.dir=${build.dir}/test/results
5.15 +debug.classpath=\
5.16 + ${run.classpath}
5.17 +debug.test.classpath=\
5.18 + ${run.test.classpath}
5.19 +# This directory is removed when the project is cleaned:
5.20 +dist.dir=dist
5.21 +dist.jar=${dist.dir}/Postak.jar
5.22 +dist.javadoc.dir=${dist.dir}/javadoc
5.23 +excludes=
5.24 +includes=**
5.25 +jar.compress=false
5.26 +javac.classpath=\
5.27 + ${libs.JAF.classpath}:\
5.28 + ${libs.JavaMail.classpath}
5.29 +# Space-separated list of extra javac options
5.30 +javac.compilerargs=
5.31 +javac.deprecation=false
5.32 +javac.source=1.5
5.33 +javac.target=1.5
5.34 +javac.test.classpath=\
5.35 + ${javac.classpath}:\
5.36 + ${build.classes.dir}:\
5.37 + ${libs.junit.classpath}:\
5.38 + ${libs.junit_4.classpath}
5.39 +javadoc.additionalparam=
5.40 +javadoc.author=false
5.41 +javadoc.encoding=${source.encoding}
5.42 +javadoc.noindex=false
5.43 +javadoc.nonavbar=false
5.44 +javadoc.notree=false
5.45 +javadoc.private=false
5.46 +javadoc.splitindex=true
5.47 +javadoc.use=true
5.48 +javadoc.version=false
5.49 +javadoc.windowtitle=
5.50 +# Property libs.JAF.classpath is set here just to make sharing of project simpler.
5.51 +# The library definition has always preference over this property.
5.52 +libs.JAF.classpath=../../../../../java/lib/jaf/jaf-1.1.1/activation.jar
5.53 +# Property libs.JavaMail.classpath is set here just to make sharing of project simpler.
5.54 +# The library definition has always preference over this property.
5.55 +libs.JavaMail.classpath=../../../../../java/lib/java-mail/javamail-1.4.1/mail.jar:../../../../../java/lib/java-mail/javamail-1.4.1/lib/dsn.jar:../../../../../java/lib/java-mail/javamail-1.4.1/lib/imap.jar:../../../../../java/lib/java-mail/javamail-1.4.1/lib/mailapi.jar:../../../../../java/lib/java-mail/javamail-1.4.1/lib/pop3.jar:../../../../../java/lib/java-mail/javamail-1.4.1/lib/smtp.jar
5.56 +meta.inf.dir=${src.dir}/META-INF
5.57 +platform.active=default_platform
5.58 +run.classpath=\
5.59 + ${javac.classpath}:\
5.60 + ${build.classes.dir}
5.61 +# Space-separated list of JVM arguments used when running the project
5.62 +# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
5.63 +# or test-sys-prop.name=value to set system properties for unit tests):
5.64 +run.jvmargs=
5.65 +run.test.classpath=\
5.66 + ${javac.test.classpath}:\
5.67 + ${build.test.classes.dir}
5.68 +source.encoding=UTF-8
5.69 +src.dir=src
5.70 +test.src.dir=test
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
6.2 +++ b/java/Postak/nbproject/project.xml Sun Nov 23 22:19:20 2008 +0100
6.3 @@ -0,0 +1,16 @@
6.4 +<?xml version="1.0" encoding="UTF-8"?>
6.5 +<project xmlns="http://www.netbeans.org/ns/project/1">
6.6 + <type>org.netbeans.modules.java.j2seproject</type>
6.7 + <configuration>
6.8 + <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
6.9 + <name>Postak</name>
6.10 + <minimum-ant-version>1.6.5</minimum-ant-version>
6.11 + <source-roots>
6.12 + <root id="src.dir"/>
6.13 + </source-roots>
6.14 + <test-roots>
6.15 + <root id="test.src.dir"/>
6.16 + </test-roots>
6.17 + </data>
6.18 + </configuration>
6.19 +</project>
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
7.2 +++ b/java/Postak/src/cz/frantovo/postak/HromadnaZprava.java Sun Nov 23 22:19:20 2008 +0100
7.3 @@ -0,0 +1,138 @@
7.4 +package cz.frantovo.postak;
7.5 +
7.6 +import java.util.ArrayList;
7.7 +import java.util.Collection;
7.8 +import java.util.logging.Level;
7.9 +import java.util.logging.Logger;
7.10 +import javax.mail.internet.InternetAddress;
7.11 +
7.12 +/**
7.13 + * Hromadná zpráva. Umí se rozdělit i na více dílčích zpráv,
7.14 + * které se vejdou do limitu příjemců SMTP serveru.
7.15 + * @author fiki
7.16 + */
7.17 +public class HromadnaZprava implements Cloneable {
7.18 +
7.19 + private static Logger log = Logger.getLogger(HromadnaZprava.class.getName());
7.20 + /** Předmět zprávy */
7.21 + private String predmet;
7.22 + /** Adresa a případně jméno odesílatele */
7.23 + private InternetAddress odesilatel;
7.24 + /** Zda má být zpráva odeslána jako HTML nebo prostý text */
7.25 + private boolean formatHTML = false;
7.26 + /** Tělo zprávy - prostý text */
7.27 + private String text;
7.28 + /** Všichni příjemci této zprávy */
7.29 + private ArrayList<InternetAddressKomu> prijemci = new ArrayList<InternetAddressKomu>();
7.30 + /** Hlavička Reply-to */
7.31 + private InternetAddress odpovedetKomu;
7.32 +
7.33 + public String getPredmet() {
7.34 + return predmet;
7.35 + }
7.36 +
7.37 + public void setPredmet(String predmet) {
7.38 + this.predmet = predmet;
7.39 + }
7.40 +
7.41 + public InternetAddress getOdesilatel() {
7.42 + return odesilatel;
7.43 + }
7.44 +
7.45 + public void setOdesilatel(InternetAddress odesilatel) {
7.46 + this.odesilatel = odesilatel;
7.47 + }
7.48 +
7.49 + public String getText() {
7.50 + return text;
7.51 + }
7.52 +
7.53 + public void setText(String text) {
7.54 + this.text = text;
7.55 + }
7.56 +
7.57 + public ArrayList<InternetAddressKomu> getPrijemci() {
7.58 + return prijemci;
7.59 + }
7.60 +
7.61 + /**
7.62 + * @param prijemci pokud je null, nastaví prázdná kolekce.
7.63 + */
7.64 + public void setPrijemci(ArrayList<InternetAddressKomu> prijemci) {
7.65 + this.prijemci = new ArrayList<InternetAddressKomu>();
7.66 + pridejPrijemce(prijemci);
7.67 + }
7.68 +
7.69 + public void pridejPrijemce(Collection<InternetAddressKomu> prijemci) {
7.70 + if (prijemci == null) {
7.71 + log.log(Level.FINER, "Prázdná množina příjemců - nic nepřidáme");
7.72 + } else {
7.73 + this.prijemci.addAll(prijemci);
7.74 + }
7.75 + }
7.76 +
7.77 + /**
7.78 + * Pokud má zpráva více přijemců, než je limit povolený SMTP serverem,
7.79 + * rozdělí se zpráva na více dílčích zpráv.
7.80 + * @param limit maximální počet příjemců jedné zprávy (omezení SMTP serveru)
7.81 + */
7.82 + public Collection<HromadnaZprava> getDilciZpravy(int limit) {
7.83 + Collection<HromadnaZprava> zpravy = new ArrayList<HromadnaZprava>();
7.84 +
7.85 + if (limit < getPrijemci().size()) {
7.86 + /** Zprávu je potřeba rozdělit */
7.87 + try {
7.88 + HromadnaZprava dilciZprava = (HromadnaZprava) clone();
7.89 + dilciZprava.setPrijemci(null);
7.90 +
7.91 + ArrayList<InternetAddressKomu> vsichniPrijemci = getPrijemci();
7.92 + for (InternetAddressKomu prijemce : vsichniPrijemci) {
7.93 + dilciZprava.getPrijemci().add(prijemce);
7.94 +
7.95 + if (dilciZprava.getPrijemci().size() == limit) {
7.96 + zpravy.add(dilciZprava);
7.97 + dilciZprava = (HromadnaZprava) clone();
7.98 + dilciZprava.setPrijemci(null);
7.99 + }
7.100 + }
7.101 +
7.102 + if (dilciZprava.getPrijemci().size() > 0) {
7.103 + /**
7.104 + * Počet příjemců není násobkem limitu,
7.105 + * takže nakonci ještě někteří zbyli.
7.106 + * Z nich budou příjemci pro poslední dílčí zprávu.
7.107 + */
7.108 + zpravy.add(dilciZprava);
7.109 + }
7.110 +
7.111 +
7.112 + } catch (CloneNotSupportedException ex) {
7.113 + /** Tohle by nikdy nemělo nastat */
7.114 + log.log(Level.SEVERE, "Hromandou zprávu se nepodařilo naklonovat - divné.", ex);
7.115 + zpravy.add(this);
7.116 + }
7.117 + } else {
7.118 + /** Zprávu má málo příjemců - můžeme ji odeslat najednou */
7.119 + zpravy.add(this);
7.120 + }
7.121 +
7.122 + return zpravy;
7.123 + }
7.124 +
7.125 + public boolean isFormatHTML() {
7.126 + return formatHTML;
7.127 + }
7.128 +
7.129 + public void setFormatHTML(boolean formatHTML) {
7.130 + this.formatHTML = formatHTML;
7.131 + }
7.132 +
7.133 + public InternetAddress getOdpovedetKomu() {
7.134 + return odpovedetKomu;
7.135 + }
7.136 +
7.137 + /** Pokud je null, hlavička Reply-to se v e-mailu vůbec nenastaví. */
7.138 + public void setOdpovedetKomu(InternetAddress odpovedetKomu) {
7.139 + this.odpovedetKomu = odpovedetKomu;
7.140 + }
7.141 +}
8.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
8.2 +++ b/java/Postak/src/cz/frantovo/postak/InternetAddressKomu.java Sun Nov 23 22:19:20 2008 +0100
8.3 @@ -0,0 +1,54 @@
8.4 +package cz.frantovo.postak;
8.5 +
8.6 +import java.io.UnsupportedEncodingException;
8.7 +import javax.mail.Message.RecipientType;
8.8 +import javax.mail.internet.InternetAddress;
8.9 +
8.10 +/**
8.11 + * Rozšíření InternetAddress tak, aby obsahovala i informaci o typu příjemce: komu, kopie, skrytá
8.12 + * @author fiki
8.13 + */
8.14 +public class InternetAddressKomu extends InternetAddress {
8.15 +
8.16 + private RecipientType typ = RecipientType.BCC;
8.17 +
8.18 + /**
8.19 + * Typ příjemce: komu, kopie, skrytý.
8.20 + * Výchozí hodnota je BCC
8.21 + */
8.22 + public RecipientType getTyp() {
8.23 + return typ;
8.24 + }
8.25 +
8.26 + /**
8.27 + * Typ příjemce: komu, kopie, skrytý.
8.28 + * Výchozí hodnota je BCC
8.29 + */
8.30 + public void setTyp(RecipientType typ) {
8.31 + this.typ = typ;
8.32 + }
8.33 +
8.34 + @Override
8.35 + public String getPersonal() {
8.36 + String sup = super.getPersonal();
8.37 + if (sup == null || sup.length() < 1) {
8.38 + return getAddress();
8.39 + } else {
8.40 + return sup;
8.41 + }
8.42 + }
8.43 +
8.44 + public InternetAddressKomu() {
8.45 + super();
8.46 + }
8.47 +
8.48 + /** Výchozí typ příjemce: skrytá kopie */
8.49 + public InternetAddressKomu(String adresa, String jmeno) throws UnsupportedEncodingException {
8.50 + super(adresa, jmeno);
8.51 + }
8.52 +
8.53 + public InternetAddressKomu(String adresa, String jmeno, RecipientType typ) throws UnsupportedEncodingException {
8.54 + super(adresa, jmeno);
8.55 + setTyp(typ);
8.56 + }
8.57 +}
9.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
9.2 +++ b/java/Postak/src/cz/frantovo/postak/Nastaveni.java Sun Nov 23 22:19:20 2008 +0100
9.3 @@ -0,0 +1,114 @@
9.4 +/*
9.5 + * To change this template, choose Tools | Templates
9.6 + * and open the template in the editor.
9.7 + */
9.8 +
9.9 +package cz.frantovo.postak;
9.10 +
9.11 +import java.util.ArrayList;
9.12 +
9.13 +/**
9.14 + *
9.15 + * @author fiki
9.16 + */
9.17 +public class Nastaveni {
9.18 +
9.19 + private String postovniServer = "localhost";
9.20 + private int postovniPort = 25;
9.21 + private String postovniJmeno;
9.22 + private char[] postovniHeslo;
9.23 + private int limitZprav = 1000;
9.24 +
9.25 + /** Připojovací řetězec */
9.26 + private String databaze;
9.27 + private String dbJmeno;
9.28 + private char[] dbHeslo;
9.29 +
9.30 + /** Výchozí příjemci */
9.31 + private ArrayList<InternetAddressKomu> vychoziPrijemci;
9.32 +
9.33 + /** Přejatá konstanta od SuperPošťáka */
9.34 + private String cestaKCertifikatum;
9.35 +
9.36 + public String getCestaKCertifikatum() {
9.37 + return cestaKCertifikatum;
9.38 + }
9.39 +
9.40 + public void setCestaKCertifikatum(String cestaKCertifikatum) {
9.41 + this.cestaKCertifikatum = cestaKCertifikatum;
9.42 + }
9.43 +
9.44 + public String getPostovniServer() {
9.45 + return postovniServer;
9.46 + }
9.47 +
9.48 + public void setPostovniServer(String postovniServer) {
9.49 + this.postovniServer = postovniServer;
9.50 + }
9.51 +
9.52 + public int getPostovniPort() {
9.53 + return postovniPort;
9.54 + }
9.55 +
9.56 + public void setPostovniPort(int postovniPort) {
9.57 + this.postovniPort = postovniPort;
9.58 + }
9.59 +
9.60 + public String getPostovniJmeno() {
9.61 + return postovniJmeno;
9.62 + }
9.63 +
9.64 + public void setPostovniJmeno(String postovniJmeno) {
9.65 + this.postovniJmeno = postovniJmeno;
9.66 + }
9.67 +
9.68 + public char[] getPostovniHeslo() {
9.69 + return postovniHeslo;
9.70 + }
9.71 +
9.72 + public void setPostovniHeslo(char[] postovniHeslo) {
9.73 + this.postovniHeslo = postovniHeslo;
9.74 + }
9.75 +
9.76 + public int getLimitZprav() {
9.77 + return limitZprav;
9.78 + }
9.79 +
9.80 + public void setLimitZprav(int limitZprav) {
9.81 + this.limitZprav = limitZprav;
9.82 + }
9.83 +
9.84 + public String getDatabaze() {
9.85 + return databaze;
9.86 + }
9.87 +
9.88 + public String getDbJmeno() {
9.89 + return dbJmeno;
9.90 + }
9.91 +
9.92 + public char[] getDbHeslo() {
9.93 + return dbHeslo;
9.94 + }
9.95 +
9.96 + public ArrayList<InternetAddressKomu> getVychoziPrijemci() {
9.97 + return vychoziPrijemci;
9.98 + }
9.99 +
9.100 + public void setDatabaze(String databaze) {
9.101 + this.databaze = databaze;
9.102 + }
9.103 +
9.104 + public void setDbJmeno(String dbJmeno) {
9.105 + this.dbJmeno = dbJmeno;
9.106 + }
9.107 +
9.108 + public void setDbHeslo(char[] dbHeslo) {
9.109 + this.dbHeslo = dbHeslo;
9.110 + }
9.111 +
9.112 + public void setVychoziPrijemci(ArrayList<InternetAddressKomu> vychoziPrijemci) {
9.113 + this.vychoziPrijemci = vychoziPrijemci;
9.114 + }
9.115 +
9.116 +
9.117 +}
10.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
10.2 +++ b/java/Postak/src/cz/frantovo/postak/Postak.java Sun Nov 23 22:19:20 2008 +0100
10.3 @@ -0,0 +1,221 @@
10.4 +package cz.frantovo.postak;
10.5 +
10.6 +import java.io.File;
10.7 +import java.util.ArrayList;
10.8 +import java.util.Collection;
10.9 +import java.util.Properties;
10.10 +import java.util.logging.Level;
10.11 +import java.util.logging.Logger;
10.12 +import java.util.regex.Pattern;
10.13 +import javax.mail.Address;
10.14 +import javax.mail.Authenticator;
10.15 +import javax.mail.MessagingException;
10.16 +import javax.mail.PasswordAuthentication;
10.17 +import javax.mail.Session;
10.18 +import javax.mail.Transport;
10.19 +import javax.mail.internet.MimeMessage;
10.20 +
10.21 +/**
10.22 + * Odešle hromadnou zprávu pomocí SMTP.
10.23 + *
10.24 + * @author fiki
10.25 + */
10.26 +public class Postak {
10.27 +
10.28 + private static Logger log = Logger.getLogger(Postak.class.getName());
10.29 + /** Regulární výraz pro správnou e-mailovou adresu */
10.30 + private static String REGULARNI_EMAIL = "^[_a-zA-Z0-9\\.\\-]+@[_a-zA-Z0-9\\.\\-]+\\.[a-zA-Z]{2,4}$";
10.31 +
10.32 + private Nastaveni nastaveni;
10.33 +
10.34 + public Postak(Nastaveni nastaveni) {
10.35 + this.nastaveni = nastaveni;
10.36 + }
10.37 +
10.38 + public void setNastaveni(Nastaveni nastaveni) {
10.39 + this.nastaveni = nastaveni;
10.40 + }
10.41 +
10.42 + /**
10.43 + * Nízkoúrovňová odesílací metoda, která už nekontroluje limit příjemců.
10.44 + * Pokud se nevejdou do limitu SMTP serveru, vyhazuje výjimku.
10.45 + *
10.46 + * TODO: lepší to bude nestaické - nastavení si vyžádat v konstruktoru
10.47 + */
10.48 + private void odesliSMTP(HromadnaZprava zprava) throws MessagingException {
10.49 +
10.50 + if (zkontrolujZpravu(zprava) && zkontrolujNastaveni(nastaveni)) {
10.51 +
10.52 + /** Inicializace SMTP */
10.53 + Properties smtpVlastnosti = System.getProperties();
10.54 + smtpVlastnosti.put("mail.smtp.host", nastaveni.getPostovniServer());
10.55 + smtpVlastnosti.put("mail.smtp.port", String.valueOf(nastaveni.getPostovniPort()));
10.56 +
10.57 + if (nastaveni.getPostovniPort() == 465) {
10.58 + if (new File(nastaveni.getCestaKCertifikatum()).exists()) {
10.59 + System.setProperty("javax.net.ssl.trustStore", nastaveni.getCestaKCertifikatum());
10.60 + log.log(Level.INFO, "Používám vlastní důvěryhodné certifikáty: " + nastaveni.getCestaKCertifikatum());
10.61 + }
10.62 + /** TODO: neřídit se číslem portu, ale přidat příznak pro šifrování */
10.63 + smtpVlastnosti.put("mail.smtp.starttls.enable", "true");
10.64 + smtpVlastnosti.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
10.65 + smtpVlastnosti.put("mail.smtp.socketFactory.port", String.valueOf(nastaveni.getPostovniPort()));
10.66 + smtpVlastnosti.put("mail.smtp.socketFactory.fallback", "false");
10.67 + /**
10.68 + * NAHRÁNÍ CERTIFIKÁTU:
10.69 + * 1) stáhneme si certifikát (---BEGIN CERTIFICATE---) a uložíme do vse_ca.cer
10.70 + * 2) keytool -importcert -file vse_ca.cer -keystore DuveryhodneCertifikaty.keystore -storepass "changeit"
10.71 + * Pokud daný soubor existuje, program ho používá, pokud ne, používá certifikáty uložené v systému (Javovské).
10.72 + */
10.73 + }
10.74 +
10.75 + PostakuvHeslovnik heslovnik = new PostakuvHeslovnik();
10.76 + if (nastaveni.getPostovniJmeno() != null && nastaveni.getPostovniJmeno().length() > 0) {
10.77 + heslovnik.setJmenoHeslo(nastaveni.getPostovniJmeno(), nastaveni.getPostovniHeslo());
10.78 + smtpVlastnosti.put("mail.smtp.auth", "true");
10.79 + log.log(Level.FINEST, "Používám pro SMTP jméno a heslo");
10.80 + }
10.81 +
10.82 + Session smtpRelace = Session.getInstance(smtpVlastnosti, heslovnik);
10.83 +
10.84 + smtpRelace.setDebug(true);
10.85 + smtpRelace.setDebugOut(System.out);
10.86 +
10.87 + /** Sestavení zprávy */
10.88 + MimeMessage mimeZprava = new MimeMessage(smtpRelace);
10.89 + mimeZprava.setFrom(zprava.getOdesilatel());
10.90 + if (zprava.getOdpovedetKomu() != null) {
10.91 + Address[] odpovedetKomu = {zprava.getOdpovedetKomu()};
10.92 + mimeZprava.setReplyTo(odpovedetKomu);
10.93 + }
10.94 + naplnPrijemce(mimeZprava, zprava);
10.95 + mimeZprava.setSubject(zprava.getPredmet());
10.96 + mimeZprava.setHeader("User-Agent", "http://frantovo.cz/projekty/SuperPostak/");
10.97 + if (zprava.isFormatHTML()) {
10.98 + mimeZprava.setText(zprava.getText(), "UTF-8", "html");
10.99 + } else {
10.100 + mimeZprava.setText(zprava.getText(), "UTF-8");
10.101 + }
10.102 +
10.103 + /** Vlastní odeslání */
10.104 + Transport.send(mimeZprava);
10.105 +
10.106 + } else {
10.107 + MessagingException e = new MessagingException("Zpráva nebo nastavení jsou nevyhovující");
10.108 + log.log(Level.SEVERE, null, e);
10.109 + throw e;
10.110 + }
10.111 +
10.112 + }
10.113 +
10.114 + /**
10.115 + * Nastaví zprávě (MimeMessage) všechny příjemce, které najde ve zprávě a nastavení.
10.116 + * Respektuje typy příjemců: komu, kopie, skrytá kopie.
10.117 + */
10.118 + private static void naplnPrijemce(MimeMessage mimeZprava, HromadnaZprava zprava) throws MessagingException {
10.119 + /**
10.120 + * Příjemci se budou definovat pouze ve zprávě.
10.121 + * Z nastavení se brát nebudou (výchozí příjemci už ve zprávě budou).
10.122 + */
10.123 + ArrayList<InternetAddressKomu> prijemci = zprava.getPrijemci();
10.124 + for (InternetAddressKomu komu : prijemci) {
10.125 + if (zkontrolujAdresu(komu)) {
10.126 + mimeZprava.addRecipient(komu.getTyp(), komu);
10.127 + }
10.128 + }
10.129 + }
10.130 +
10.131 + /** Vypíše do logu seznam příjemců */
10.132 + public static void vypisPrijemce(Collection<InternetAddressKomu> prijemci) {
10.133 + for (InternetAddressKomu p : prijemci) {
10.134 + log.log(Level.INFO, p.toString());
10.135 + }
10.136 + }
10.137 +
10.138 + /** Veřejná odesílací metoda.
10.139 + * Postará se o rozdělení zpráv na dílčí (které se vejdou do limitu příjemců)
10.140 + */
10.141 + public void odesli(HromadnaZprava zprava) throws MessagingException {
10.142 + Collection<HromadnaZprava> zpravy = zprava.getDilciZpravy(nastaveni.getLimitZprav());
10.143 +
10.144 + for (HromadnaZprava dilciZprava : zpravy) {
10.145 + odesliSMTP(dilciZprava);
10.146 + }
10.147 + }
10.148 +
10.149 + private static boolean zkontrolujAdresu(InternetAddressKomu a) {
10.150 + if (a.getTyp() == null) {
10.151 + log.log(Level.WARNING, "Neplatná adresa (typ): " + a.getAddress());
10.152 + return false;
10.153 + }
10.154 +
10.155 + if (a.getAddress() == null || a.getAddress().length() < 1) {
10.156 + log.log(Level.WARNING, "Neplatná adresa (address): " + a.getPersonal());
10.157 + return false;
10.158 + }
10.159 +
10.160 + if (!zkontrolujAdresu(a.getAddress())) {
10.161 + log.log(Level.WARNING, "Adresa nevyhovuje regulárnímu výrazu: " + a.getAddress());
10.162 + return false;
10.163 + }
10.164 +
10.165 + return true;
10.166 + }
10.167 +
10.168 + /** Zkontroluje e-mailovou adresu pomocí regulárního výrazu. */
10.169 + public static boolean zkontrolujAdresu(String adresa) {
10.170 + return adresa != null && Pattern.matches(REGULARNI_EMAIL, adresa);
10.171 + }
10.172 +
10.173 + /** @return Vrací true, pokud je zpráva v pořádku */
10.174 + private static boolean zkontrolujZpravu(HromadnaZprava z) {
10.175 +
10.176 + if (z.getPrijemci() == null) {
10.177 + log.log(Level.WARNING, "getPrijemci() == null");
10.178 + return false;
10.179 + }
10.180 +
10.181 + if (z.getPrijemci().size() < 1) {
10.182 + log.log(Level.WARNING, "getPrijemci().size() < 1");
10.183 + return false;
10.184 + }
10.185 +
10.186 + if (z.getOdesilatel() == null) {
10.187 + log.log(Level.WARNING, "getOdesilatel() == null");
10.188 + return false;
10.189 + }
10.190 +
10.191 + if (z.getPredmet() == null) {
10.192 + log.log(Level.WARNING, "getPredmet() == null");
10.193 + return false;
10.194 + }
10.195 +
10.196 + return true;
10.197 + }
10.198 +
10.199 + private static boolean zkontrolujNastaveni(Nastaveni n) {
10.200 +
10.201 + if (n.getPostovniServer() == null || n.getPostovniServer().length() < 1) {
10.202 + return false;
10.203 + }
10.204 +
10.205 + return true;
10.206 + }
10.207 +
10.208 + /** Slouží k uložení jména a hesla pro SMTP */
10.209 + private static class PostakuvHeslovnik extends Authenticator {
10.210 +
10.211 + private String jmeno = "user";
10.212 + private char[] heslo = "luser".toCharArray();
10.213 +
10.214 + @Override
10.215 + public PasswordAuthentication getPasswordAuthentication() {
10.216 + return new PasswordAuthentication(jmeno, String.valueOf(heslo));
10.217 + }
10.218 +
10.219 + public void setJmenoHeslo(String jmeno, char[] heslo) {
10.220 + this.jmeno = jmeno;
10.221 + this.heslo = heslo;
10.222 + }
10.223 + }
10.224 +}
11.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
11.2 +++ b/java/SuperPostak/manifest.mf Sun Nov 23 22:19:20 2008 +0100
11.3 @@ -0,0 +1,3 @@
11.4 +Manifest-Version: 1.0
11.5 +X-COMMENT: Main-Class will be added automatically by build
11.6 +
12.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
12.2 +++ b/java/SuperPostak/master.jnlp Sun Nov 23 22:19:20 2008 +0100
12.3 @@ -0,0 +1,21 @@
12.4 +<?xml version="1.0" encoding="UTF-8"?>
12.5 +<jnlp spec="1.0+" codebase="${jnlp.codebase}" href="launch.jnlp">
12.6 + <information>
12.7 + <title>${APPLICATION.TITLE}</title>
12.8 + <vendor>${APPLICATION.VENDOR}</vendor>
12.9 + <description>${APPLICATION.DESC}</description>
12.10 + <description kind="short">${APPLICATION.DESC.SHORT}</description>
12.11 + <homepage href="${APPLICATION.HOMEPAGE}"/>
12.12 +<!--${JNLP.ICONS}-->
12.13 +<!--${JNLP.OFFLINE.ALLOWED}-->
12.14 + </information>
12.15 +<!--${JNLP.SECURITY}-->
12.16 + <resources>
12.17 +<!--${JNLP.RESOURCES.RUNTIME}-->
12.18 +<!--${JNLP.RESOURCES.MAIN.JAR}-->
12.19 +<!--${JNLP.RESOURCES.JARS}-->
12.20 + </resources>
12.21 + <application-desc main-class="${jnlp.main.class}">
12.22 +<!--${JNLP.APPLICATION.ARGS}-->
12.23 + </application-desc>
12.24 +</jnlp>
13.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
13.2 +++ b/java/SuperPostak/nbproject/build-impl.xml Sun Nov 23 22:19:20 2008 +0100
13.3 @@ -0,0 +1,636 @@
13.4 +<?xml version="1.0" encoding="UTF-8"?>
13.5 +<!--
13.6 +*** GENERATED FROM project.xml - DO NOT EDIT ***
13.7 +*** EDIT ../build.xml INSTEAD ***
13.8 +
13.9 +For the purpose of easier reading the script
13.10 +is divided into following sections:
13.11 +
13.12 + - initialization
13.13 + - compilation
13.14 + - jar
13.15 + - execution
13.16 + - debugging
13.17 + - javadoc
13.18 + - junit compilation
13.19 + - junit execution
13.20 + - junit debugging
13.21 + - applet
13.22 + - cleanup
13.23 +
13.24 + -->
13.25 +<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="SuperPostak-impl">
13.26 + <import file="jnlp-impl.xml"/>
13.27 + <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
13.28 + <!--
13.29 + ======================
13.30 + INITIALIZATION SECTION
13.31 + ======================
13.32 + -->
13.33 + <target name="-pre-init">
13.34 + <!-- Empty placeholder for easier customization. -->
13.35 + <!-- You can override this target in the ../build.xml file. -->
13.36 + </target>
13.37 + <target depends="-pre-init" name="-init-private">
13.38 + <property file="nbproject/private/config.properties"/>
13.39 + <property file="nbproject/private/configs/${config}.properties"/>
13.40 + <property file="nbproject/private/private.properties"/>
13.41 + </target>
13.42 + <target depends="-pre-init,-init-private" name="-init-user">
13.43 + <property file="${user.properties.file}"/>
13.44 + <!-- The two properties below are usually overridden -->
13.45 + <!-- by the active platform. Just a fallback. -->
13.46 + <property name="default.javac.source" value="1.4"/>
13.47 + <property name="default.javac.target" value="1.4"/>
13.48 + </target>
13.49 + <target depends="-pre-init,-init-private,-init-user" name="-init-project">
13.50 + <property file="nbproject/configs/${config}.properties"/>
13.51 + <property file="nbproject/project.properties"/>
13.52 + </target>
13.53 + <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
13.54 + <available file="${manifest.file}" property="manifest.available"/>
13.55 + <condition property="manifest.available+main.class">
13.56 + <and>
13.57 + <isset property="manifest.available"/>
13.58 + <isset property="main.class"/>
13.59 + <not>
13.60 + <equals arg1="${main.class}" arg2="" trim="true"/>
13.61 + </not>
13.62 + </and>
13.63 + </condition>
13.64 + <condition property="manifest.available+main.class+mkdist.available">
13.65 + <and>
13.66 + <istrue value="${manifest.available+main.class}"/>
13.67 + <isset property="libs.CopyLibs.classpath"/>
13.68 + </and>
13.69 + </condition>
13.70 + <condition property="have.tests">
13.71 + <or>
13.72 + <available file="${test.src.dir}"/>
13.73 + </or>
13.74 + </condition>
13.75 + <condition property="have.sources">
13.76 + <or>
13.77 + <available file="${src.dir}"/>
13.78 + </or>
13.79 + </condition>
13.80 + <condition property="netbeans.home+have.tests">
13.81 + <and>
13.82 + <isset property="netbeans.home"/>
13.83 + <isset property="have.tests"/>
13.84 + </and>
13.85 + </condition>
13.86 + <condition property="no.javadoc.preview">
13.87 + <and>
13.88 + <isset property="javadoc.preview"/>
13.89 + <isfalse value="${javadoc.preview}"/>
13.90 + </and>
13.91 + </condition>
13.92 + <property name="run.jvmargs" value=""/>
13.93 + <property name="javac.compilerargs" value=""/>
13.94 + <property name="work.dir" value="${basedir}"/>
13.95 + <condition property="no.deps">
13.96 + <and>
13.97 + <istrue value="${no.dependencies}"/>
13.98 + </and>
13.99 + </condition>
13.100 + <property name="javac.debug" value="true"/>
13.101 + <property name="javadoc.preview" value="true"/>
13.102 + <property name="application.args" value=""/>
13.103 + <property name="source.encoding" value="${file.encoding}"/>
13.104 + <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
13.105 + <and>
13.106 + <isset property="javadoc.encoding"/>
13.107 + <not>
13.108 + <equals arg1="${javadoc.encoding}" arg2=""/>
13.109 + </not>
13.110 + </and>
13.111 + </condition>
13.112 + <property name="javadoc.encoding.used" value="${source.encoding}"/>
13.113 + <property name="includes" value="**"/>
13.114 + <property name="excludes" value=""/>
13.115 + <property name="do.depend" value="false"/>
13.116 + <condition property="do.depend.true">
13.117 + <istrue value="${do.depend}"/>
13.118 + </condition>
13.119 + <condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
13.120 + <and>
13.121 + <isset property="jaxws.endorsed.dir"/>
13.122 + <available file="nbproject/jaxws-build.xml"/>
13.123 + </and>
13.124 + </condition>
13.125 + </target>
13.126 + <target name="-post-init">
13.127 + <!-- Empty placeholder for easier customization. -->
13.128 + <!-- You can override this target in the ../build.xml file. -->
13.129 + </target>
13.130 + <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
13.131 + <fail unless="src.dir">Must set src.dir</fail>
13.132 + <fail unless="test.src.dir">Must set test.src.dir</fail>
13.133 + <fail unless="build.dir">Must set build.dir</fail>
13.134 + <fail unless="dist.dir">Must set dist.dir</fail>
13.135 + <fail unless="build.classes.dir">Must set build.classes.dir</fail>
13.136 + <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
13.137 + <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
13.138 + <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
13.139 + <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
13.140 + <fail unless="dist.jar">Must set dist.jar</fail>
13.141 + </target>
13.142 + <target name="-init-macrodef-property">
13.143 + <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
13.144 + <attribute name="name"/>
13.145 + <attribute name="value"/>
13.146 + <sequential>
13.147 + <property name="@{name}" value="${@{value}}"/>
13.148 + </sequential>
13.149 + </macrodef>
13.150 + </target>
13.151 + <target name="-init-macrodef-javac">
13.152 + <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
13.153 + <attribute default="${src.dir}" name="srcdir"/>
13.154 + <attribute default="${build.classes.dir}" name="destdir"/>
13.155 + <attribute default="${javac.classpath}" name="classpath"/>
13.156 + <attribute default="${includes}" name="includes"/>
13.157 + <attribute default="${excludes}" name="excludes"/>
13.158 + <attribute default="${javac.debug}" name="debug"/>
13.159 + <attribute default="" name="sourcepath"/>
13.160 + <element name="customize" optional="true"/>
13.161 + <sequential>
13.162 + <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}">
13.163 + <classpath>
13.164 + <path path="@{classpath}"/>
13.165 + </classpath>
13.166 + <compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
13.167 + <customize/>
13.168 + </javac>
13.169 + </sequential>
13.170 + </macrodef>
13.171 + <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
13.172 + <attribute default="${src.dir}" name="srcdir"/>
13.173 + <attribute default="${build.classes.dir}" name="destdir"/>
13.174 + <attribute default="${javac.classpath}" name="classpath"/>
13.175 + <sequential>
13.176 + <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
13.177 + <classpath>
13.178 + <path path="@{classpath}"/>
13.179 + </classpath>
13.180 + </depend>
13.181 + </sequential>
13.182 + </macrodef>
13.183 + <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
13.184 + <attribute default="${build.classes.dir}" name="destdir"/>
13.185 + <sequential>
13.186 + <fail unless="javac.includes">Must set javac.includes</fail>
13.187 + <pathconvert pathsep="," property="javac.includes.binary">
13.188 + <path>
13.189 + <filelist dir="@{destdir}" files="${javac.includes}"/>
13.190 + </path>
13.191 + <globmapper from="*.java" to="*.class"/>
13.192 + </pathconvert>
13.193 + <delete>
13.194 + <files includes="${javac.includes.binary}"/>
13.195 + </delete>
13.196 + </sequential>
13.197 + </macrodef>
13.198 + </target>
13.199 + <target name="-init-macrodef-junit">
13.200 + <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
13.201 + <attribute default="${includes}" name="includes"/>
13.202 + <attribute default="${excludes}" name="excludes"/>
13.203 + <attribute default="**" name="testincludes"/>
13.204 + <sequential>
13.205 + <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
13.206 + <batchtest todir="${build.test.results.dir}">
13.207 + <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
13.208 + <filename name="@{testincludes}"/>
13.209 + </fileset>
13.210 + </batchtest>
13.211 + <classpath>
13.212 + <path path="${run.test.classpath}"/>
13.213 + </classpath>
13.214 + <syspropertyset>
13.215 + <propertyref prefix="test-sys-prop."/>
13.216 + <mapper from="test-sys-prop.*" to="*" type="glob"/>
13.217 + </syspropertyset>
13.218 + <formatter type="brief" usefile="false"/>
13.219 + <formatter type="xml"/>
13.220 + <jvmarg line="${run.jvmargs}"/>
13.221 + </junit>
13.222 + </sequential>
13.223 + </macrodef>
13.224 + </target>
13.225 + <target name="-init-macrodef-nbjpda">
13.226 + <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
13.227 + <attribute default="${main.class}" name="name"/>
13.228 + <attribute default="${debug.classpath}" name="classpath"/>
13.229 + <attribute default="" name="stopclassname"/>
13.230 + <sequential>
13.231 + <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="dt_socket">
13.232 + <classpath>
13.233 + <path path="@{classpath}"/>
13.234 + </classpath>
13.235 + </nbjpdastart>
13.236 + </sequential>
13.237 + </macrodef>
13.238 + <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
13.239 + <attribute default="${build.classes.dir}" name="dir"/>
13.240 + <sequential>
13.241 + <nbjpdareload>
13.242 + <fileset dir="@{dir}" includes="${fix.classes}">
13.243 + <include name="${fix.includes}*.class"/>
13.244 + </fileset>
13.245 + </nbjpdareload>
13.246 + </sequential>
13.247 + </macrodef>
13.248 + </target>
13.249 + <target name="-init-debug-args">
13.250 + <property name="version-output" value="java version "${ant.java.version}"/>
13.251 + <condition property="have-jdk-older-than-1.4">
13.252 + <or>
13.253 + <contains string="${version-output}" substring="java version "1.0"/>
13.254 + <contains string="${version-output}" substring="java version "1.1"/>
13.255 + <contains string="${version-output}" substring="java version "1.2"/>
13.256 + <contains string="${version-output}" substring="java version "1.3"/>
13.257 + </or>
13.258 + </condition>
13.259 + <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
13.260 + <istrue value="${have-jdk-older-than-1.4}"/>
13.261 + </condition>
13.262 + </target>
13.263 + <target depends="-init-debug-args" name="-init-macrodef-debug">
13.264 + <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
13.265 + <attribute default="${main.class}" name="classname"/>
13.266 + <attribute default="${debug.classpath}" name="classpath"/>
13.267 + <element name="customize" optional="true"/>
13.268 + <sequential>
13.269 + <java classname="@{classname}" dir="${work.dir}" fork="true">
13.270 + <jvmarg line="${debug-args-line}"/>
13.271 + <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
13.272 + <jvmarg line="${run.jvmargs}"/>
13.273 + <classpath>
13.274 + <path path="@{classpath}"/>
13.275 + </classpath>
13.276 + <syspropertyset>
13.277 + <propertyref prefix="run-sys-prop."/>
13.278 + <mapper from="run-sys-prop.*" to="*" type="glob"/>
13.279 + </syspropertyset>
13.280 + <customize/>
13.281 + </java>
13.282 + </sequential>
13.283 + </macrodef>
13.284 + </target>
13.285 + <target name="-init-macrodef-java">
13.286 + <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
13.287 + <attribute default="${main.class}" name="classname"/>
13.288 + <element name="customize" optional="true"/>
13.289 + <sequential>
13.290 + <java classname="@{classname}" dir="${work.dir}" fork="true">
13.291 + <jvmarg line="${run.jvmargs}"/>
13.292 + <classpath>
13.293 + <path path="${run.classpath}"/>
13.294 + </classpath>
13.295 + <syspropertyset>
13.296 + <propertyref prefix="run-sys-prop."/>
13.297 + <mapper from="run-sys-prop.*" to="*" type="glob"/>
13.298 + </syspropertyset>
13.299 + <customize/>
13.300 + </java>
13.301 + </sequential>
13.302 + </macrodef>
13.303 + </target>
13.304 + <target name="-init-presetdef-jar">
13.305 + <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
13.306 + <jar compress="${jar.compress}" jarfile="${dist.jar}">
13.307 + <j2seproject1:fileset dir="${build.classes.dir}"/>
13.308 + </jar>
13.309 + </presetdef>
13.310 + </target>
13.311 + <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"/>
13.312 + <!--
13.313 + ===================
13.314 + COMPILATION SECTION
13.315 + ===================
13.316 + -->
13.317 + <target depends="init" name="deps-jar" unless="no.deps">
13.318 + <ant antfile="${project.JFTable}/build.xml" inheritall="false" target="jar"/>
13.319 + <ant antfile="${project.Postak}/build.xml" inheritall="false" target="jar"/>
13.320 + </target>
13.321 + <target depends="init,deps-jar" name="-pre-pre-compile">
13.322 + <mkdir dir="${build.classes.dir}"/>
13.323 + </target>
13.324 + <target name="-pre-compile">
13.325 + <!-- Empty placeholder for easier customization. -->
13.326 + <!-- You can override this target in the ../build.xml file. -->
13.327 + </target>
13.328 + <target if="do.depend.true" name="-compile-depend">
13.329 + <j2seproject3:depend/>
13.330 + </target>
13.331 + <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
13.332 + <j2seproject3:javac/>
13.333 + <copy todir="${build.classes.dir}">
13.334 + <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
13.335 + </copy>
13.336 + </target>
13.337 + <target name="-post-compile">
13.338 + <!-- Empty placeholder for easier customization. -->
13.339 + <!-- You can override this target in the ../build.xml file. -->
13.340 + </target>
13.341 + <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
13.342 + <target name="-pre-compile-single">
13.343 + <!-- Empty placeholder for easier customization. -->
13.344 + <!-- You can override this target in the ../build.xml file. -->
13.345 + </target>
13.346 + <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
13.347 + <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
13.348 + <j2seproject3:force-recompile/>
13.349 + <j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.dir}"/>
13.350 + </target>
13.351 + <target name="-post-compile-single">
13.352 + <!-- Empty placeholder for easier customization. -->
13.353 + <!-- You can override this target in the ../build.xml file. -->
13.354 + </target>
13.355 + <target depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
13.356 + <!--
13.357 + ====================
13.358 + JAR BUILDING SECTION
13.359 + ====================
13.360 + -->
13.361 + <target depends="init" name="-pre-pre-jar">
13.362 + <dirname file="${dist.jar}" property="dist.jar.dir"/>
13.363 + <mkdir dir="${dist.jar.dir}"/>
13.364 + </target>
13.365 + <target name="-pre-jar">
13.366 + <!-- Empty placeholder for easier customization. -->
13.367 + <!-- You can override this target in the ../build.xml file. -->
13.368 + </target>
13.369 + <target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
13.370 + <j2seproject1:jar/>
13.371 + </target>
13.372 + <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
13.373 + <j2seproject1:jar manifest="${manifest.file}"/>
13.374 + </target>
13.375 + <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">
13.376 + <j2seproject1:jar manifest="${manifest.file}">
13.377 + <j2seproject1:manifest>
13.378 + <j2seproject1:attribute name="Main-Class" value="${main.class}"/>
13.379 + </j2seproject1:manifest>
13.380 + </j2seproject1:jar>
13.381 + <echo>To run this application from the command line without Ant, try:</echo>
13.382 + <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
13.383 + <property location="${dist.jar}" name="dist.jar.resolved"/>
13.384 + <pathconvert property="run.classpath.with.dist.jar">
13.385 + <path path="${run.classpath}"/>
13.386 + <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
13.387 + </pathconvert>
13.388 + <echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
13.389 + </target>
13.390 + <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
13.391 + <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
13.392 + <pathconvert property="run.classpath.without.build.classes.dir">
13.393 + <path path="${run.classpath}"/>
13.394 + <map from="${build.classes.dir.resolved}" to=""/>
13.395 + </pathconvert>
13.396 + <pathconvert pathsep=" " property="jar.classpath">
13.397 + <path path="${run.classpath.without.build.classes.dir}"/>
13.398 + <chainedmapper>
13.399 + <flattenmapper/>
13.400 + <globmapper from="*" to="lib/*"/>
13.401 + </chainedmapper>
13.402 + </pathconvert>
13.403 + <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
13.404 + <copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
13.405 + <fileset dir="${build.classes.dir}"/>
13.406 + <manifest>
13.407 + <attribute name="Main-Class" value="${main.class}"/>
13.408 + <attribute name="Class-Path" value="${jar.classpath}"/>
13.409 + </manifest>
13.410 + </copylibs>
13.411 + <echo>To run this application from the command line without Ant, try:</echo>
13.412 + <property location="${dist.jar}" name="dist.jar.resolved"/>
13.413 + <echo>java -jar "${dist.jar.resolved}"</echo>
13.414 + </target>
13.415 + <target name="-post-jar">
13.416 + <!-- Empty placeholder for easier customization. -->
13.417 + <!-- You can override this target in the ../build.xml file. -->
13.418 + </target>
13.419 + <target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar,jnlp" description="Build JAR." name="jar"/>
13.420 + <!--
13.421 + =================
13.422 + EXECUTION SECTION
13.423 + =================
13.424 + -->
13.425 + <target depends="init,compile" description="Run a main class." name="run">
13.426 + <j2seproject1:java>
13.427 + <customize>
13.428 + <arg line="${application.args}"/>
13.429 + </customize>
13.430 + </j2seproject1:java>
13.431 + </target>
13.432 + <target name="-do-not-recompile">
13.433 + <property name="javac.includes.binary" value=""/>
13.434 + </target>
13.435 + <target depends="init,-do-not-recompile,compile-single" name="run-single">
13.436 + <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
13.437 + <j2seproject1:java classname="${run.class}"/>
13.438 + </target>
13.439 + <!--
13.440 + =================
13.441 + DEBUGGING SECTION
13.442 + =================
13.443 + -->
13.444 + <target depends="init" if="netbeans.home" name="-debug-start-debugger">
13.445 + <j2seproject1:nbjpdastart name="${debug.class}"/>
13.446 + </target>
13.447 + <target depends="init,compile" name="-debug-start-debuggee">
13.448 + <j2seproject3:debug>
13.449 + <customize>
13.450 + <arg line="${application.args}"/>
13.451 + </customize>
13.452 + </j2seproject3:debug>
13.453 + </target>
13.454 + <target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
13.455 + <target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
13.456 + <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
13.457 + </target>
13.458 + <target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
13.459 + <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
13.460 + <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
13.461 + <j2seproject3:debug classname="${debug.class}"/>
13.462 + </target>
13.463 + <target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
13.464 + <target depends="init" name="-pre-debug-fix">
13.465 + <fail unless="fix.includes">Must set fix.includes</fail>
13.466 + <property name="javac.includes" value="${fix.includes}.java"/>
13.467 + </target>
13.468 + <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
13.469 + <j2seproject1:nbjpdareload/>
13.470 + </target>
13.471 + <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
13.472 + <!--
13.473 + ===============
13.474 + JAVADOC SECTION
13.475 + ===============
13.476 + -->
13.477 + <target depends="init" name="-javadoc-build">
13.478 + <mkdir dir="${dist.javadoc.dir}"/>
13.479 + <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}">
13.480 + <classpath>
13.481 + <path path="${javac.classpath}"/>
13.482 + </classpath>
13.483 + <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
13.484 + <filename name="**/*.java"/>
13.485 + </fileset>
13.486 + </javadoc>
13.487 + </target>
13.488 + <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
13.489 + <nbbrowse file="${dist.javadoc.dir}/index.html"/>
13.490 + </target>
13.491 + <target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
13.492 + <!--
13.493 + =========================
13.494 + JUNIT COMPILATION SECTION
13.495 + =========================
13.496 + -->
13.497 + <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
13.498 + <mkdir dir="${build.test.classes.dir}"/>
13.499 + </target>
13.500 + <target name="-pre-compile-test">
13.501 + <!-- Empty placeholder for easier customization. -->
13.502 + <!-- You can override this target in the ../build.xml file. -->
13.503 + </target>
13.504 + <target if="do.depend.true" name="-compile-test-depend">
13.505 + <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
13.506 + </target>
13.507 + <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
13.508 + <j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
13.509 + <copy todir="${build.test.classes.dir}">
13.510 + <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
13.511 + </copy>
13.512 + </target>
13.513 + <target name="-post-compile-test">
13.514 + <!-- Empty placeholder for easier customization. -->
13.515 + <!-- You can override this target in the ../build.xml file. -->
13.516 + </target>
13.517 + <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
13.518 + <target name="-pre-compile-test-single">
13.519 + <!-- Empty placeholder for easier customization. -->
13.520 + <!-- You can override this target in the ../build.xml file. -->
13.521 + </target>
13.522 + <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
13.523 + <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
13.524 + <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
13.525 + <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}"/>
13.526 + <copy todir="${build.test.classes.dir}">
13.527 + <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
13.528 + </copy>
13.529 + </target>
13.530 + <target name="-post-compile-test-single">
13.531 + <!-- Empty placeholder for easier customization. -->
13.532 + <!-- You can override this target in the ../build.xml file. -->
13.533 + </target>
13.534 + <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
13.535 + <!--
13.536 + =======================
13.537 + JUNIT EXECUTION SECTION
13.538 + =======================
13.539 + -->
13.540 + <target depends="init" if="have.tests" name="-pre-test-run">
13.541 + <mkdir dir="${build.test.results.dir}"/>
13.542 + </target>
13.543 + <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
13.544 + <j2seproject3:junit testincludes="**/*Test.java"/>
13.545 + </target>
13.546 + <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
13.547 + <fail if="tests.failed">Some tests failed; see details above.</fail>
13.548 + </target>
13.549 + <target depends="init" if="have.tests" name="test-report"/>
13.550 + <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
13.551 + <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
13.552 + <target depends="init" if="have.tests" name="-pre-test-run-single">
13.553 + <mkdir dir="${build.test.results.dir}"/>
13.554 + </target>
13.555 + <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
13.556 + <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
13.557 + <j2seproject3:junit excludes="" includes="${test.includes}"/>
13.558 + </target>
13.559 + <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
13.560 + <fail if="tests.failed">Some tests failed; see details above.</fail>
13.561 + </target>
13.562 + <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"/>
13.563 + <!--
13.564 + =======================
13.565 + JUNIT DEBUGGING SECTION
13.566 + =======================
13.567 + -->
13.568 + <target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
13.569 + <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
13.570 + <property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
13.571 + <delete file="${test.report.file}"/>
13.572 + <mkdir dir="${build.test.results.dir}"/>
13.573 + <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}">
13.574 + <customize>
13.575 + <syspropertyset>
13.576 + <propertyref prefix="test-sys-prop."/>
13.577 + <mapper from="test-sys-prop.*" to="*" type="glob"/>
13.578 + </syspropertyset>
13.579 + <arg value="${test.class}"/>
13.580 + <arg value="showoutput=true"/>
13.581 + <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
13.582 + <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
13.583 + </customize>
13.584 + </j2seproject3:debug>
13.585 + </target>
13.586 + <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
13.587 + <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
13.588 + </target>
13.589 + <target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
13.590 + <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
13.591 + <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
13.592 + </target>
13.593 + <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
13.594 + <!--
13.595 + =========================
13.596 + APPLET EXECUTION SECTION
13.597 + =========================
13.598 + -->
13.599 + <target depends="init,compile-single" name="run-applet">
13.600 + <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
13.601 + <j2seproject1:java classname="sun.applet.AppletViewer">
13.602 + <customize>
13.603 + <arg value="${applet.url}"/>
13.604 + </customize>
13.605 + </j2seproject1:java>
13.606 + </target>
13.607 + <!--
13.608 + =========================
13.609 + APPLET DEBUGGING SECTION
13.610 + =========================
13.611 + -->
13.612 + <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
13.613 + <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
13.614 + <j2seproject3:debug classname="sun.applet.AppletViewer">
13.615 + <customize>
13.616 + <arg value="${applet.url}"/>
13.617 + </customize>
13.618 + </j2seproject3:debug>
13.619 + </target>
13.620 + <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
13.621 + <!--
13.622 + ===============
13.623 + CLEANUP SECTION
13.624 + ===============
13.625 + -->
13.626 + <target depends="init" name="deps-clean" unless="no.deps">
13.627 + <ant antfile="${project.JFTable}/build.xml" inheritall="false" target="clean"/>
13.628 + <ant antfile="${project.Postak}/build.xml" inheritall="false" target="clean"/>
13.629 + </target>
13.630 + <target depends="init" name="-do-clean">
13.631 + <delete dir="${build.dir}"/>
13.632 + <delete dir="${dist.dir}"/>
13.633 + </target>
13.634 + <target name="-post-clean">
13.635 + <!-- Empty placeholder for easier customization. -->
13.636 + <!-- You can override this target in the ../build.xml file. -->
13.637 + </target>
13.638 + <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
13.639 +</project>
14.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
14.2 +++ b/java/SuperPostak/nbproject/configs/JWS_generated.properties Sun Nov 23 22:19:20 2008 +0100
14.3 @@ -0,0 +1,4 @@
14.4 +#Sun Dec 09 02:37:31 CET 2007
14.5 +$label=Web Start
14.6 +$target.debug=jws-debug
14.7 +$target.run=jws-run
15.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
15.2 +++ b/java/SuperPostak/nbproject/genfiles.properties Sun Nov 23 22:19:20 2008 +0100
15.3 @@ -0,0 +1,8 @@
15.4 +build.xml.data.CRC32=d917048a
15.5 +build.xml.script.CRC32=bda184ca
15.6 +build.xml.stylesheet.CRC32=be360661
15.7 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
15.8 +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
15.9 +nbproject/build-impl.xml.data.CRC32=d917048a
15.10 +nbproject/build-impl.xml.script.CRC32=5446e5b9
15.11 +nbproject/build-impl.xml.stylesheet.CRC32=487672f9
16.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
16.2 +++ b/java/SuperPostak/nbproject/jnlp-impl.xml Sun Nov 23 22:19:20 2008 +0100
16.3 @@ -0,0 +1,453 @@
16.4 +<?xml version="1.0" encoding="UTF-8"?>
16.5 +<!--
16.6 +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
16.7 +
16.8 +Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
16.9 +
16.10 +
16.11 +The contents of this file are subject to the terms of either the GNU
16.12 +General Public License Version 2 only ("GPL") or the Common
16.13 +Development and Distribution License("CDDL") (collectively, the
16.14 +"License"). You may not use this file except in compliance with the
16.15 +License. You can obtain a copy of the License at
16.16 +http://www.netbeans.org/cddl-gplv2.html
16.17 +or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16.18 +specific language governing permissions and limitations under the
16.19 +License. When distributing the software, include this License Header
16.20 +Notice in each file and include the License file at
16.21 +nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
16.22 +particular file as subject to the "Classpath" exception as provided
16.23 +by Sun in the GPL Version 2 section of the License file that
16.24 +accompanied this code. If applicable, add the following below the
16.25 +License Header, with the fields enclosed by brackets [] replaced by
16.26 +your own identifying information:
16.27 +"Portions Copyrighted [year] [name of copyright owner]"
16.28 +
16.29 +Contributor(s):
16.30 +
16.31 +The Original Software is NetBeans. The Initial Developer of the Original
16.32 +Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
16.33 +Microsystems, Inc. All Rights Reserved.
16.34 +
16.35 +If you wish your version of this file to be governed by only the CDDL
16.36 +or only the GPL Version 2, indicate your decision by adding
16.37 +"[Contributor] elects to include this software in this distribution
16.38 +under the [CDDL or GPL Version 2] license." If you do not indicate a
16.39 +single choice of license, a recipient has the option to distribute
16.40 +your version of this file under either the CDDL, the GPL Version 2 or
16.41 +to extend the choice of license to its licensees as provided above.
16.42 +However, if you add GPL Version 2 code and therefore, elected the GPL
16.43 +Version 2 license, then the option applies only if the new code is
16.44 +made subject to such option by the copyright holder.
16.45 +-->
16.46 +
16.47 +<project name="jnlp-impl" default="default" basedir="..">
16.48 +
16.49 + <property name="master.jnlp.file" location="master.jnlp"/>
16.50 + <property name="launch.jnlp.file" value="launch.jnlp"/>
16.51 + <property name="jnlp.dest.dir" location="dist"/>
16.52 +
16.53 + <!-- helper file to create list of arguments, etc. -->
16.54 + <property name="helper.file" location="helper.txt"/>
16.55 +
16.56 + <target name="default">
16.57 + <echo message="Default target is not set."/>
16.58 + </target>
16.59 +
16.60 + <!-- Main target -->
16.61 +
16.62 + <target name="jnlp" depends="-init-check,-test-jnlp-enabled" if="is.jnlp.enabled">
16.63 + <delete file="dist/lib/javaws.jar" failonerror="false"/>
16.64 + <antcall target="generate-jnlp"/>
16.65 + </target>
16.66 +
16.67 + <!-- Generate master -->
16.68 +
16.69 + <target name="-check-for-master.jnlp">
16.70 + <available file="${master.jnlp.file}" property="master.jnlp.exists"/>
16.71 + </target>
16.72 + <target name="jnlp-init-generate-master" depends="-check-for-master.jnlp" unless="master.jnlp.exists">
16.73 + <echo file="${master.jnlp.file}" encoding="UTF-8"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
16.74 +<jnlp spec="1.0+" codebase="$${jnlp.codebase}" href="launch.jnlp">
16.75 + <information>
16.76 + <title>$${APPLICATION.TITLE}</title>
16.77 + <vendor>$${APPLICATION.VENDOR}</vendor>
16.78 + <description>$${APPLICATION.DESC}</description>
16.79 + <description kind="short">$${APPLICATION.DESC.SHORT}</description>
16.80 + <homepage href="$${APPLICATION.HOMEPAGE}"/>
16.81 +<!--$${JNLP.ICONS}-->
16.82 +<!--$${JNLP.OFFLINE.ALLOWED}-->
16.83 + </information>
16.84 +<!--$${JNLP.SECURITY}-->
16.85 + <resources>
16.86 +<!--$${JNLP.RESOURCES.RUNTIME}-->
16.87 +<!--$${JNLP.RESOURCES.MAIN.JAR}-->
16.88 +<!--$${JNLP.RESOURCES.JARS}-->
16.89 + </resources>
16.90 + <application-desc main-class="$${jnlp.main.class}">
16.91 +<!--$${JNLP.APPLICATION.ARGS}-->
16.92 + </application-desc>
16.93 +</jnlp>
16.94 +]]></echo>
16.95 + </target>
16.96 +
16.97 + <!-- Initial check -->
16.98 +
16.99 + <target name="-init-check">
16.100 + <fail unless="application.title" message="Must set application title."/>
16.101 + <fail unless="application.vendor" message="Must set application vendor."/>
16.102 + </target>
16.103 +
16.104 + <!-- Icons -->
16.105 +
16.106 + <target name="-init-icons" depends="-preinit-icons,-set-icon-elem,-set-splash-elem">
16.107 + <property name="jnlp.icon.elem" value=""/>
16.108 + <property name="application.splash.elem" value=""/>
16.109 + <property name="icon.separator" value=""/>
16.110 + <property name="jnlp.icons.value" value="${jnlp.icon.elem}${icon.separator}${application.splash.elem}"/>
16.111 + </target>
16.112 + <target name="-preinit-icons" depends="-copy-app-icon,-copy-app-splash"/>
16.113 + <target name="-copy-app-icon" if="jnlp.icon" depends="-get-app-icon-name">
16.114 + <copy file="${jnlp.icon}" todir="${jnlp.dest.dir}" failonerror="false"/>
16.115 + <available file="${jnlp.dest.dir}${file.separator}${jnlp.icon.name}" property="jnlp.icon.copied"/>
16.116 + </target>
16.117 + <target name="-copy-app-splash" if="application.splash" depends="-get-app-splash-name">
16.118 + <copy file="${application.splash}" todir="${jnlp.dest.dir}" failonerror="false"/>
16.119 + <available file="${jnlp.dest.dir}${file.separator}${application.splash.name}" property="application.splash.copied"/>
16.120 + </target>
16.121 + <target name="-get-app-icon-name" if="jnlp.icon">
16.122 + <dirname file="${jnlp.icon}" property="jnlp.icon.basedir"/>
16.123 + <pathconvert property="jnlp.icon.name" setonempty="false">
16.124 + <path location="${jnlp.icon}"/>
16.125 + <map from="${jnlp.icon.basedir}${file.separator}" to=""/>
16.126 + </pathconvert>
16.127 + </target>
16.128 + <target name="-get-app-splash-name" if="application.splash">
16.129 + <dirname file="${application.splash}" property="application.splash.basedir"/>
16.130 + <pathconvert property="application.splash.name" setonempty="false">
16.131 + <path location="${application.splash}"/>
16.132 + <map from="${application.splash.basedir}${file.separator}" to=""/>
16.133 + </pathconvert>
16.134 + </target>
16.135 + <target name="-set-icon-elem" if="jnlp.icon.copied">
16.136 + <property name="jnlp.icon.elem" value=' <icon href="${jnlp.icon.name}" kind="default"/>'/>
16.137 + </target>
16.138 + <target name="-set-splash-elem" if="application.splash.copied" depends="-set-icon-elem">
16.139 + <property name="application.splash.elem" value=' <icon href="${application.splash.name}" kind="splash"/>'/>
16.140 + <condition property="icon.separator" value="${line.separator}">
16.141 + <isset property="jnlp.icon.elem"/>
16.142 + </condition>
16.143 + </target>
16.144 +
16.145 + <!-- Offline-Allowed -->
16.146 +
16.147 + <target name="-init-offline" if="offline.allowed.set" depends="-preinit-offline">
16.148 + <property name="jnlp.offline.allowed.value" value=" <offline-allowed/>"/>
16.149 + </target>
16.150 + <target name="-preinit-offline">
16.151 + <condition property="offline.allowed.set">
16.152 + <equals arg1="${jnlp.offline-allowed}" arg2="true" trim="true"/>
16.153 + </condition>
16.154 + </target>
16.155 +
16.156 + <!-- Descriptions -->
16.157 +
16.158 + <target name="-init-descriptions" depends="-descriptions-props-check,-init-desc-value,-init-desc-value-short">
16.159 + <property name="application.desc.value" value="${application.title}"/>
16.160 + <property name="application.desc.short.value" value="${application.title}"/>
16.161 + </target>
16.162 + <target name="-descriptions-props-check">
16.163 + <condition property="application.desc.set">
16.164 + <and>
16.165 + <isset property="application.desc"/>
16.166 + <not>
16.167 + <equals arg1="${application.desc}" arg2="" trim="true"/>
16.168 + </not>
16.169 + </and>
16.170 + </condition>
16.171 + <condition property="application.desc.short.set">
16.172 + <and>
16.173 + <isset property="application.desc.short"/>
16.174 + <not>
16.175 + <equals arg1="${application.desc.short}" arg2="" trim="true"/>
16.176 + </not>
16.177 + </and>
16.178 + </condition>
16.179 + </target>
16.180 + <target name="-init-desc-value" if="application.desc.set">
16.181 + <property name="application.desc.value" value="${application.desc}"/>
16.182 + </target>
16.183 + <target name="-init-desc-value-short" if="application.desc.short.set">
16.184 + <property name="application.desc.short.value" value="${application.desc.short}"/>
16.185 + </target>
16.186 +
16.187 + <!-- Security -->
16.188 +
16.189 + <target name="-init-security" depends="-check-signing-possible" if="jnlp.signed.true+signjarstask.available">
16.190 + <property name="jnlp.security" value=" <security>${line.separator} <all-permissions/>${line.separator} </security>"/>
16.191 + </target>
16.192 + <target name="-security-props-check">
16.193 + <condition property="jnlp.signed.true">
16.194 + <istrue value="${jnlp.signed}"/>
16.195 + </condition>
16.196 + </target>
16.197 + <target name="-jnlp-init-keystore" depends="-jnlp-init-keystore-props,-check-keystore-exists" unless="jnlp.signjar.keystore.exists">
16.198 + <echo message="${application.vendor}" file="${helper.file}"/>
16.199 + <loadfile property="application.vendor.filtered" srcfile="${helper.file}">
16.200 + <filterchain>
16.201 + <deletecharacters chars=","/>
16.202 + </filterchain>
16.203 + </loadfile>
16.204 + <delete file="${helper.file}"/>
16.205 + <property name="jnlp.signjar.vendor" value="CN=${application.vendor.filtered}"/>
16.206 + <echo message="Going to create default keystore in ${jnlp.signjar.keystore}"/>
16.207 + <genkey dname="${jnlp.signjar.vendor}" alias="${jnlp.signjar.alias}" keystore="${jnlp.signjar.keystore}"
16.208 + storepass="${jnlp.signjar.storepass}" keypass="${jnlp.signjar.keypass}"/>
16.209 + </target>
16.210 + <target name="-check-keystore-exists">
16.211 + <available property="jnlp.signjar.keystore.exists" file="${jnlp.signjar.keystore}"/>
16.212 + </target>
16.213 + <target name="-jnlp-init-keystore-props">
16.214 + <property name="jnlp.signjar.keystore" value="${basedir}/build/nb-jws.ks"/>
16.215 + <property name="jnlp.signjar.storepass" value="storepass"/>
16.216 + <property name="jnlp.signjar.keypass" value="keypass"/>
16.217 + <property name="jnlp.signjar.alias" value="nb-jws"/>
16.218 + </target>
16.219 +
16.220 + <!-- Generating JNLP file -->
16.221 +
16.222 + <target name="generate-jnlp" depends="jnlp-init-generate-master,-init-codebase,-init-resources-runtime,-init-security,-init-resources-jars,-init-application-args,-init-icons,-init-offline,-init-descriptions,jnlp-init-notinited">
16.223 + <copy file="${master.jnlp.file}" tofile="${jnlp.dest.dir}/${launch.jnlp.file}__" overwrite="true" encoding="UTF-8">
16.224 + <filterchain>
16.225 + <replacestring from="$${jnlp.codebase}" to="${jnlp.codebase.value}"/>
16.226 + <replacestring from="<!--$${JNLP.ICONS}-->" to="${jnlp.icons.value}"/>
16.227 + <replacestring from="<!--$${JNLP.SECURITY}-->" to="${jnlp.security}"/>
16.228 + <replacestring from="<!--$${JNLP.OFFLINE.ALLOWED}-->" to="${jnlp.offline.allowed.value}"/>
16.229 + <replacestring from="<!--$${JNLP.RESOURCES.RUNTIME}-->" to="${jnlp.resources.runtime.value}"/>
16.230 + <replacestring from="<!--$${JNLP.RESOURCES.MAIN.JAR}-->" to="${jnlp.resources.main.jar.value}"/>
16.231 + <replacestring from="<!--$${JNLP.RESOURCES.JARS}-->" to="${jnlp.resources.jars.value}"/>
16.232 + <replacestring from="<!--$${JNLP.APPLICATION.ARGS}-->" to="${jnlp.application.args.value}"/>
16.233 + <replacestring from="$${APPLICATION.TITLE}" to="${application.title}"/>
16.234 + <replacestring from="$${APPLICATION.VENDOR}" to="${application.vendor}"/>
16.235 + <replacestring from="$${APPLICATION.DESC}" to="${application.desc.value}"/>
16.236 + <replacestring from="$${APPLICATION.DESC.SHORT}" to="${application.desc.short.value}"/>
16.237 + <replacestring from="$${APPLICATION.HOMEPAGE}" to="${application.homepage}"/>
16.238 + <replacestring from="$${jnlp.main.class}" to="${main.class}"/>
16.239 + </filterchain>
16.240 + </copy>
16.241 + <antcall target="-strip-empty-lines"/>
16.242 + <antcall target="-generate-html-page"/>
16.243 + </target>
16.244 + <target name="jnlp-init-notinited">
16.245 + <property name="jnlp.security" value=""/>
16.246 + <property name="jnlp.offline.allowed.value" value=""/>
16.247 + <property name="application.homepage" value=""/>
16.248 + <property name="jnlp.application.args.value" value=""/>
16.249 + </target>
16.250 + <target name="-strip-empty-lines">
16.251 + <move file="${jnlp.dest.dir}/${launch.jnlp.file}__" tofile="${jnlp.dest.dir}/${launch.jnlp.file}" overwrite="true" encoding="UTF-8">
16.252 + <filterchain>
16.253 + <linecontainsregexp>
16.254 + <regexp pattern=".+"/>
16.255 + </linecontainsregexp>
16.256 + </filterchain>
16.257 + </move>
16.258 + </target>
16.259 +
16.260 + <!-- Codebase processing -->
16.261 +
16.262 + <target name="-init-codebase" depends="-codebase-props-check,-init-non-user-codebase,-init-user-codebase"/>
16.263 + <target name="-codebase-props-check">
16.264 + <condition property="local.codebase">
16.265 + <or>
16.266 + <not>
16.267 + <isset property="jnlp.codebase.type"/>
16.268 + </not>
16.269 + <equals arg1="${jnlp.codebase.type}" arg2="local" trim="true"/>
16.270 + </or>
16.271 + </condition>
16.272 + <condition property="non.user.codebase">
16.273 + <or>
16.274 + <not>
16.275 + <isset property="jnlp.codebase.type"/>
16.276 + </not>
16.277 + <equals arg1="${jnlp.codebase.type}" arg2="local" trim="true"/>
16.278 + <equals arg1="${jnlp.codebase.type}" arg2="web" trim="true"/>
16.279 + </or>
16.280 + </condition>
16.281 + <condition property="user.codebase">
16.282 + <equals arg1="${jnlp.codebase.type}" arg2="user" trim="true"/>
16.283 + </condition>
16.284 + </target>
16.285 + <target name="-init-non-user-codebase" if="non.user.codebase">
16.286 + <property name="jnlp.codebase.value" value="${jnlp.codebase.url}"/>
16.287 + </target>
16.288 + <target name="-init-user-codebase" if="user.codebase">
16.289 + <property name="jnlp.codebase.value" value="${jnlp.codebase.user}"/>
16.290 + </target>
16.291 +
16.292 + <!-- j2se resources -->
16.293 +
16.294 + <target name="-init-resources-runtime" depends="-init-runtime-props">
16.295 + <property name="run.jvmargs.value" value=""/>
16.296 + <property name="initial-heap-size.value" value=""/>
16.297 + <property name="max-heap-size.value" value=""/>
16.298 + <property name="jnlp.resources.runtime.value"
16.299 + value=' <j2se version="${javac.target}+"${initial-heap-size.value}${max-heap-size.value}${run.jvmargs.value}/>'/>
16.300 + </target>
16.301 + <target name="-init-runtime-props" depends="-runtime-props-check,-init-run-jvmargs-value,-init-initial-heap-size-value,-init-max-heap-size-value"/>
16.302 + <target name="-runtime-props-check">
16.303 + <condition property="run.jvmargs.set">
16.304 + <and>
16.305 + <isset property="run.jvmargs"/>
16.306 + <not>
16.307 + <equals arg1="${run.jvmargs}" arg2="" trim="true"/>
16.308 + </not>
16.309 + </and>
16.310 + </condition>
16.311 + <condition property="jnlp.initial-heap-size.set">
16.312 + <and>
16.313 + <isset property="jnlp.initial-heap-size"/>
16.314 + <not>
16.315 + <equals arg1="${jnlp.initial-heap-size}" arg2="" trim="true"/>
16.316 + </not>
16.317 + </and>
16.318 + </condition>
16.319 + <condition property="jnlp.max-heap-size.set">
16.320 + <and>
16.321 + <isset property="jnlp.max-heap-size"/>
16.322 + <not>
16.323 + <equals arg1="${jnlp.max-heap-size}" arg2="" trim="true"/>
16.324 + </not>
16.325 + </and>
16.326 + </condition>
16.327 + </target>
16.328 + <target name="-init-run-jvmargs-value" if="run.jvmargs.set">
16.329 + <property name="run.jvmargs.value" value=' java-vm-args="${run.jvmargs}"'/>
16.330 + </target>
16.331 + <target name="-init-initial-heap-size-value" if="jnlp.initial-heap-size.set">
16.332 + <property name="initial-heap-size.value" value=' initial-heap-size="${jnlp.initial-heap-size}"'/>
16.333 + </target>
16.334 + <target name="-init-max-heap-size-value" if="jnlp.max-heap-size.set">
16.335 + <property name="max-heap-size.value" value=' max-heap-size="${jnlp.max-heap-size}"'/>
16.336 + </target>
16.337 +
16.338 + <!-- JAR resources -->
16.339 +
16.340 + <target name="-init-resources-jars" depends="-preinit-resources-unsigned-jars,-preinit-resources-signed-jars,-preinit-resources-main-jar"/>
16.341 + <target name="-preinit-resources-unsigned-jars" depends="-exclude-javaws-from-cp,-check-signing-possible" unless="jnlp.signed.true+signjarstask.available">
16.342 + <pathconvert pathsep="${line.separator}" property="jnlp.resources.jars.value">
16.343 + <path path="${run.classpath.without.javaws.jar}"/>
16.344 + <mapper type="regexp" from="^.*[/\\]([^/\\]+\.jar)"
16.345 + to=' <jar href="lib/\1" download="eager"/>'/>
16.346 + </pathconvert>
16.347 + </target>
16.348 + <target name="-preinit-resources-main-jar">
16.349 + <pathconvert pathsep="${line.separator}" property="jnlp.resources.main.jar.value">
16.350 + <path location="${dist.jar}"/>
16.351 + <mapper type="regexp" from="^.*[/\\]([^/\\]+\.jar)"
16.352 + to=' <jar href="\1" main="true" download="eager"/>'/>
16.353 + </pathconvert>
16.354 + </target>
16.355 + <target name="-exclude-javaws-from-cp">
16.356 + <pathconvert property="path.element.to.be.removed">
16.357 + <path path="${run.classpath}"/>
16.358 + <mapper type="regexp" from="(^.*[/\\]javaws.jar)" to="\1"/>
16.359 + </pathconvert>
16.360 + <pathconvert property="run.classpath.without.javaws.jar">
16.361 + <path path="${run.classpath}"/>
16.362 + <map from="${path.element.to.be.removed}" to=""/>
16.363 + </pathconvert>
16.364 + </target>
16.365 + <target name="-check-task-available">
16.366 + <condition property="signjarstask.available">
16.367 + <isset property="netbeans.home"/>
16.368 + </condition>
16.369 + </target>
16.370 + <target name="-check-signing-possible" depends="-security-props-check,-check-task-available">
16.371 + <condition property="jnlp.signed.true+signjarstask.available">
16.372 + <and>
16.373 + <isset property="jnlp.signed.true"/>
16.374 + <isset property="signjarstask.available"/>
16.375 + </and>
16.376 + </condition>
16.377 + </target>
16.378 + <target name="-unavailable-task-warning" depends="-check-task-available" unless="signjarstask.available">
16.379 + <echo message="Signtask is not available, jar files will not be signed. Task is available only when running inside NetBeans IDE."/>
16.380 + </target>
16.381 + <target name="-preinit-resources-signed-jars" depends="-unavailable-task-warning,-sign-jars" if="jnlp.signed.true+signjarstask.available">
16.382 + <property name="jnlp.resources.jars.value" value="${jnlp.signed.jars}${jnlp.components}"/>
16.383 + </target>
16.384 + <target name="-sign-jars" depends="-jnlp-init-keystore,-check-signing-possible" if="jnlp.signed.true+signjarstask.available">
16.385 + <jnlpsignjars keystore="${jnlp.signjar.keystore}" storepass="${jnlp.signjar.storepass}"
16.386 + keypass="${jnlp.signjar.keypass}" alias="${jnlp.signjar.alias}" mainjar="${dist.jar}" destdir="dist"
16.387 + codebase="${jnlp.codebase.value}" signedjarsprop="jnlp.signed.jars"
16.388 + componentsprop="jnlp.components">
16.389 + <fileset dir="dist/lib">
16.390 + <include name="*.jar"/>
16.391 + </fileset>
16.392 + </jnlpsignjars>
16.393 + </target>
16.394 +
16.395 + <!-- Application arguments -->
16.396 +
16.397 + <target name="-init-application-args" if="application.args">
16.398 + <echo message="${application.args}" file="${helper.file}"/>
16.399 + <loadfile srcfile="${helper.file}" property="jnlp.application.args.value">
16.400 + <filterchain>
16.401 + <tokenfilter delimoutput="\n">
16.402 + <stringtokenizer/>
16.403 + <replaceregex pattern="(.+)" replace=" <argument>\1</argument>"/>
16.404 + </tokenfilter>
16.405 + </filterchain>
16.406 + </loadfile>
16.407 + <delete file="${helper.file}"/>
16.408 + </target>
16.409 +
16.410 + <!-- Running/Debugging -->
16.411 +
16.412 + <target name="jws-run" depends="jar,-verify-jnlp-enabled,-verify-codebase" description="Start javaws execution">
16.413 + <exec executable="${java.home}/bin/javaws">
16.414 + <arg file="${jnlp.dest.dir}/${launch.jnlp.file}"/>
16.415 + </exec>
16.416 + </target>
16.417 + <target name="jws-debug" if="netbeans.home" depends="jar,-verify-jnlp-enabled,-verify-codebase,-debug-start-debugger,-debug-javaws-debuggee"
16.418 + description="Debug javaws project in IDE"/>
16.419 + <target name="-debug-javaws-debuggee">
16.420 + <exec executable="${java.home}/bin/javaws">
16.421 + <env key="JAVAWS_VM_ARGS" value="-Xdebug -Xnoagent -Djava.compiler=none -Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
16.422 + <arg file="${jnlp.dest.dir}/${launch.jnlp.file}"/>
16.423 + </exec>
16.424 + </target>
16.425 + <target name="-verify-codebase" depends="-codebase-props-check" unless="local.codebase">
16.426 + <fail message="Project cannot be run with non-local codebase. Open project properties dialog and set Web Start Codebase to Local Execution."/>
16.427 + </target>
16.428 + <target name="-verify-jnlp-enabled" depends="-test-jnlp-enabled" unless="is.jnlp.enabled">
16.429 + <fail message="Project cannot be run with selected Run Configuration when Java Web Start is disabled."/>
16.430 + </target>
16.431 +
16.432 + <!-- Test JNLP enabled-->
16.433 +
16.434 + <target name="-test-jnlp-enabled">
16.435 + <condition property="is.jnlp.enabled">
16.436 + <equals arg1="${jnlp.enabled}" arg2="true" casesensitive="false" trim="true"/>
16.437 + </condition>
16.438 + </target>
16.439 +
16.440 + <!-- Generate simple HTML test page -->
16.441 +
16.442 + <target name="-generate-html-page">
16.443 + <echo file="${jnlp.dest.dir}/launch.html"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
16.444 +<html>
16.445 + <head>
16.446 + <title>Test page for launching the application via JNLP</title>
16.447 + </head>
16.448 + <body>
16.449 + <h3>Test page for launching the application via JNLP</h3>
16.450 + <a href="launch.jnlp">Launch the application</a>
16.451 + </body>
16.452 +</html>
16.453 +]]></echo>
16.454 + </target>
16.455 +
16.456 +</project>
17.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
17.2 +++ b/java/SuperPostak/nbproject/private/private.properties Sun Nov 23 22:19:20 2008 +0100
17.3 @@ -0,0 +1,8 @@
17.4 +do.depend=false
17.5 +do.jar=true
17.6 +javac.debug=true
17.7 +javadoc.preview=true
17.8 +jaxws.endorsed.dir=/home/fiki/bin/netbeans-6.1/java2/modules/ext/jaxws21/api
17.9 +project.JFTable=/home/fiki/subversion/JFTable/trunk/java/JFTable
17.10 +project.Postak=/home/fiki/subversion/SuperPostak/trunk/java/Postak
17.11 +user.properties.file=/home/fiki/.netbeans/6.1/build.properties
18.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
18.2 +++ b/java/SuperPostak/nbproject/private/private.xml Sun Nov 23 22:19:20 2008 +0100
18.3 @@ -0,0 +1,4 @@
18.4 +<?xml version="1.0" encoding="UTF-8"?>
18.5 +<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
18.6 + <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
18.7 +</project-private>
19.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
19.2 +++ b/java/SuperPostak/nbproject/project.properties Sun Nov 23 22:19:20 2008 +0100
19.3 @@ -0,0 +1,101 @@
19.4 +application.title=SuperPostak
19.5 +application.vendor=fiki
19.6 +build.classes.dir=${build.dir}/classes
19.7 +build.classes.excludes=**/*.java,**/*.form
19.8 +# This directory is removed when the project is cleaned:
19.9 +build.dir=build
19.10 +build.generated.dir=${build.dir}/generated
19.11 +# Only compile against the classpath explicitly listed here:
19.12 +build.sysclasspath=ignore
19.13 +build.test.classes.dir=${build.dir}/test/classes
19.14 +build.test.results.dir=${build.dir}/test/results
19.15 +debug.classpath=\
19.16 + ${run.classpath}
19.17 +debug.test.classpath=\
19.18 + ${run.test.classpath}
19.19 +# This directory is removed when the project is cleaned:
19.20 +dist.dir=dist
19.21 +dist.jar=${dist.dir}/SuperPostak.jar
19.22 +dist.javadoc.dir=${dist.dir}/javadoc
19.23 +excludes=
19.24 +includes=**
19.25 +jar.compress=false
19.26 +javac.classpath=\
19.27 + ${libs.PostgreSQLDriver.classpath}:\
19.28 + ${libs.SwingX.classpath}:\
19.29 + ${libs.JAF.classpath}:\
19.30 + ${libs.JavaMail.classpath}:\
19.31 + ${libs.SubstanceLaF.classpath}:\
19.32 + ${reference.JFTable.jar}:\
19.33 + ${libs.MySQLDriver.classpath}:\
19.34 + ${libs.jTDS-Sybase-MSSQL.classpath}:\
19.35 + ${libs.Sybase.com.classpath}:\
19.36 + ${reference.Postak.jar}
19.37 +# Space-separated list of extra javac options
19.38 +javac.compilerargs=
19.39 +javac.deprecation=false
19.40 +javac.source=1.5
19.41 +javac.target=1.5
19.42 +javac.test.classpath=\
19.43 + ${javac.classpath}:\
19.44 + ${build.classes.dir}:\
19.45 + ${libs.junit_4.classpath}
19.46 +javadoc.additionalparam=
19.47 +javadoc.author=false
19.48 +javadoc.encoding=${source.encoding}
19.49 +javadoc.noindex=false
19.50 +javadoc.nonavbar=false
19.51 +javadoc.notree=false
19.52 +javadoc.private=false
19.53 +javadoc.splitindex=true
19.54 +javadoc.use=true
19.55 +javadoc.version=false
19.56 +javadoc.windowtitle=
19.57 +jnlp.codebase.type=user
19.58 +jnlp.codebase.url=file:/home/fiki/subversion/SuperPostak/trunk/java/SuperPostak/dist/
19.59 +jnlp.codebase.user=http://frantovo.cz/projekty/SuperPostak/jws/
19.60 +jnlp.enabled=true
19.61 +jnlp.icon=/home/fiki/java/SuperPostak/src/cz/frantovo/superPostak/mail_generic.png
19.62 +jnlp.offline-allowed=true
19.63 +jnlp.signed=true
19.64 +# Property libs.JAF.classpath is set here just to make sharing of project simpler.
19.65 +# The library definition has always preference over this property.
19.66 +libs.JAF.classpath=../lib/jaf/jaf-1.1.1/activation.jar
19.67 +# Property libs.JavaMail.classpath is set here just to make sharing of project simpler.
19.68 +# The library definition has always preference over this property.
19.69 +libs.JavaMail.classpath=../lib/java-mail/javamail-1.4.1/mail.jar:../lib/java-mail/javamail-1.4.1/lib/dsn.jar:../lib/java-mail/javamail-1.4.1/lib/imap.jar:../lib/java-mail/javamail-1.4.1/lib/mailapi.jar:../lib/java-mail/javamail-1.4.1/lib/pop3.jar:../lib/java-mail/javamail-1.4.1/lib/smtp.jar
19.70 +# Property libs.jTDS-Sybase-MSSQL.classpath is set here just to make sharing of project simpler.
19.71 +# The library definition has always preference over this property.
19.72 +libs.jTDS-Sybase-MSSQL.classpath=../../../../../java/lib/jTDS - Sybase a MS SQL/jtds-1.2.2-dist/jtds-1.2.2.jar
19.73 +# Property libs.MySQLDriver.classpath is set here just to make sharing of project simpler.
19.74 +# The library definition has always preference over this property.
19.75 +libs.MySQLDriver.classpath=../../../../../../../usr/local/netbeans-6.0/ide8/modules/ext/mysql-connector-java-5.0.7-bin.jar
19.76 +# Property libs.PostgreSQLDriver.classpath is set here just to make sharing of project simpler.
19.77 +# The library definition has always preference over this property.
19.78 +libs.PostgreSQLDriver.classpath=../../../../usr/local/netbeans-6.0/ide8/modules/ext/postgresql-8.2-506.jdbc3.jar
19.79 +# Property libs.SubstanceLaF.classpath is set here just to make sharing of project simpler.
19.80 +# The library definition has always preference over this property.
19.81 +libs.SubstanceLaF.classpath=../../../../../java/lib/substance/lib/asm-all-2.2.2.jar:../../../../../java/lib/substance/lib/forms-1.1.0.jar:../../../../../java/lib/substance/lib/laf-plugin-50.jar:../../../../../java/lib/substance/lib/laf-widget.jar:../../../../../java/lib/substance/lib/substance-baseline.jar:../../../../../java/lib/substance/lib/substance-swingx.jar:../../../../../java/lib/substance/lib/substance-watermark-pack.jar:../../../../../java/lib/substance/lib/swingx.jar:../../../../../java/lib/substance/build/classes
19.82 +# Property libs.SwingX.classpath is set here just to make sharing of project simpler.
19.83 +# The library definition has always preference over this property.
19.84 +libs.SwingX.classpath=../lib/swingx/SwingX 0.9.1/swingx/dist/swingx-0.9.1.jar:../lib/swingx/SwingX 0.9.1/swingx/lib/jmock-1.1.0RC1.jar:../lib/swingx/SwingX 0.9.1/swingx/lib/junit-4.0-src.jar:../lib/swingx/SwingX 0.9.1/swingx/lib/junit-4.0.jar:../lib/swingx/SwingX 0.9.1/swingx/lib/optional/Filters.jar:../lib/swingx/SwingX 0.9.1/swingx/lib/optional/MultipleGradientPaint.jar:../lib/swingx/SwingX 0.9.1/swingx/lib/optional/swing-layout.jar:../lib/swingx/SwingX 0.9.1/swingx/lib/optional/swing-worker.jar
19.85 +# Property libs.Sybase.com.classpath is set here just to make sharing of project simpler.
19.86 +# The library definition has always preference over this property.
19.87 +libs.Sybase.com.classpath=../../../../../java/lib/Sybase.com/jconn2.jar:../../../../../java/lib/Sybase.com/jTDS2.jar
19.88 +main.class=cz.frantovo.superPostak.SuperPostak
19.89 +manifest.file=manifest.mf
19.90 +meta.inf.dir=${src.dir}/META-INF
19.91 +platform.active=default_platform
19.92 +project.JFTable=../../../../JFTable/trunk/java/JFTable
19.93 +project.Postak=../Postak
19.94 +reference.JFTable.jar=${project.JFTable}/dist/JFTable.jar
19.95 +reference.Postak.jar=${project.Postak}/dist/Postak.jar
19.96 +run.classpath=\
19.97 + ${javac.classpath}:\
19.98 + ${build.classes.dir}
19.99 +run.test.classpath=\
19.100 + ${javac.test.classpath}:\
19.101 + ${build.test.classes.dir}
19.102 +source.encoding=UTF-8
19.103 +src.dir=src
19.104 +test.src.dir=test
20.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
20.2 +++ b/java/SuperPostak/nbproject/project.xml Sun Nov 23 22:19:20 2008 +0100
20.3 @@ -0,0 +1,39 @@
20.4 +<?xml version="1.0" encoding="UTF-8"?>
20.5 +<project xmlns="http://www.netbeans.org/ns/project/1">
20.6 + <type>org.netbeans.modules.java.j2seproject</type>
20.7 + <configuration>
20.8 + <buildExtensions xmlns="http://www.netbeans.org/ns/ant-build-extender/1">
20.9 + <extension file="jnlp-impl.xml" id="jws">
20.10 + <dependency dependsOn="jnlp" target="jar"/>
20.11 + </extension>
20.12 + </buildExtensions>
20.13 + <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
20.14 + <name>SuperPostak</name>
20.15 + <minimum-ant-version>1.6.5</minimum-ant-version>
20.16 + <source-roots>
20.17 + <root id="src.dir"/>
20.18 + </source-roots>
20.19 + <test-roots>
20.20 + <root id="test.src.dir"/>
20.21 + </test-roots>
20.22 + </data>
20.23 + <references xmlns="http://www.netbeans.org/ns/ant-project-references/1">
20.24 + <reference>
20.25 + <foreign-project>JFTable</foreign-project>
20.26 + <artifact-type>jar</artifact-type>
20.27 + <script>build.xml</script>
20.28 + <target>jar</target>
20.29 + <clean-target>clean</clean-target>
20.30 + <id>jar</id>
20.31 + </reference>
20.32 + <reference>
20.33 + <foreign-project>Postak</foreign-project>
20.34 + <artifact-type>jar</artifact-type>
20.35 + <script>build.xml</script>
20.36 + <target>jar</target>
20.37 + <clean-target>clean</clean-target>
20.38 + <id>jar</id>
20.39 + </reference>
20.40 + </references>
20.41 + </configuration>
20.42 +</project>
21.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
21.2 +++ b/java/SuperPostak/src/cz/frantovo/superPostak/Data.java Sun Nov 23 22:19:20 2008 +0100
21.3 @@ -0,0 +1,76 @@
21.4 +/*
21.5 + * To change this template, choose Tools | Templates
21.6 + * and open the template in the editor.
21.7 + */
21.8 +package cz.frantovo.superPostak;
21.9 +
21.10 +import java.security.MessageDigest;
21.11 +import java.security.NoSuchAlgorithmException;
21.12 +import java.sql.Connection;
21.13 +import java.sql.DriverManager;
21.14 +import java.sql.SQLException;
21.15 +import java.util.Arrays;
21.16 +import java.util.logging.Level;
21.17 +import java.util.logging.Logger;
21.18 +
21.19 +/**
21.20 + * Vrstva pro připojení k databázi
21.21 + * @author fiki
21.22 + */
21.23 +public class Data {
21.24 +
21.25 + private static Logger log = Logger.getLogger(Data.class.getName());
21.26 + private static Connection spojeni;
21.27 + private static byte[] hash;
21.28 + private static MessageDigest sha;
21.29 +
21.30 + public static synchronized DataSQL getSpojeniSQL(String url, String jmeno, char[] heslo) throws SQLException {
21.31 + return new DataSQL(getSpojeni(url, jmeno, heslo));
21.32 + }
21.33 +
21.34 + private static synchronized Connection getSpojeni(String url, String jmeno, char[] heslo) throws SQLException {
21.35 + if (Arrays.equals(hash, hashuj(url, jmeno, heslo)) && spojeni != null && !spojeni.isClosed()) {
21.36 + log.log(Level.INFO, "Znovupoužívám DB spojení.");
21.37 + } else {
21.38 + spojeni = getNoveSpojeni(url, jmeno, heslo);
21.39 + }
21.40 +
21.41 + return spojeni;
21.42 + }
21.43 +
21.44 + private static Connection getNoveSpojeni(
21.45 + String url, String jmeno, char[] heslo) throws SQLException {
21.46 + /** Pokusíme se uzavřít staré spojení */
21.47 + if (spojeni != null && !spojeni.isClosed()) {
21.48 + try {
21.49 + spojeni.close();
21.50 + } catch (Exception e) {
21.51 + log.log(Level.INFO, "Nepodařilo se uzavřít spojení", e);
21.52 + }
21.53 + }
21.54 +
21.55 + /** Vrátíme nové spojení */
21.56 + hash = hashuj(url, jmeno, heslo);
21.57 + spojeni = DriverManager.getConnection(url, jmeno, String.valueOf(heslo));
21.58 + log.log(Level.INFO, "Otevřeno nové spoejní spojení k databázi: " + url);
21.59 + return spojeni;
21.60 + }
21.61 +
21.62 + private static byte[] hashuj(String url, String jmeno, char[] heslo) {
21.63 + try {
21.64 + if (sha == null) {
21.65 + sha = MessageDigest.getInstance("SHA-256");
21.66 + }
21.67 + String text = url + "/" + jmeno + "/" + String.valueOf(heslo);
21.68 + return sha.digest(text.getBytes());
21.69 +
21.70 + } catch (NoSuchAlgorithmException e) {
21.71 + /** Tohle by nemělo nikdy nastat. V nouzovém případě použijeme součet hodnot místo hashe. */
21.72 + log.log(Level.SEVERE, "Neexistující hashovací algoritmus", e);
21.73 + String soucet = url + "/" + jmeno + String.valueOf(heslo).length();
21.74 + return soucet.getBytes();
21.75 + }
21.76 + }
21.77 +}
21.78 +
21.79 +
22.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
22.2 +++ b/java/SuperPostak/src/cz/frantovo/superPostak/DataSQL.java Sun Nov 23 22:19:20 2008 +0100
22.3 @@ -0,0 +1,50 @@
22.4 +/*
22.5 + * To change this template, choose Tools | Templates
22.6 + * and open the template in the editor.
22.7 + */
22.8 +package cz.frantovo.superPostak;
22.9 +
22.10 +import cz.frantovo.postak.InternetAddressKomu;
22.11 +import java.io.UnsupportedEncodingException;
22.12 +import java.sql.Connection;
22.13 +import java.sql.PreparedStatement;
22.14 +import java.sql.ResultSet;
22.15 +import java.sql.SQLException;
22.16 +import java.util.ArrayList;
22.17 +import java.util.Collection;
22.18 +import java.util.logging.Level;
22.19 +import java.util.logging.Logger;
22.20 +
22.21 +/**
22.22 + * Třída pro vykonávání SQL dotazů
22.23 + * @author fiki
22.24 + */
22.25 +public class DataSQL {
22.26 +
22.27 + private static Logger log = Logger.getLogger(DataSQL.class.getName());
22.28 + private Connection spojeni;
22.29 +
22.30 + public DataSQL(Connection spojeni) {
22.31 + this.spojeni = spojeni;
22.32 + }
22.33 +
22.34 + /**
22.35 + * Provede SQL příkaz a získá z něj e-mailové adresy.
22.36 + * Zatím předpokládá pouze jediný sloupec, který obsahuje adresu.
22.37 + */
22.38 + public Collection<InternetAddressKomu> getAdresy(String sql) throws SQLException, UnsupportedEncodingException {
22.39 + ArrayList<InternetAddressKomu> vysledek = new ArrayList<InternetAddressKomu>();
22.40 +
22.41 + if (sql == null || sql.length() < 3) {
22.42 + log.log(Level.FINER, "Prázdný SQL dotaz");
22.43 + return null;
22.44 + } else {
22.45 + PreparedStatement ps = spojeni.prepareStatement(sql);
22.46 + ResultSet rs = ps.executeQuery();
22.47 + while (rs.next()) {
22.48 + vysledek.add(new InternetAddressKomu(rs.getString(1), rs.getString(1)));
22.49 + }
22.50 + return vysledek;
22.51 + }
22.52 + }
22.53 +}
23.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
23.2 +++ b/java/SuperPostak/src/cz/frantovo/superPostak/GrafPokus.form Sun Nov 23 22:19:20 2008 +0100
23.3 @@ -0,0 +1,58 @@
23.4 +<?xml version="1.0" encoding="UTF-8" ?>
23.5 +
23.6 +<Form version="1.3" maxVersion="1.5" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
23.7 + <Properties>
23.8 + <Property name="defaultCloseOperation" type="int" value="3"/>
23.9 + </Properties>
23.10 + <SyntheticProperties>
23.11 + <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
23.12 + </SyntheticProperties>
23.13 + <AuxValues>
23.14 + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
23.15 + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
23.16 + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
23.17 + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
23.18 + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
23.19 + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
23.20 + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
23.21 + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
23.22 + </AuxValues>
23.23 +
23.24 + <Layout>
23.25 + <DimensionLayout dim="0">
23.26 + <Group type="103" groupAlignment="0" attributes="0">
23.27 + <Group type="102" alignment="0" attributes="0">
23.28 + <EmptySpace max="-2" attributes="0"/>
23.29 + <Component id="mujGraf" max="32767" attributes="0"/>
23.30 + <EmptySpace max="-2" attributes="0"/>
23.31 + </Group>
23.32 + </Group>
23.33 + </DimensionLayout>
23.34 + <DimensionLayout dim="1">
23.35 + <Group type="103" groupAlignment="0" attributes="0">
23.36 + <Group type="102" alignment="0" attributes="0">
23.37 + <EmptySpace max="-2" attributes="0"/>
23.38 + <Component id="mujGraf" max="32767" attributes="0"/>
23.39 + <EmptySpace max="-2" attributes="0"/>
23.40 + </Group>
23.41 + </Group>
23.42 + </DimensionLayout>
23.43 + </Layout>
23.44 + <SubComponents>
23.45 + <Container class="org.jdesktop.swingx.JXGraph" name="mujGraf">
23.46 +
23.47 + <Layout>
23.48 + <DimensionLayout dim="0">
23.49 + <Group type="103" groupAlignment="0" attributes="0">
23.50 + <EmptySpace min="0" pref="465" max="32767" attributes="0"/>
23.51 + </Group>
23.52 + </DimensionLayout>
23.53 + <DimensionLayout dim="1">
23.54 + <Group type="103" groupAlignment="0" attributes="0">
23.55 + <EmptySpace min="0" pref="422" max="32767" attributes="0"/>
23.56 + </Group>
23.57 + </DimensionLayout>
23.58 + </Layout>
23.59 + </Container>
23.60 + </SubComponents>
23.61 +</Form>
24.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
24.2 +++ b/java/SuperPostak/src/cz/frantovo/superPostak/GrafPokus.java Sun Nov 23 22:19:20 2008 +0100
24.3 @@ -0,0 +1,90 @@
24.4 +/*
24.5 + * GrafPokus.java
24.6 + *
24.7 + * Created on 7. prosinec 2007, 22:33
24.8 + */
24.9 +
24.10 +package cz.frantovo.superPostak;
24.11 +
24.12 +import java.awt.Color;
24.13 +import org.jdesktop.swingx.JXGraph.Plot;
24.14 +
24.15 +/**
24.16 + *
24.17 + * @author fiki
24.18 + */
24.19 +public class GrafPokus extends javax.swing.JFrame {
24.20 +
24.21 + /** Creates new form GrafPokus */
24.22 + public GrafPokus() {
24.23 + initComponents();
24.24 +
24.25 + mujGraf.addPlots(Color.GREEN, new Plot(){
24.26 +
24.27 + @Override
24.28 + public double compute(double value) {
24.29 + return value * value;
24.30 + }
24.31 +
24.32 + });
24.33 + }
24.34 +
24.35 + /** This method is called from within the constructor to
24.36 + * initialize the form.
24.37 + * WARNING: Do NOT modify this code. The content of this method is
24.38 + * always regenerated by the Form Editor.
24.39 + */
24.40 + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
24.41 + private void initComponents() {
24.42 +
24.43 + mujGraf = new org.jdesktop.swingx.JXGraph();
24.44 +
24.45 + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
24.46 +
24.47 + javax.swing.GroupLayout mujGrafLayout = new javax.swing.GroupLayout(mujGraf);
24.48 + mujGraf.setLayout(mujGrafLayout);
24.49 + mujGrafLayout.setHorizontalGroup(
24.50 + mujGrafLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
24.51 + .addGap(0, 465, Short.MAX_VALUE)
24.52 + );
24.53 + mujGrafLayout.setVerticalGroup(
24.54 + mujGrafLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
24.55 + .addGap(0, 422, Short.MAX_VALUE)
24.56 + );
24.57 +
24.58 + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
24.59 + getContentPane().setLayout(layout);
24.60 + layout.setHorizontalGroup(
24.61 + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
24.62 + .addGroup(layout.createSequentialGroup()
24.63 + .addContainerGap()
24.64 + .addComponent(mujGraf, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
24.65 + .addContainerGap())
24.66 + );
24.67 + layout.setVerticalGroup(
24.68 + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
24.69 + .addGroup(layout.createSequentialGroup()
24.70 + .addContainerGap()
24.71 + .addComponent(mujGraf, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
24.72 + .addContainerGap())
24.73 + );
24.74 +
24.75 + pack();
24.76 + }// </editor-fold>//GEN-END:initComponents
24.77 +
24.78 + /**
24.79 + * @param args the command line arguments
24.80 + */
24.81 + public static void main(String args[]) {
24.82 + java.awt.EventQueue.invokeLater(new Runnable() {
24.83 + public void run() {
24.84 + new GrafPokus().setVisible(true);
24.85 + }
24.86 + });
24.87 + }
24.88 +
24.89 + // Variables declaration - do not modify//GEN-BEGIN:variables
24.90 + private org.jdesktop.swingx.JXGraph mujGraf;
24.91 + // End of variables declaration//GEN-END:variables
24.92 +
24.93 +}
25.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
25.2 +++ b/java/SuperPostak/src/cz/frantovo/superPostak/PanelPrijemcu.form Sun Nov 23 22:19:20 2008 +0100
25.3 @@ -0,0 +1,119 @@
25.4 +<?xml version="1.0" encoding="UTF-8" ?>
25.5 +
25.6 +<Form version="1.3" maxVersion="1.5" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
25.7 + <AuxValues>
25.8 + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
25.9 + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
25.10 + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
25.11 + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
25.12 + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
25.13 + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
25.14 + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
25.15 + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
25.16 + </AuxValues>
25.17 +
25.18 + <Layout>
25.19 + <DimensionLayout dim="0">
25.20 + <Group type="103" groupAlignment="0" attributes="0">
25.21 + <Group type="102" alignment="1" attributes="0">
25.22 + <EmptySpace pref="97" max="32767" attributes="0"/>
25.23 + <Component id="otevrit" min="-2" max="-2" attributes="0"/>
25.24 + <EmptySpace max="-2" attributes="0"/>
25.25 + <Component id="ulozit" min="-2" max="-2" attributes="0"/>
25.26 + <EmptySpace max="-2" attributes="0"/>
25.27 + <Component id="odebrat" min="-2" max="-2" attributes="0"/>
25.28 + <EmptySpace max="-2" attributes="0"/>
25.29 + <Component id="pridat" min="-2" max="-2" attributes="0"/>
25.30 + <EmptySpace max="-2" attributes="0"/>
25.31 + </Group>
25.32 + <Component id="jScrollPane1" alignment="0" pref="410" max="32767" attributes="0"/>
25.33 + </Group>
25.34 + </DimensionLayout>
25.35 + <DimensionLayout dim="1">
25.36 + <Group type="103" groupAlignment="0" attributes="0">
25.37 + <Group type="102" alignment="1" attributes="0">
25.38 + <Component id="jScrollPane1" pref="253" max="32767" attributes="0"/>
25.39 + <EmptySpace type="unrelated" max="-2" attributes="0"/>
25.40 + <Group type="103" groupAlignment="3" attributes="0">
25.41 + <Component id="pridat" alignment="3" min="-2" max="-2" attributes="0"/>
25.42 + <Component id="odebrat" alignment="3" min="-2" max="-2" attributes="0"/>
25.43 + <Component id="ulozit" alignment="3" min="-2" max="-2" attributes="0"/>
25.44 + <Component id="otevrit" alignment="3" min="-2" max="-2" attributes="0"/>
25.45 + </Group>
25.46 + <EmptySpace max="-2" attributes="0"/>
25.47 + </Group>
25.48 + </Group>
25.49 + </DimensionLayout>
25.50 + </Layout>
25.51 + <SubComponents>
25.52 + <Container class="javax.swing.JScrollPane" name="jScrollPane1">
25.53 + <AuxValues>
25.54 + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
25.55 + </AuxValues>
25.56 +
25.57 + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
25.58 + <SubComponents>
25.59 + <Component class="cz.frantovo.gui.tabulky.JTable" name="tabulka">
25.60 + <Properties>
25.61 + <Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.editors2.TableModelEditor">
25.62 + <Table columnCount="4" rowCount="4">
25.63 + <Column editable="true" title="Title 1" type="java.lang.Object"/>
25.64 + <Column editable="true" title="Title 2" type="java.lang.Object"/>
25.65 + <Column editable="true" title="Title 3" type="java.lang.Object"/>
25.66 + <Column editable="true" title="Title 4" type="java.lang.Object"/>
25.67 + </Table>
25.68 + </Property>
25.69 + </Properties>
25.70 + </Component>
25.71 + </SubComponents>
25.72 + </Container>
25.73 + <Component class="javax.swing.JButton" name="pridat">
25.74 + <Properties>
25.75 + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
25.76 + <Image iconType="3" name="/cz/frantovo/superPostak/obrazky/vlozit.png"/>
25.77 + </Property>
25.78 + <Property name="mnemonic" type="int" value="105"/>
25.79 + <Property name="text" type="java.lang.String" value="Přidat"/>
25.80 + <Property name="toolTipText" type="java.lang.String" value="<html>
Přidá prázdný řádek pro vložení nového příjemce<br/>
Aby se napsaná změna projevila, je potřeba kliknout jinam do tabulky<br/>
(tzn. ukončit režim editace buňky)<br/>
</html>"/>
25.81 + </Properties>
25.82 + <Events>
25.83 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="pridatActionPerformed"/>
25.84 + </Events>
25.85 + </Component>
25.86 + <Component class="javax.swing.JButton" name="odebrat">
25.87 + <Properties>
25.88 + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
25.89 + <Image iconType="3" name="/cz/frantovo/superPostak/obrazky/editdelete.png"/>
25.90 + </Property>
25.91 + <Property name="mnemonic" type="int" value="114"/>
25.92 + <Property name="text" type="java.lang.String" value="Odebrat"/>
25.93 + <Property name="toolTipText" type="java.lang.String" value="Odebere vybraného příjemce"/>
25.94 + </Properties>
25.95 + <Events>
25.96 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="odebratActionPerformed"/>
25.97 + </Events>
25.98 + </Component>
25.99 + <Component class="javax.swing.JButton" name="ulozit">
25.100 + <Properties>
25.101 + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
25.102 + <Image iconType="3" name="/cz/frantovo/superPostak/obrazky/ulozit.png"/>
25.103 + </Property>
25.104 + <Property name="toolTipText" type="java.lang.String" value="Uložit seznam příjemců do souboru."/>
25.105 + </Properties>
25.106 + <Events>
25.107 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="ulozitActionPerformed"/>
25.108 + </Events>
25.109 + </Component>
25.110 + <Component class="javax.swing.JButton" name="otevrit">
25.111 + <Properties>
25.112 + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
25.113 + <Image iconType="3" name="/cz/frantovo/superPostak/obrazky/otevrit.png"/>
25.114 + </Property>
25.115 + <Property name="toolTipText" type="java.lang.String" value="<html>Přidat příjemce ze souboru.<br/>Na každém řádku se očekává jedna adresa.</html>"/>
25.116 + </Properties>
25.117 + <Events>
25.118 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="otevritActionPerformed"/>
25.119 + </Events>
25.120 + </Component>
25.121 + </SubComponents>
25.122 +</Form>
26.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
26.2 +++ b/java/SuperPostak/src/cz/frantovo/superPostak/PanelPrijemcu.java Sun Nov 23 22:19:20 2008 +0100
26.3 @@ -0,0 +1,341 @@
26.4 +package cz.frantovo.superPostak;
26.5 +
26.6 +import cz.frantovo.gui.tabulky.TableSorterModel;
26.7 +import cz.frantovo.postak.InternetAddressKomu;
26.8 +import cz.frantovo.postak.Postak;
26.9 +import java.awt.Cursor;
26.10 +import java.io.BufferedReader;
26.11 +import java.io.File;
26.12 +import java.io.FileReader;
26.13 +import java.io.FileWriter;
26.14 +import java.io.OutputStreamWriter;
26.15 +import java.util.ArrayList;
26.16 +import java.util.Collection;
26.17 +import java.util.HashSet;
26.18 +import java.util.logging.Level;
26.19 +import java.util.logging.Logger;
26.20 +import javax.swing.DefaultListSelectionModel;
26.21 +import javax.swing.JFileChooser;
26.22 +import javax.swing.event.TableModelEvent;
26.23 +import javax.swing.event.TableModelListener;
26.24 +import javax.swing.table.TableModel;
26.25 +
26.26 +/**
26.27 + *
26.28 + * @author fiki
26.29 + */
26.30 +public class PanelPrijemcu extends javax.swing.JPanel {
26.31 +
26.32 + private static Logger log = Logger.getLogger(PanelPrijemcu.class.getName());
26.33 + private ModelTabulky data = new ModelTabulky();
26.34 +
26.35 + /** Creates new form PanelPrijemcu */
26.36 + public PanelPrijemcu() {
26.37 + initComponents();
26.38 + tabulka.setModel(data);
26.39 + tabulka.setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION);
26.40 + }
26.41 +
26.42 + public ArrayList<InternetAddressKomu> getAdresy() {
26.43 + /** TODO: vracet kopii? */
26.44 + return data.data;
26.45 + }
26.46 +
26.47 + /**
26.48 + * @param prijemci pokud je null, nastaví prázdná kolekce.
26.49 + */
26.50 + public void setAdresy(Collection<InternetAddressKomu> adresy) {
26.51 + data.data = new ArrayList<InternetAddressKomu>();
26.52 + pridejAdresu(adresy);
26.53 + }
26.54 +
26.55 + public void pridejAdresu(Collection<InternetAddressKomu> adresy) {
26.56 + if (adresy == null) {
26.57 + log.log(Level.FINER, "Prázdná množina adres - nic nepřidáme");
26.58 + } else {
26.59 + data.data.addAll(adresy);
26.60 + data.upozorniPosluchace();
26.61 + }
26.62 + }
26.63 +
26.64 + /**
26.65 + * Pokud je needitovatelný, nelze měnit data v tabuce
26.66 + * a z tlačítek je povoleno pouze tlačítko pro uložení do souboru.
26.67 + */
26.68 + public void setEditovatelny(boolean editovatelny) {
26.69 + otevrit.setEnabled(editovatelny);
26.70 + pridat.setEnabled(editovatelny);
26.71 + odebrat.setEnabled(editovatelny);
26.72 + tabulka.setEnabled(editovatelny);
26.73 + }
26.74 +
26.75 + /** This method is called from within the constructor to
26.76 + * initialize the form.
26.77 + * WARNING: Do NOT modify this code. The content of this method is
26.78 + * always regenerated by the Form Editor.
26.79 + */
26.80 + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
26.81 + private void initComponents() {
26.82 +
26.83 + jScrollPane1 = new javax.swing.JScrollPane();
26.84 + tabulka = new cz.frantovo.gui.tabulky.JTable();
26.85 + pridat = new javax.swing.JButton();
26.86 + odebrat = new javax.swing.JButton();
26.87 + ulozit = new javax.swing.JButton();
26.88 + otevrit = new javax.swing.JButton();
26.89 +
26.90 + tabulka.setModel(new javax.swing.table.DefaultTableModel(
26.91 + new Object [][] {
26.92 + {null, null, null, null},
26.93 + {null, null, null, null},
26.94 + {null, null, null, null},
26.95 + {null, null, null, null}
26.96 + },
26.97 + new String [] {
26.98 + "Title 1", "Title 2", "Title 3", "Title 4"
26.99 + }
26.100 + ));
26.101 + jScrollPane1.setViewportView(tabulka);
26.102 +
26.103 + pridat.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/vlozit.png"))); // NOI18N
26.104 + pridat.setMnemonic('i');
26.105 + pridat.setText("Přidat");
26.106 + pridat.setToolTipText("<html>\nPřidá prázdný řádek pro vložení nového příjemce<br/>\nAby se napsaná změna projevila, je potřeba kliknout jinam do tabulky<br/>\n(tzn. ukončit režim editace buňky)<br/>\n</html>");
26.107 + pridat.addActionListener(new java.awt.event.ActionListener() {
26.108 + public void actionPerformed(java.awt.event.ActionEvent evt) {
26.109 + pridatActionPerformed(evt);
26.110 + }
26.111 + });
26.112 +
26.113 + odebrat.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/editdelete.png"))); // NOI18N
26.114 + odebrat.setMnemonic('r');
26.115 + odebrat.setText("Odebrat");
26.116 + odebrat.setToolTipText("Odebere vybraného příjemce");
26.117 + odebrat.addActionListener(new java.awt.event.ActionListener() {
26.118 + public void actionPerformed(java.awt.event.ActionEvent evt) {
26.119 + odebratActionPerformed(evt);
26.120 + }
26.121 + });
26.122 +
26.123 + ulozit.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/ulozit.png"))); // NOI18N
26.124 + ulozit.setToolTipText("Uložit seznam příjemců do souboru.");
26.125 + ulozit.addActionListener(new java.awt.event.ActionListener() {
26.126 + public void actionPerformed(java.awt.event.ActionEvent evt) {
26.127 + ulozitActionPerformed(evt);
26.128 + }
26.129 + });
26.130 +
26.131 + otevrit.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/otevrit.png"))); // NOI18N
26.132 + otevrit.setToolTipText("<html>Přidat příjemce ze souboru.<br/>Na každém řádku se očekává jedna adresa.</html>");
26.133 + otevrit.addActionListener(new java.awt.event.ActionListener() {
26.134 + public void actionPerformed(java.awt.event.ActionEvent evt) {
26.135 + otevritActionPerformed(evt);
26.136 + }
26.137 + });
26.138 +
26.139 + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
26.140 + this.setLayout(layout);
26.141 + layout.setHorizontalGroup(
26.142 + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
26.143 + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
26.144 + .addContainerGap(97, Short.MAX_VALUE)
26.145 + .addComponent(otevrit)
26.146 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
26.147 + .addComponent(ulozit)
26.148 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
26.149 + .addComponent(odebrat)
26.150 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
26.151 + .addComponent(pridat)
26.152 + .addContainerGap())
26.153 + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 410, Short.MAX_VALUE)
26.154 + );
26.155 + layout.setVerticalGroup(
26.156 + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
26.157 + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
26.158 + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 253, Short.MAX_VALUE)
26.159 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
26.160 + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
26.161 + .addComponent(pridat)
26.162 + .addComponent(odebrat)
26.163 + .addComponent(ulozit)
26.164 + .addComponent(otevrit))
26.165 + .addContainerGap())
26.166 + );
26.167 + }// </editor-fold>//GEN-END:initComponents
26.168 + private void pridatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pridatActionPerformed
26.169 + data.pridejRadek();
26.170 + }//GEN-LAST:event_pridatActionPerformed
26.171 +
26.172 + private void odebratActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_odebratActionPerformed
26.173 + int radkaV = tabulka.getSelectedRow();
26.174 + int radka = ((TableSorterModel) tabulka.getModel()).modelIndex(radkaV);
26.175 + if (radka > -1 && radka < data.getRowCount()) {
26.176 + data.odeberRadek(radka);
26.177 + }
26.178 + }//GEN-LAST:event_odebratActionPerformed
26.179 +
26.180 + private void ulozitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ulozitActionPerformed
26.181 + JFileChooser dialog = new JFileChooser();
26.182 + dialog.setMultiSelectionEnabled(false);
26.183 + dialog.setDialogTitle("Uložit seznam do souboru");
26.184 + int vysledek = dialog.showSaveDialog(this);
26.185 + if (vysledek == JFileChooser.APPROVE_OPTION) {
26.186 + File soubor = dialog.getSelectedFile();
26.187 + try {
26.188 + setCursor(new Cursor(Cursor.WAIT_CURSOR));
26.189 + OutputStreamWriter zapisovac = new FileWriter(soubor);
26.190 + int pocetDobrych = 0;
26.191 + int pocetPreskocenych = 0;
26.192 +
26.193 + for (InternetAddressKomu adresa : data.data) {
26.194 + /** TODO: různé formátování, případně jména */
26.195 + if (Postak.zkontrolujAdresu(adresa.getAddress())) {
26.196 + zapisovac.write(adresa.getAddress() + "\n");
26.197 + pocetDobrych++;
26.198 + } else {
26.199 + pocetPreskocenych++;
26.200 + }
26.201 + }
26.202 +
26.203 + zapisovac.close();
26.204 + String preskocene = "";
26.205 + if (pocetPreskocenych > 0) {
26.206 + preskocene = "\nPočet přeskočených: " + pocetPreskocenych + "\n(Přeskočené neodpovídaly regulárnímu výrazu.)";
26.207 +
26.208 + }
26.209 + SuperPostak.zobrazInformacniDialog(this, "Uložení seznamu", "Adresy příjemců byly úspěšně uloženy do souboru:\n" + soubor.getAbsolutePath() + "\nPočet uložených adres: " + pocetDobrych + preskocene, true);
26.210 + } catch (Exception e) {
26.211 + SuperPostak.zobrazChybovyDialog(this, "Uložení seznamu selhalo", "Adresy se nepodařilo uložit do souboru.", null, e, Level.WARNING, false);
26.212 + } finally {
26.213 + setCursor(Cursor.getDefaultCursor());
26.214 + }
26.215 + }
26.216 + }//GEN-LAST:event_ulozitActionPerformed
26.217 +
26.218 + private void otevritActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_otevritActionPerformed
26.219 + JFileChooser dialog = new JFileChooser();
26.220 + dialog.setMultiSelectionEnabled(false);
26.221 + dialog.setDialogTitle("Načíst adresy ze souboru");
26.222 + int vysledek = dialog.showOpenDialog(this);
26.223 + if (vysledek == JFileChooser.APPROVE_OPTION) {
26.224 + File soubor = dialog.getSelectedFile();
26.225 + try {
26.226 + setCursor(new Cursor(Cursor.WAIT_CURSOR));
26.227 + BufferedReader ctenar = new BufferedReader(new FileReader(soubor));
26.228 + int pocetDobrych = 0;
26.229 + int pocetPreskocenych = 0;
26.230 + String radka = ctenar.readLine();
26.231 + ArrayList<InternetAddressKomu> adresy = new ArrayList<InternetAddressKomu>();
26.232 +
26.233 + while (radka != null) {
26.234 + if (Postak.zkontrolujAdresu(radka)) {
26.235 + adresy.add(new InternetAddressKomu(radka, null));
26.236 + pocetDobrych++;
26.237 +
26.238 + } else {
26.239 + pocetPreskocenych++;
26.240 + }
26.241 +
26.242 + radka = ctenar.readLine();
26.243 + }
26.244 +
26.245 + setAdresy(adresy);
26.246 + ctenar.close();
26.247 + String preskocene = "";
26.248 + if (pocetPreskocenych > 0) {
26.249 + preskocene = "\nPočet přeskočených: " + pocetPreskocenych + "\n(Přeskočené neodpovídaly regulárnímu výrazu.)";
26.250 +
26.251 + }
26.252 +
26.253 + SuperPostak.zobrazInformacniDialog(this, "Načtení adres", "Byl načten seznam adres ze souboru:\n" + soubor.getAbsolutePath() + "\nPočet načtených adres: " + pocetDobrych + preskocene, true);
26.254 + } catch (Exception e) {
26.255 + SuperPostak.zobrazChybovyDialog(this, "Načtení souboru selhalo", "Nepodařilo se načíst soubor s adresami.", null, e, Level.WARNING, false);
26.256 + } finally {
26.257 + setCursor(Cursor.getDefaultCursor());
26.258 + }
26.259 +
26.260 + }
26.261 + }//GEN-LAST:event_otevritActionPerformed
26.262 +
26.263 + // Variables declaration - do not modify//GEN-BEGIN:variables
26.264 + private javax.swing.JScrollPane jScrollPane1;
26.265 + private javax.swing.JButton odebrat;
26.266 + private javax.swing.JButton otevrit;
26.267 + private javax.swing.JButton pridat;
26.268 + private cz.frantovo.gui.tabulky.JTable tabulka;
26.269 + private javax.swing.JButton ulozit;
26.270 + // End of variables declaration//GEN-END:variables
26.271 + private class ModelTabulky implements TableModel {
26.272 +
26.273 + private String[] sloupecky = {"Jméno", "e-mail"};
26.274 + private ArrayList<InternetAddressKomu> data = new ArrayList<InternetAddressKomu>();
26.275 + private HashSet<TableModelListener> posluchace = new HashSet<TableModelListener>();
26.276 +
26.277 + public int getRowCount() {
26.278 + return data.size();
26.279 + }
26.280 +
26.281 + public int getColumnCount() {
26.282 + return sloupecky.length;
26.283 + }
26.284 +
26.285 + public String getColumnName(int n) {
26.286 + return sloupecky[n];
26.287 + }
26.288 +
26.289 + public Class<?> getColumnClass(int n) {
26.290 + return String.class;
26.291 + }
26.292 +
26.293 + public boolean isCellEditable(int m, int n) {
26.294 + return true;
26.295 + }
26.296 +
26.297 + public Object getValueAt(int m, int n) {
26.298 + if (n == 0) {
26.299 + return data.get(m).getPersonal();
26.300 + } else if (n == 1) {
26.301 + return data.get(m).getAddress();
26.302 + } else {
26.303 + return null;
26.304 + }
26.305 + }
26.306 +
26.307 + public void setValueAt(Object value, int m, int n) {
26.308 + if (n == 0) {
26.309 + try {
26.310 + data.get(m).setPersonal(String.valueOf(value.toString()));
26.311 + } catch (Exception ex) {
26.312 + log.log(Level.SEVERE, "ModelTabulky.setValueAt(" + m + ", " + n + ")", ex);
26.313 + }
26.314 + } else if (n == 1) {
26.315 + data.get(m).setAddress(String.valueOf(value.toString()));
26.316 + }
26.317 + }
26.318 +
26.319 + public void addTableModelListener(TableModelListener l) {
26.320 + posluchace.add(l);
26.321 + }
26.322 +
26.323 + public void removeTableModelListener(TableModelListener l) {
26.324 + posluchace.remove(l);
26.325 + }
26.326 +
26.327 + public void pridejRadek() {
26.328 + data.add(new InternetAddressKomu());
26.329 +
26.330 + upozorniPosluchace();
26.331 + }
26.332 +
26.333 + public void odeberRadek(int m) {
26.334 + data.remove(m);
26.335 + upozorniPosluchace();
26.336 + }
26.337 +
26.338 + private void upozorniPosluchace() {
26.339 + for (TableModelListener p : posluchace) {
26.340 + p.tableChanged(new TableModelEvent(this));
26.341 + }
26.342 + }
26.343 + }
26.344 +}
27.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
27.2 +++ b/java/SuperPostak/src/cz/frantovo/superPostak/Pokus.java Sun Nov 23 22:19:20 2008 +0100
27.3 @@ -0,0 +1,43 @@
27.4 +package cz.frantovo.superPostak;
27.5 +
27.6 +import java.util.Properties;
27.7 +import javax.mail.Message;
27.8 +import javax.mail.Session;
27.9 +import javax.mail.Transport;
27.10 +import javax.mail.internet.InternetAddress;
27.11 +import javax.mail.internet.MimeMessage;
27.12 +
27.13 +/**
27.14 + *
27.15 + * @author fiki
27.16 + */
27.17 +public class Pokus {
27.18 +
27.19 + private static Session smtpSession;
27.20 +
27.21 + public static void main (String[] args) {
27.22 + Properties props = System.getProperties();
27.23 + props.put("mail.smtp.host", "frantovo.cz");
27.24 + //PopUpAuthenticator auth = new PopUpAuthenticator();
27.25 + smtpSession = Session.getInstance(props, null);
27.26 +
27.27 + try {
27.28 + MimeMessage message = new MimeMessage(smtpSession);
27.29 + message.setFrom(new InternetAddress("java@frantovo.cz", "SuperPošťák"));
27.30 + message.addRecipient(Message.RecipientType.TO,
27.31 + new InternetAddress("informace@frantovo.cz", "František Kučera"));
27.32 + message.setSubject("Předmět zprávy");
27.33 + message.setText("Ahoj, jak se máš? šřtžěýžééšž Java WebStart");
27.34 +
27.35 +
27.36 + Transport.send(message);
27.37 +
27.38 + } catch (Exception e) {
27.39 +
27.40 + e.printStackTrace();
27.41 + }
27.42 +
27.43 +
27.44 + }
27.45 +
27.46 +}
28.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
28.2 +++ b/java/SuperPostak/src/cz/frantovo/superPostak/SuperPostak.form Sun Nov 23 22:19:20 2008 +0100
28.3 @@ -0,0 +1,873 @@
28.4 +<?xml version="1.0" encoding="UTF-8" ?>
28.5 +
28.6 +<Form version="1.3" maxVersion="1.5" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
28.7 + <NonVisualComponents>
28.8 + <Container class="org.jdesktop.swingx.JXPanel" name="panelDatabaze">
28.9 +
28.10 + <Layout>
28.11 + <DimensionLayout dim="0">
28.12 + <Group type="103" groupAlignment="0" attributes="0">
28.13 + <Group type="102" attributes="0">
28.14 + <EmptySpace max="-2" attributes="0"/>
28.15 + <Group type="103" groupAlignment="0" attributes="0">
28.16 + <Group type="102" alignment="0" attributes="0">
28.17 + <Group type="103" groupAlignment="0" attributes="0">
28.18 + <Component id="jLabel9" alignment="0" min="-2" max="-2" attributes="0"/>
28.19 + <Component id="jLabel10" alignment="0" min="-2" max="-2" attributes="0"/>
28.20 + <Component id="jLabel11" alignment="0" min="-2" max="-2" attributes="0"/>
28.21 + </Group>
28.22 + <EmptySpace max="-2" attributes="0"/>
28.23 + <Group type="103" groupAlignment="0" attributes="0">
28.24 + <Component id="vstupDatabaze" alignment="0" pref="257" max="32767" attributes="0"/>
28.25 + <Component id="vstupDBjmeno" alignment="0" pref="257" max="32767" attributes="0"/>
28.26 + <Group type="102" alignment="0" attributes="0">
28.27 + <EmptySpace type="unrelated" max="-2" attributes="0"/>
28.28 + <Component id="vstupDBheslo" pref="257" max="32767" attributes="0"/>
28.29 + </Group>
28.30 + </Group>
28.31 + </Group>
28.32 + <Group type="102" alignment="1" attributes="0">
28.33 + <Component id="vystupDBzprava" pref="155" max="32767" attributes="0"/>
28.34 + <EmptySpace max="-2" attributes="0"/>
28.35 + <Component id="vyzkousetPripojeniTlacitko" min="-2" max="-2" attributes="0"/>
28.36 + </Group>
28.37 + </Group>
28.38 + <EmptySpace max="-2" attributes="0"/>
28.39 + </Group>
28.40 + </Group>
28.41 + </DimensionLayout>
28.42 + <DimensionLayout dim="1">
28.43 + <Group type="103" groupAlignment="0" attributes="0">
28.44 + <Group type="102" alignment="0" attributes="0">
28.45 + <EmptySpace max="-2" attributes="0"/>
28.46 + <Group type="103" groupAlignment="3" attributes="0">
28.47 + <Component id="jLabel9" alignment="3" min="-2" max="-2" attributes="0"/>
28.48 + <Component id="vstupDatabaze" alignment="3" min="-2" max="-2" attributes="0"/>
28.49 + </Group>
28.50 + <EmptySpace max="-2" attributes="0"/>
28.51 + <Group type="103" groupAlignment="3" attributes="0">
28.52 + <Component id="jLabel10" alignment="3" min="-2" max="-2" attributes="0"/>
28.53 + <Component id="vstupDBjmeno" alignment="3" min="-2" max="-2" attributes="0"/>
28.54 + </Group>
28.55 + <EmptySpace max="-2" attributes="0"/>
28.56 + <Group type="103" groupAlignment="3" attributes="0">
28.57 + <Component id="jLabel11" alignment="3" min="-2" max="-2" attributes="0"/>
28.58 + <Component id="vstupDBheslo" alignment="3" min="-2" max="-2" attributes="0"/>
28.59 + </Group>
28.60 + <EmptySpace type="unrelated" max="-2" attributes="0"/>
28.61 + <Group type="103" groupAlignment="3" attributes="0">
28.62 + <Component id="vyzkousetPripojeniTlacitko" alignment="3" min="-2" max="-2" attributes="0"/>
28.63 + <Component id="vystupDBzprava" alignment="3" min="-2" max="-2" attributes="0"/>
28.64 + </Group>
28.65 + <EmptySpace pref="183" max="32767" attributes="0"/>
28.66 + </Group>
28.67 + </Group>
28.68 + </DimensionLayout>
28.69 + </Layout>
28.70 + <SubComponents>
28.71 + <Component class="javax.swing.JLabel" name="jLabel9">
28.72 + <Properties>
28.73 + <Property name="text" type="java.lang.String" value="Databáze"/>
28.74 + </Properties>
28.75 + </Component>
28.76 + <Component class="javax.swing.JTextField" name="vstupDatabaze">
28.77 + </Component>
28.78 + <Component class="javax.swing.JLabel" name="jLabel10">
28.79 + <Properties>
28.80 + <Property name="text" type="java.lang.String" value="Jméno"/>
28.81 + </Properties>
28.82 + </Component>
28.83 + <Component class="javax.swing.JTextField" name="vstupDBjmeno">
28.84 + </Component>
28.85 + <Component class="javax.swing.JPasswordField" name="vstupDBheslo">
28.86 + </Component>
28.87 + <Component class="javax.swing.JLabel" name="jLabel11">
28.88 + <Properties>
28.89 + <Property name="text" type="java.lang.String" value="Heslo"/>
28.90 + </Properties>
28.91 + </Component>
28.92 + <Component class="javax.swing.JButton" name="vyzkousetPripojeniTlacitko">
28.93 + <Properties>
28.94 + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
28.95 + <Image iconType="3" name="/cz/frantovo/superPostak/obrazky/fork.png"/>
28.96 + </Property>
28.97 + <Property name="mnemonic" type="int" value="121"/>
28.98 + <Property name="text" type="java.lang.String" value="Vyzkoušet spojení"/>
28.99 + </Properties>
28.100 + <Events>
28.101 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="vyzkousetPripojeniTlacitkoActionPerformed"/>
28.102 + </Events>
28.103 + </Component>
28.104 + <Component class="javax.swing.JLabel" name="vystupDBzprava">
28.105 + <Properties>
28.106 + <Property name="text" type="java.lang.String" value=" "/>
28.107 + </Properties>
28.108 + </Component>
28.109 + </SubComponents>
28.110 + </Container>
28.111 + <Container class="org.jdesktop.swingx.JXPanel" name="panelOdeslat">
28.112 +
28.113 + <Layout>
28.114 + <DimensionLayout dim="0">
28.115 + <Group type="103" groupAlignment="0" attributes="0">
28.116 + <Group type="102" alignment="0" attributes="0">
28.117 + <EmptySpace max="-2" attributes="0"/>
28.118 + <Group type="103" groupAlignment="0" attributes="0">
28.119 + <Component id="prijemciZkusebni" alignment="1" pref="535" max="32767" attributes="0"/>
28.120 + <Component id="jSeparator2" alignment="0" pref="535" max="32767" attributes="0"/>
28.121 + <Component id="jPanel1" alignment="0" max="32767" attributes="0"/>
28.122 + <Component id="jLabel14" alignment="0" min="-2" max="-2" attributes="0"/>
28.123 + </Group>
28.124 + <EmptySpace max="-2" attributes="0"/>
28.125 + </Group>
28.126 + </Group>
28.127 + </DimensionLayout>
28.128 + <DimensionLayout dim="1">
28.129 + <Group type="103" groupAlignment="0" attributes="0">
28.130 + <Group type="102" alignment="1" attributes="0">
28.131 + <EmptySpace max="-2" attributes="0"/>
28.132 + <Component id="jLabel14" min="-2" max="-2" attributes="0"/>
28.133 + <EmptySpace max="-2" attributes="0"/>
28.134 + <Component id="prijemciZkusebni" pref="153" max="32767" attributes="0"/>
28.135 + <EmptySpace type="unrelated" max="-2" attributes="0"/>
28.136 + <Component id="jSeparator2" min="-2" max="-2" attributes="0"/>
28.137 + <EmptySpace max="-2" attributes="0"/>
28.138 + <Component id="jPanel1" min="-2" max="-2" attributes="0"/>
28.139 + <EmptySpace max="-2" attributes="0"/>
28.140 + </Group>
28.141 + </Group>
28.142 + </DimensionLayout>
28.143 + </Layout>
28.144 + <SubComponents>
28.145 + <Container class="javax.swing.JPanel" name="jPanel1">
28.146 +
28.147 + <Layout>
28.148 + <DimensionLayout dim="0">
28.149 + <Group type="103" groupAlignment="0" attributes="0">
28.150 + <Group type="102" alignment="1" attributes="0">
28.151 + <EmptySpace pref="106" max="32767" attributes="0"/>
28.152 + <Component id="rozeslatZkusebniTlacitko" min="-2" max="-2" attributes="0"/>
28.153 + <EmptySpace max="-2" attributes="0"/>
28.154 + <Component id="rozeslatHromadnouZpravuTlacitko" min="-2" max="-2" attributes="0"/>
28.155 + <EmptySpace max="-2" attributes="0"/>
28.156 + <Component id="zobrazitVsechnyPrijemceTlacitko" min="-2" max="-2" attributes="0"/>
28.157 + <EmptySpace max="-2" attributes="0"/>
28.158 + </Group>
28.159 + </Group>
28.160 + </DimensionLayout>
28.161 + <DimensionLayout dim="1">
28.162 + <Group type="103" groupAlignment="0" attributes="0">
28.163 + <Group type="102" alignment="0" attributes="0">
28.164 + <EmptySpace max="-2" attributes="0"/>
28.165 + <Group type="103" groupAlignment="3" attributes="0">
28.166 + <Component id="rozeslatHromadnouZpravuTlacitko" alignment="3" min="-2" max="-2" attributes="0"/>
28.167 + <Component id="zobrazitVsechnyPrijemceTlacitko" alignment="3" min="-2" max="-2" attributes="0"/>
28.168 + <Component id="rozeslatZkusebniTlacitko" alignment="3" min="-2" max="-2" attributes="0"/>
28.169 + </Group>
28.170 + <EmptySpace max="32767" attributes="0"/>
28.171 + </Group>
28.172 + </Group>
28.173 + </DimensionLayout>
28.174 + </Layout>
28.175 + <SubComponents>
28.176 + <Component class="javax.swing.JButton" name="rozeslatZkusebniTlacitko">
28.177 + <Properties>
28.178 + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
28.179 + <Image iconType="3" name="/cz/frantovo/superPostak/obrazky/apply.png"/>
28.180 + </Property>
28.181 + <Property name="mnemonic" type="int" value="117"/>
28.182 + <Property name="text" type="java.lang.String" value="Rozeslat zkušební"/>
28.183 + </Properties>
28.184 + <Events>
28.185 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="rozeslatZkusebniTlacitkoActionPerformed"/>
28.186 + </Events>
28.187 + </Component>
28.188 + <Component class="javax.swing.JButton" name="rozeslatHromadnouZpravuTlacitko">
28.189 + <Properties>
28.190 + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
28.191 + <Image iconType="3" name="/cz/frantovo/superPostak/obrazky/adept_commit.png"/>
28.192 + </Property>
28.193 + <Property name="mnemonic" type="int" value="104"/>
28.194 + <Property name="text" type="java.lang.String" value="Rozeslat hromadnou zprávu"/>
28.195 + </Properties>
28.196 + <Events>
28.197 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="rozeslatHromadnouZpravuTlacitkoActionPerformed"/>
28.198 + </Events>
28.199 + </Component>
28.200 + <Component class="javax.swing.JButton" name="zobrazitVsechnyPrijemceTlacitko">
28.201 + <Properties>
28.202 + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
28.203 + <Image iconType="3" name="/cz/frantovo/superPostak/obrazky/zobrazit_adresy.png"/>
28.204 + </Property>
28.205 + <Property name="toolTipText" type="java.lang.String" value="<html>
Zobrazí seznam všech příjemcům, kterým bude odeslána zpráva.<br/>
(Při velkých počtech záznamů může být tato operace náročná.)
</html>"/>
28.206 + </Properties>
28.207 + <Events>
28.208 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="zobrazitVsechnyPrijemceTlacitkoActionPerformed"/>
28.209 + </Events>
28.210 + </Component>
28.211 + </SubComponents>
28.212 + </Container>
28.213 + <Component class="cz.frantovo.superPostak.PanelPrijemcu" name="prijemciZkusebni">
28.214 + </Component>
28.215 + <Component class="javax.swing.JSeparator" name="jSeparator2">
28.216 + </Component>
28.217 + <Component class="javax.swing.JLabel" name="jLabel14">
28.218 + <Properties>
28.219 + <Property name="text" type="java.lang.String" value="Zkušební příjemci"/>
28.220 + </Properties>
28.221 + </Component>
28.222 + </SubComponents>
28.223 + </Container>
28.224 + <Container class="org.jdesktop.swingx.JXPanel" name="panelPrijemci">
28.225 +
28.226 + <Layout>
28.227 + <DimensionLayout dim="0">
28.228 + <Group type="103" groupAlignment="0" attributes="0">
28.229 + <Group type="102" alignment="1" attributes="0">
28.230 + <EmptySpace max="-2" attributes="0"/>
28.231 + <Group type="103" groupAlignment="1" attributes="0">
28.232 + <Component id="prijemciDodatecni" alignment="0" pref="344" max="32767" attributes="0"/>
28.233 + <Component id="jSeparator1" alignment="0" pref="344" max="32767" attributes="0"/>
28.234 + <Component id="jScrollPane3" alignment="0" pref="344" max="32767" attributes="0"/>
28.235 + <Component id="jLabel13" alignment="0" min="-2" max="-2" attributes="0"/>
28.236 + <Group type="102" alignment="1" attributes="0">
28.237 + <Component id="vystupSQLZprava" pref="52" max="32767" attributes="0"/>
28.238 + <EmptySpace min="-2" pref="127" max="-2" attributes="0"/>
28.239 + <Component id="vyzkousetSQLTlacitko" min="-2" max="-2" attributes="0"/>
28.240 + <EmptySpace max="-2" attributes="0"/>
28.241 + <Component id="zobrazitSQLPrijemceTlacitko" min="-2" max="-2" attributes="0"/>
28.242 + </Group>
28.243 + <Component id="jLabel16" alignment="0" min="-2" max="-2" attributes="0"/>
28.244 + </Group>
28.245 + <EmptySpace max="-2" attributes="0"/>
28.246 + </Group>
28.247 + </Group>
28.248 + </DimensionLayout>
28.249 + <DimensionLayout dim="1">
28.250 + <Group type="103" groupAlignment="0" attributes="0">
28.251 + <Group type="102" alignment="0" attributes="0">
28.252 + <EmptySpace max="-2" attributes="0"/>
28.253 + <Component id="jLabel13" min="-2" max="-2" attributes="0"/>
28.254 + <EmptySpace max="-2" attributes="0"/>
28.255 + <Component id="jScrollPane3" min="-2" max="-2" attributes="0"/>
28.256 + <EmptySpace max="-2" attributes="0"/>
28.257 + <Group type="103" groupAlignment="3" attributes="0">
28.258 + <Component id="vystupSQLZprava" alignment="3" min="-2" pref="14" max="-2" attributes="0"/>
28.259 + <Component id="zobrazitSQLPrijemceTlacitko" alignment="3" min="-2" max="-2" attributes="0"/>
28.260 + <Component id="vyzkousetSQLTlacitko" alignment="3" min="-2" max="-2" attributes="0"/>
28.261 + </Group>
28.262 + <EmptySpace max="-2" attributes="0"/>
28.263 + <Component id="jSeparator1" min="-2" pref="10" max="-2" attributes="0"/>
28.264 + <EmptySpace max="-2" attributes="0"/>
28.265 + <Component id="jLabel16" min="-2" max="-2" attributes="0"/>
28.266 + <EmptySpace max="-2" attributes="0"/>
28.267 + <Component id="prijemciDodatecni" pref="200" max="32767" attributes="0"/>
28.268 + <EmptySpace max="-2" attributes="0"/>
28.269 + </Group>
28.270 + </Group>
28.271 + </DimensionLayout>
28.272 + </Layout>
28.273 + <SubComponents>
28.274 + <Component class="javax.swing.JLabel" name="jLabel13">
28.275 + <Properties>
28.276 + <Property name="text" type="java.lang.String" value="SQL dotaz"/>
28.277 + </Properties>
28.278 + </Component>
28.279 + <Container class="javax.swing.JScrollPane" name="jScrollPane3">
28.280 + <AuxValues>
28.281 + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
28.282 + </AuxValues>
28.283 +
28.284 + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
28.285 + <SubComponents>
28.286 + <Component class="javax.swing.JTextArea" name="vstupSQL">
28.287 + <Properties>
28.288 + <Property name="columns" type="int" value="20"/>
28.289 + <Property name="rows" type="int" value="5"/>
28.290 + </Properties>
28.291 + </Component>
28.292 + </SubComponents>
28.293 + </Container>
28.294 + <Component class="javax.swing.JButton" name="vyzkousetSQLTlacitko">
28.295 + <Properties>
28.296 + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
28.297 + <Image iconType="3" name="/cz/frantovo/superPostak/obrazky/fork.png"/>
28.298 + </Property>
28.299 + <Property name="mnemonic" type="int" value="121"/>
28.300 + <Property name="text" type="java.lang.String" value="Vyzkoušet"/>
28.301 + </Properties>
28.302 + <Events>
28.303 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="vyzkousetSQLTlacitkoActionPerformed"/>
28.304 + </Events>
28.305 + </Component>
28.306 + <Component class="javax.swing.JLabel" name="vystupSQLZprava">
28.307 + <Properties>
28.308 + <Property name="text" type="java.lang.String" value=" "/>
28.309 + </Properties>
28.310 + </Component>
28.311 + <Component class="cz.frantovo.superPostak.PanelPrijemcu" name="prijemciDodatecni">
28.312 + <Properties>
28.313 + <Property name="toolTipText" type="java.lang.String" value="Zde můžete dopnit další přijemce."/>
28.314 + </Properties>
28.315 + </Component>
28.316 + <Component class="javax.swing.JSeparator" name="jSeparator1">
28.317 + </Component>
28.318 + <Component class="javax.swing.JLabel" name="jLabel16">
28.319 + <Properties>
28.320 + <Property name="text" type="java.lang.String" value="Dodateční příjemci:"/>
28.321 + </Properties>
28.322 + </Component>
28.323 + <Component class="javax.swing.JButton" name="zobrazitSQLPrijemceTlacitko">
28.324 + <Properties>
28.325 + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
28.326 + <Image iconType="3" name="/cz/frantovo/superPostak/obrazky/zobrazit_adresy.png"/>
28.327 + </Property>
28.328 + <Property name="toolTipText" type="java.lang.String" value="<html>
Zobrazí seznam adres načtených z databáze.<br/>
(Při velkých počtech záznamů může být tato operace náročná.)
</html>"/>
28.329 + </Properties>
28.330 + <Events>
28.331 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="zobrazitSQLPrijemceTlacitkoActionPerformed"/>
28.332 + </Events>
28.333 + </Component>
28.334 + </SubComponents>
28.335 + </Container>
28.336 + <Container class="org.jdesktop.swingx.JXPanel" name="panelServer">
28.337 +
28.338 + <Layout>
28.339 + <DimensionLayout dim="0">
28.340 + <Group type="103" groupAlignment="0" attributes="0">
28.341 + <Group type="102" alignment="1" attributes="0">
28.342 + <EmptySpace max="-2" attributes="0"/>
28.343 + <Group type="103" groupAlignment="1" attributes="0">
28.344 + <Component id="napovedaSMTPscroll" alignment="0" pref="318" max="32767" attributes="0"/>
28.345 + <Group type="102" alignment="1" attributes="0">
28.346 + <Group type="103" groupAlignment="0" attributes="0">
28.347 + <Component id="jLabel4" alignment="0" min="-2" max="-2" attributes="0"/>
28.348 + <Component id="jLabel6" alignment="0" min="-2" max="-2" attributes="0"/>
28.349 + <Component id="jLabel5" alignment="0" min="-2" max="-2" attributes="0"/>
28.350 + <Component id="jLabel7" alignment="0" min="-2" max="-2" attributes="0"/>
28.351 + <Component id="jLabel8" alignment="0" min="-2" max="-2" attributes="0"/>
28.352 + </Group>
28.353 + <EmptySpace max="-2" attributes="0"/>
28.354 + <Group type="103" groupAlignment="0" attributes="0">
28.355 + <Component id="vstupSMTPserver" alignment="0" pref="230" max="32767" attributes="0"/>
28.356 + <Component id="vstupSMTPport" alignment="1" pref="230" max="32767" attributes="0"/>
28.357 + <Component id="vstupSMTPjmeno" alignment="0" pref="230" max="32767" attributes="0"/>
28.358 + <Component id="vstupSMTPheslo" alignment="0" pref="230" max="32767" attributes="0"/>
28.359 + <Component id="vstupSMTPlimitPrijemcu" alignment="0" pref="230" max="32767" attributes="0"/>
28.360 + </Group>
28.361 + </Group>
28.362 + </Group>
28.363 + <EmptySpace max="-2" attributes="0"/>
28.364 + </Group>
28.365 + </Group>
28.366 + </DimensionLayout>
28.367 + <DimensionLayout dim="1">
28.368 + <Group type="103" groupAlignment="0" attributes="0">
28.369 + <Group type="102" alignment="0" attributes="0">
28.370 + <EmptySpace max="-2" attributes="0"/>
28.371 + <Group type="103" groupAlignment="3" attributes="0">
28.372 + <Component id="jLabel4" alignment="3" min="-2" max="-2" attributes="0"/>
28.373 + <Component id="vstupSMTPserver" alignment="3" min="-2" max="-2" attributes="0"/>
28.374 + </Group>
28.375 + <EmptySpace max="-2" attributes="0"/>
28.376 + <Group type="103" groupAlignment="3" attributes="0">
28.377 + <Component id="vstupSMTPport" alignment="3" min="-2" max="-2" attributes="0"/>
28.378 + <Component id="jLabel5" alignment="3" min="-2" max="-2" attributes="0"/>
28.379 + </Group>
28.380 + <EmptySpace max="-2" attributes="0"/>
28.381 + <Group type="103" groupAlignment="3" attributes="0">
28.382 + <Component id="jLabel6" alignment="3" min="-2" max="-2" attributes="0"/>
28.383 + <Component id="vstupSMTPjmeno" alignment="3" min="-2" max="-2" attributes="0"/>
28.384 + </Group>
28.385 + <EmptySpace max="-2" attributes="0"/>
28.386 + <Group type="103" groupAlignment="3" attributes="0">
28.387 + <Component id="vstupSMTPheslo" alignment="3" min="-2" max="-2" attributes="0"/>
28.388 + <Component id="jLabel7" alignment="3" min="-2" max="-2" attributes="0"/>
28.389 + </Group>
28.390 + <EmptySpace max="-2" attributes="0"/>
28.391 + <Group type="103" groupAlignment="3" attributes="0">
28.392 + <Component id="vstupSMTPlimitPrijemcu" alignment="3" min="-2" max="-2" attributes="0"/>
28.393 + <Component id="jLabel8" alignment="3" min="-2" max="-2" attributes="0"/>
28.394 + </Group>
28.395 + <EmptySpace type="unrelated" max="-2" attributes="0"/>
28.396 + <Component id="napovedaSMTPscroll" pref="145" max="32767" attributes="0"/>
28.397 + <EmptySpace max="-2" attributes="0"/>
28.398 + </Group>
28.399 + </Group>
28.400 + </DimensionLayout>
28.401 + </Layout>
28.402 + <SubComponents>
28.403 + <Component class="javax.swing.JLabel" name="jLabel4">
28.404 + <Properties>
28.405 + <Property name="text" type="java.lang.String" value="SMTP server"/>
28.406 + </Properties>
28.407 + </Component>
28.408 + <Component class="javax.swing.JLabel" name="jLabel5">
28.409 + <Properties>
28.410 + <Property name="text" type="java.lang.String" value="Port"/>
28.411 + </Properties>
28.412 + </Component>
28.413 + <Component class="javax.swing.JTextField" name="vstupSMTPserver">
28.414 + <Properties>
28.415 + <Property name="text" type="java.lang.String" value="localhost"/>
28.416 + </Properties>
28.417 + </Component>
28.418 + <Component class="javax.swing.JSpinner" name="vstupSMTPport">
28.419 + <Properties>
28.420 + <Property name="value" type="java.lang.Object" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
28.421 + <Connection code="25" type="code"/>
28.422 + </Property>
28.423 + </Properties>
28.424 + </Component>
28.425 + <Container class="javax.swing.JScrollPane" name="napovedaSMTPscroll">
28.426 + <AuxValues>
28.427 + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
28.428 + </AuxValues>
28.429 +
28.430 + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
28.431 + <SubComponents>
28.432 + <Component class="javax.swing.JTextArea" name="napovedaSMTP">
28.433 + <Properties>
28.434 + <Property name="columns" type="int" value="20"/>
28.435 + <Property name="editable" type="boolean" value="false"/>
28.436 + <Property name="lineWrap" type="boolean" value="true"/>
28.437 + <Property name="rows" type="int" value="5"/>
28.438 + <Property name="text" type="java.lang.String" value="Tip: některé SMTP servery mají omezený seznam počítačů, ze kterých přijímají poštu"/>
28.439 + <Property name="wrapStyleWord" type="boolean" value="true"/>
28.440 + </Properties>
28.441 + </Component>
28.442 + </SubComponents>
28.443 + </Container>
28.444 + <Component class="javax.swing.JLabel" name="jLabel6">
28.445 + <Properties>
28.446 + <Property name="text" type="java.lang.String" value="Jméno"/>
28.447 + </Properties>
28.448 + </Component>
28.449 + <Component class="javax.swing.JTextField" name="vstupSMTPjmeno">
28.450 + </Component>
28.451 + <Component class="javax.swing.JPasswordField" name="vstupSMTPheslo">
28.452 + </Component>
28.453 + <Component class="javax.swing.JLabel" name="jLabel7">
28.454 + <Properties>
28.455 + <Property name="text" type="java.lang.String" value="Heslo"/>
28.456 + </Properties>
28.457 + </Component>
28.458 + <Component class="javax.swing.JSpinner" name="vstupSMTPlimitPrijemcu">
28.459 + <Properties>
28.460 + <Property name="value" type="java.lang.Object" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
28.461 + <Connection code="1000" type="code"/>
28.462 + </Property>
28.463 + </Properties>
28.464 + </Component>
28.465 + <Component class="javax.swing.JLabel" name="jLabel8">
28.466 + <Properties>
28.467 + <Property name="text" type="java.lang.String" value="Limit příjemců"/>
28.468 + </Properties>
28.469 + </Component>
28.470 + </SubComponents>
28.471 + </Container>
28.472 + <Container class="org.jdesktop.swingx.JXPanel" name="panelVychoziPrijemci">
28.473 +
28.474 + <Layout>
28.475 + <DimensionLayout dim="0">
28.476 + <Group type="103" groupAlignment="0" attributes="0">
28.477 + <Group type="102" alignment="1" attributes="0">
28.478 + <EmptySpace max="-2" attributes="0"/>
28.479 + <Group type="103" groupAlignment="1" attributes="0">
28.480 + <Component id="prijemciVychozi" alignment="0" pref="514" max="32767" attributes="0"/>
28.481 + <Component id="jLabel12" alignment="0" pref="514" max="32767" attributes="0"/>
28.482 + </Group>
28.483 + <EmptySpace max="-2" attributes="0"/>
28.484 + </Group>
28.485 + </Group>
28.486 + </DimensionLayout>
28.487 + <DimensionLayout dim="1">
28.488 + <Group type="103" groupAlignment="0" attributes="0">
28.489 + <Group type="102" alignment="0" attributes="0">
28.490 + <EmptySpace max="-2" attributes="0"/>
28.491 + <Component id="jLabel12" min="-2" max="-2" attributes="0"/>
28.492 + <EmptySpace type="unrelated" max="-2" attributes="0"/>
28.493 + <Component id="prijemciVychozi" pref="261" max="32767" attributes="0"/>
28.494 + <EmptySpace max="-2" attributes="0"/>
28.495 + </Group>
28.496 + </Group>
28.497 + </DimensionLayout>
28.498 + </Layout>
28.499 + <SubComponents>
28.500 + <Component class="cz.frantovo.superPostak.PanelPrijemcu" name="prijemciVychozi">
28.501 + </Component>
28.502 + <Component class="javax.swing.JLabel" name="jLabel12">
28.503 + <Properties>
28.504 + <Property name="text" type="java.lang.String" value="Těmto lidem přijde hromadný e-mail vždy (netýká se zkušebního rozeslání zprávy)."/>
28.505 + </Properties>
28.506 + </Component>
28.507 + </SubComponents>
28.508 + </Container>
28.509 + <Container class="org.jdesktop.swingx.JXPanel" name="panelZprava">
28.510 +
28.511 + <Layout>
28.512 + <DimensionLayout dim="0">
28.513 + <Group type="103" groupAlignment="0" attributes="0">
28.514 + <Group type="102" alignment="1" attributes="0">
28.515 + <EmptySpace max="-2" attributes="0"/>
28.516 + <Group type="103" groupAlignment="1" attributes="0">
28.517 + <Component id="jScrollPane1" alignment="0" pref="438" max="32767" attributes="0"/>
28.518 + <Group type="102" alignment="1" attributes="0">
28.519 + <Group type="103" groupAlignment="1" attributes="0">
28.520 + <Group type="102" attributes="0">
28.521 + <Group type="103" groupAlignment="0" attributes="0">
28.522 + <Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
28.523 + <Component id="jLabel1" alignment="0" min="-2" max="-2" attributes="0"/>
28.524 + </Group>
28.525 + <EmptySpace min="-2" pref="17" max="-2" attributes="0"/>
28.526 + </Group>
28.527 + <Group type="102" alignment="1" attributes="0">
28.528 + <Component id="odpovedetKomuOdkaz" min="-2" max="-2" attributes="0"/>
28.529 + <EmptySpace type="unrelated" max="-2" attributes="0"/>
28.530 + </Group>
28.531 + </Group>
28.532 + <Group type="103" groupAlignment="0" attributes="0">
28.533 + <Component id="vstupJmenoOdesilatele" alignment="0" pref="328" max="32767" attributes="0"/>
28.534 + <Component id="vstupAdresaOdesilatele" alignment="0" pref="328" max="32767" attributes="0"/>
28.535 + <Component id="vstupPredmet" alignment="0" pref="328" max="32767" attributes="0"/>
28.536 + </Group>
28.537 + </Group>
28.538 + <Group type="102" alignment="0" attributes="0">
28.539 + <Component id="jLabel15" min="-2" max="-2" attributes="0"/>
28.540 + <EmptySpace min="-2" pref="33" max="-2" attributes="0"/>
28.541 + <Component id="vstupFormatHTML" pref="81" max="32767" attributes="0"/>
28.542 + <EmptySpace min="-2" pref="247" max="-2" attributes="0"/>
28.543 + </Group>
28.544 + </Group>
28.545 + <EmptySpace max="-2" attributes="0"/>
28.546 + </Group>
28.547 + </Group>
28.548 + </DimensionLayout>
28.549 + <DimensionLayout dim="1">
28.550 + <Group type="103" groupAlignment="0" attributes="0">
28.551 + <Group type="102" alignment="0" attributes="0">
28.552 + <EmptySpace max="-2" attributes="0"/>
28.553 + <Group type="103" groupAlignment="3" attributes="0">
28.554 + <Component id="jLabel1" alignment="3" min="-2" max="-2" attributes="0"/>
28.555 + <Component id="vstupPredmet" alignment="3" min="-2" max="-2" attributes="0"/>
28.556 + </Group>
28.557 + <EmptySpace max="-2" attributes="0"/>
28.558 + <Group type="103" groupAlignment="3" attributes="0">
28.559 + <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
28.560 + <Component id="vstupJmenoOdesilatele" alignment="3" min="-2" max="-2" attributes="0"/>
28.561 + </Group>
28.562 + <EmptySpace max="-2" attributes="0"/>
28.563 + <Group type="103" groupAlignment="0" attributes="0">
28.564 + <Component id="vstupAdresaOdesilatele" min="-2" max="-2" attributes="0"/>
28.565 + <Component id="odpovedetKomuOdkaz" min="-2" max="-2" attributes="0"/>
28.566 + </Group>
28.567 + <EmptySpace max="-2" attributes="0"/>
28.568 + <Component id="jScrollPane1" pref="184" max="32767" attributes="0"/>
28.569 + <EmptySpace max="-2" attributes="0"/>
28.570 + <Group type="103" groupAlignment="3" attributes="0">
28.571 + <Component id="jLabel15" alignment="3" min="-2" max="-2" attributes="0"/>
28.572 + <Component id="vstupFormatHTML" alignment="3" min="-2" max="-2" attributes="0"/>
28.573 + </Group>
28.574 + <EmptySpace max="-2" attributes="0"/>
28.575 + </Group>
28.576 + </Group>
28.577 + </DimensionLayout>
28.578 + </Layout>
28.579 + <SubComponents>
28.580 + <Component class="javax.swing.JLabel" name="jLabel1">
28.581 + <Properties>
28.582 + <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
28.583 + <ComponentRef name="vstupPredmet"/>
28.584 + </Property>
28.585 + <Property name="text" type="java.lang.String" value="Předmět"/>
28.586 + </Properties>
28.587 + </Component>
28.588 + <Component class="javax.swing.JTextField" name="vstupPredmet">
28.589 + <Events>
28.590 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="vstupPredmetActionPerformed"/>
28.591 + </Events>
28.592 + </Component>
28.593 + <Component class="javax.swing.JLabel" name="jLabel2">
28.594 + <Properties>
28.595 + <Property name="text" type="java.lang.String" value="Jméno odesílatele"/>
28.596 + </Properties>
28.597 + </Component>
28.598 + <Component class="javax.swing.JTextField" name="vstupJmenoOdesilatele">
28.599 + </Component>
28.600 + <Component class="javax.swing.JTextField" name="vstupAdresaOdesilatele">
28.601 + </Component>
28.602 + <Container class="javax.swing.JScrollPane" name="jScrollPane1">
28.603 + <AuxValues>
28.604 + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/>
28.605 + </AuxValues>
28.606 +
28.607 + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
28.608 + <SubComponents>
28.609 + <Component class="javax.swing.JTextArea" name="vstupZprava">
28.610 + <Properties>
28.611 + <Property name="columns" type="int" value="20"/>
28.612 + <Property name="rows" type="int" value="5"/>
28.613 + </Properties>
28.614 + </Component>
28.615 + </SubComponents>
28.616 + </Container>
28.617 + <Component class="javax.swing.JLabel" name="jLabel15">
28.618 + <Properties>
28.619 + <Property name="text" type="java.lang.String" value="Formát zprávy"/>
28.620 + </Properties>
28.621 + </Component>
28.622 + <Component class="javax.swing.JCheckBox" name="vstupFormatHTML">
28.623 + <Properties>
28.624 + <Property name="mnemonic" type="int" value="104"/>
28.625 + <Property name="text" type="java.lang.String" value="HTML"/>
28.626 + <Property name="toolTipText" type="java.lang.String" value="Při nezaškrtnutí se odešle jako prostý text"/>
28.627 + </Properties>
28.628 + </Component>
28.629 + <Component class="org.jdesktop.swingx.JXHyperlink" name="odpovedetKomuOdkaz">
28.630 + <Properties>
28.631 + <Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
28.632 + <Color blue="33" green="33" id="windowText" palette="3" red="33" type="palette"/>
28.633 + </Property>
28.634 + <Property name="mnemonic" type="int" value="101"/>
28.635 + <Property name="text" type="java.lang.String" value="Adresa odesílatele"/>
28.636 + <Property name="toolTipText" type="java.lang.String" value="<html><p>Klikněte sem pro nastavení adresy,</p><p>na kterou mají chodit odpovědi</p></html>"/>
28.637 + <Property name="clickedColor" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
28.638 + <Color blue="33" green="33" id="windowText" palette="3" red="33" type="palette"/>
28.639 + </Property>
28.640 + <Property name="unclickedColor" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
28.641 + <Color blue="33" green="33" id="windowText" palette="3" red="33" type="palette"/>
28.642 + </Property>
28.643 + </Properties>
28.644 + <Events>
28.645 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="odpovedetKomuOdkazActionPerformed"/>
28.646 + </Events>
28.647 + </Component>
28.648 + </SubComponents>
28.649 + </Container>
28.650 + <Container class="javax.swing.JDialog" name="odpovedetKomuDialog">
28.651 + <Properties>
28.652 + <Property name="title" type="java.lang.String" value="Adresa pro odpovědi"/>
28.653 + <Property name="modal" type="boolean" value="true"/>
28.654 + </Properties>
28.655 +
28.656 + <Layout>
28.657 + <DimensionLayout dim="0">
28.658 + <Group type="103" groupAlignment="0" attributes="0">
28.659 + <Group type="102" attributes="0">
28.660 + <EmptySpace max="-2" attributes="0"/>
28.661 + <Group type="103" groupAlignment="0" attributes="0">
28.662 + <Group type="102" alignment="0" attributes="0">
28.663 + <Group type="103" groupAlignment="0" attributes="0">
28.664 + <Component id="jLabel19" alignment="0" min="-2" max="-2" attributes="0"/>
28.665 + <Component id="jLabel18" alignment="0" min="-2" max="-2" attributes="0"/>
28.666 + </Group>
28.667 + <EmptySpace max="-2" attributes="0"/>
28.668 + <Group type="103" groupAlignment="1" attributes="0">
28.669 + <Component id="odpovedetKomuAdresa" pref="332" max="32767" attributes="0"/>
28.670 + <Component id="odpovedetKomuJmeno" alignment="0" pref="332" max="32767" attributes="0"/>
28.671 + </Group>
28.672 + </Group>
28.673 + <Component id="jLabel17" alignment="0" pref="382" max="32767" attributes="0"/>
28.674 + <Component id="odpovedetKomuHotovo" alignment="1" min="-2" max="-2" attributes="0"/>
28.675 + </Group>
28.676 + <EmptySpace max="-2" attributes="0"/>
28.677 + </Group>
28.678 + </Group>
28.679 + </DimensionLayout>
28.680 + <DimensionLayout dim="1">
28.681 + <Group type="103" groupAlignment="0" attributes="0">
28.682 + <Group type="102" alignment="0" attributes="0">
28.683 + <EmptySpace max="-2" attributes="0"/>
28.684 + <Group type="103" groupAlignment="3" attributes="0">
28.685 + <Component id="jLabel18" alignment="3" min="-2" max="-2" attributes="0"/>
28.686 + <Component id="odpovedetKomuJmeno" alignment="3" min="-2" max="-2" attributes="0"/>
28.687 + </Group>
28.688 + <EmptySpace max="-2" attributes="0"/>
28.689 + <Group type="103" groupAlignment="1" attributes="0">
28.690 + <Component id="jLabel19" min="-2" max="-2" attributes="0"/>
28.691 + <Component id="odpovedetKomuAdresa" min="-2" max="-2" attributes="0"/>
28.692 + </Group>
28.693 + <EmptySpace max="-2" attributes="0"/>
28.694 + <Component id="jLabel17" min="-2" max="-2" attributes="0"/>
28.695 + <EmptySpace max="32767" attributes="0"/>
28.696 + <Component id="odpovedetKomuHotovo" min="-2" max="-2" attributes="0"/>
28.697 + <EmptySpace max="-2" attributes="0"/>
28.698 + </Group>
28.699 + </Group>
28.700 + </DimensionLayout>
28.701 + </Layout>
28.702 + <SubComponents>
28.703 + <Component class="javax.swing.JLabel" name="jLabel18">
28.704 + <Properties>
28.705 + <Property name="text" type="java.lang.String" value="Jméno"/>
28.706 + </Properties>
28.707 + </Component>
28.708 + <Component class="javax.swing.JLabel" name="jLabel19">
28.709 + <Properties>
28.710 + <Property name="text" type="java.lang.String" value="Adresa"/>
28.711 + </Properties>
28.712 + </Component>
28.713 + <Component class="javax.swing.JLabel" name="jLabel17">
28.714 + <Properties>
28.715 + <Property name="text" type="java.lang.String" value="<html>
<p>Pokud bude příjemce na hromadnou zprávu odpovídat,</p>
<p>odpověď přijde na tuto adresu.</p>
<p>Pokud tyto údaje nevyplníte, nebo zadáte chybný e-mail,</p>
<p>budou odpovědi chodit odesílateli.</p>
</html>"/>
28.716 + </Properties>
28.717 + </Component>
28.718 + <Component class="javax.swing.JTextField" name="odpovedetKomuJmeno">
28.719 + </Component>
28.720 + <Component class="javax.swing.JTextField" name="odpovedetKomuAdresa">
28.721 + </Component>
28.722 + <Component class="javax.swing.JButton" name="odpovedetKomuHotovo">
28.723 + <Properties>
28.724 + <Property name="text" type="java.lang.String" value="Hotovo"/>
28.725 + </Properties>
28.726 + <Events>
28.727 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="odpovedetKomuHotovoActionPerformed"/>
28.728 + </Events>
28.729 + </Component>
28.730 + </SubComponents>
28.731 + </Container>
28.732 + </NonVisualComponents>
28.733 + <Properties>
28.734 + <Property name="title" type="java.lang.String" value="SuperPošťák"/>
28.735 + </Properties>
28.736 + <SyntheticProperties>
28.737 + <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
28.738 + </SyntheticProperties>
28.739 + <Events>
28.740 + <EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosing"/>
28.741 + </Events>
28.742 + <AuxValues>
28.743 + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
28.744 + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
28.745 + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
28.746 + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
28.747 + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
28.748 + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
28.749 + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
28.750 + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
28.751 + </AuxValues>
28.752 +
28.753 + <Layout>
28.754 + <DimensionLayout dim="0">
28.755 + <Group type="103" groupAlignment="0" attributes="0">
28.756 + <Group type="102" alignment="0" attributes="0">
28.757 + <Component id="taskPanel" min="-2" pref="196" max="-2" attributes="0"/>
28.758 + <EmptySpace max="-2" attributes="0"/>
28.759 + <Component id="panel" pref="342" max="32767" attributes="0"/>
28.760 + </Group>
28.761 + <Component id="jXHeader1" alignment="1" pref="544" max="32767" attributes="0"/>
28.762 + </Group>
28.763 + </DimensionLayout>
28.764 + <DimensionLayout dim="1">
28.765 + <Group type="103" groupAlignment="0" attributes="0">
28.766 + <Group type="102" attributes="0">
28.767 + <Component id="jXHeader1" min="-2" max="-2" attributes="0"/>
28.768 + <EmptySpace max="-2" attributes="0"/>
28.769 + <Group type="103" groupAlignment="1" attributes="0">
28.770 + <Component id="taskPanel" pref="340" max="32767" attributes="0"/>
28.771 + <Component id="panel" alignment="0" pref="340" max="32767" attributes="0"/>
28.772 + </Group>
28.773 + </Group>
28.774 + </Group>
28.775 + </DimensionLayout>
28.776 + </Layout>
28.777 + <SubComponents>
28.778 + <Component class="org.jdesktop.swingx.JXHeader" name="jXHeader1">
28.779 + <Properties>
28.780 + <Property name="description" type="java.lang.String" value="Program pro posílání hromadných zpráv elektronickou poštou.
Nezneužívejte pro rozesílání spamu."/>
28.781 + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
28.782 + <Image iconType="3" name="/cz/frantovo/superPostak/obrazky/xfmail.png"/>
28.783 + </Property>
28.784 + <Property name="title" type="java.lang.String" value="SuperPošťák"/>
28.785 + </Properties>
28.786 + </Component>
28.787 + <Container class="org.jdesktop.swingx.JXTaskPaneContainer" name="taskPanel">
28.788 + <Properties>
28.789 + <Property name="background" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
28.790 + <Color blue="ee" green="ee" id="Button.background" palette="3" red="ee" type="palette"/>
28.791 + </Property>
28.792 + </Properties>
28.793 + <SubComponents>
28.794 + <Container class="org.jdesktop.swingx.JXTaskPane" name="jXTaskPane1">
28.795 + <Properties>
28.796 + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
28.797 + <Image iconType="3" name="/cz/frantovo/superPostak/obrazky/mail_generic.png"/>
28.798 + </Property>
28.799 + <Property name="title" type="java.lang.String" value="Hromadná zpráva"/>
28.800 + </Properties>
28.801 + <SubComponents>
28.802 + <Component class="org.jdesktop.swingx.JXHyperlink" name="lnText">
28.803 + <Properties>
28.804 + <Property name="mnemonic" type="int" value="122"/>
28.805 + <Property name="text" type="java.lang.String" value="Text zprávy"/>
28.806 + <Property name="actionCommand" type="java.lang.String" value="Zpráva"/>
28.807 + </Properties>
28.808 + <Events>
28.809 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lnTextActionPerformed"/>
28.810 + </Events>
28.811 + </Component>
28.812 + <Component class="org.jdesktop.swingx.JXHyperlink" name="lnPrijemci">
28.813 + <Properties>
28.814 + <Property name="mnemonic" type="int" value="112"/>
28.815 + <Property name="text" type="java.lang.String" value="Příjemci"/>
28.816 + </Properties>
28.817 + <Events>
28.818 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lnPrijemciActionPerformed"/>
28.819 + </Events>
28.820 + </Component>
28.821 + <Component class="org.jdesktop.swingx.JXHyperlink" name="lnOdeslat">
28.822 + <Properties>
28.823 + <Property name="mnemonic" type="int" value="111"/>
28.824 + <Property name="text" type="java.lang.String" value="Odeslat"/>
28.825 + </Properties>
28.826 + <Events>
28.827 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lnOdeslatActionPerformed"/>
28.828 + </Events>
28.829 + </Component>
28.830 + </SubComponents>
28.831 + </Container>
28.832 + <Container class="org.jdesktop.swingx.JXTaskPane" name="jXTaskPane2">
28.833 + <Properties>
28.834 + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
28.835 + <Image iconType="3" name="/cz/frantovo/superPostak/obrazky/gear.png"/>
28.836 + </Property>
28.837 + <Property name="title" type="java.lang.String" value="Nastavení"/>
28.838 + </Properties>
28.839 + <SubComponents>
28.840 + <Component class="org.jdesktop.swingx.JXHyperlink" name="lnServer">
28.841 + <Properties>
28.842 + <Property name="mnemonic" type="int" value="115"/>
28.843 + <Property name="text" type="java.lang.String" value="Poštovní server"/>
28.844 + </Properties>
28.845 + <Events>
28.846 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lnServerActionPerformed"/>
28.847 + </Events>
28.848 + </Component>
28.849 + <Component class="org.jdesktop.swingx.JXHyperlink" name="lnDatabaze">
28.850 + <Properties>
28.851 + <Property name="mnemonic" type="int" value="100"/>
28.852 + <Property name="text" type="java.lang.String" value="Databáze"/>
28.853 + </Properties>
28.854 + <Events>
28.855 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lnDatabazeActionPerformed"/>
28.856 + </Events>
28.857 + </Component>
28.858 + <Component class="org.jdesktop.swingx.JXHyperlink" name="lnVychoziPrijemci">
28.859 + <Properties>
28.860 + <Property name="mnemonic" type="int" value="118"/>
28.861 + <Property name="text" type="java.lang.String" value="Výchozí příjemci"/>
28.862 + </Properties>
28.863 + <Events>
28.864 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="lnVychoziPrijemciActionPerformed"/>
28.865 + </Events>
28.866 + </Component>
28.867 + </SubComponents>
28.868 + </Container>
28.869 + </SubComponents>
28.870 + </Container>
28.871 + <Container class="org.jdesktop.swingx.JXPanel" name="panel">
28.872 +
28.873 + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignCardLayout"/>
28.874 + </Container>
28.875 + </SubComponents>
28.876 +</Form>
29.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
29.2 +++ b/java/SuperPostak/src/cz/frantovo/superPostak/SuperPostak.java Sun Nov 23 22:19:20 2008 +0100
29.3 @@ -0,0 +1,1241 @@
29.4 +package cz.frantovo.superPostak;
29.5 +
29.6 +import cz.frantovo.postak.HromadnaZprava;
29.7 +import cz.frantovo.postak.InternetAddressKomu;
29.8 +import cz.frantovo.postak.Nastaveni;
29.9 +import cz.frantovo.postak.Postak;
29.10 +import java.awt.CardLayout;
29.11 +import java.awt.Component;
29.12 +import java.awt.Cursor;
29.13 +import java.awt.Dialog.ModalityType;
29.14 +import java.awt.KeyboardFocusManager;
29.15 +import java.beans.XMLDecoder;
29.16 +import java.beans.XMLEncoder;
29.17 +import java.io.BufferedInputStream;
29.18 +import java.io.BufferedOutputStream;
29.19 +import java.io.File;
29.20 +import java.io.FileInputStream;
29.21 +import java.io.FileNotFoundException;
29.22 +import java.io.FileOutputStream;
29.23 +import java.io.IOException;
29.24 +import java.io.UnsupportedEncodingException;
29.25 +import java.sql.SQLException;
29.26 +import java.util.ArrayList;
29.27 +import java.util.Collection;
29.28 +import java.util.logging.Level;
29.29 +import java.util.logging.Logger;
29.30 +import java.util.zip.GZIPInputStream;
29.31 +import java.util.zip.GZIPOutputStream;
29.32 +import javax.mail.MessagingException;
29.33 +import javax.mail.internet.InternetAddress;
29.34 +import javax.swing.JComponent;
29.35 +import javax.swing.JDialog;
29.36 +import javax.swing.JOptionPane;
29.37 +import javax.swing.JTextArea;
29.38 +import javax.swing.LookAndFeel;
29.39 +import javax.swing.UIManager;
29.40 +import javax.swing.UnsupportedLookAndFeelException;
29.41 +import org.jdesktop.swingx.JXErrorPane;
29.42 +import org.jdesktop.swingx.JXTaskPaneContainer;
29.43 +import org.jdesktop.swingx.error.ErrorInfo;
29.44 +import org.jvnet.substance.skin.SubstanceBusinessBlueSteelLookAndFeel;
29.45 +
29.46 +/**
29.47 + *
29.48 + * @author fiki
29.49 + */
29.50 +public class SuperPostak extends javax.swing.JFrame {
29.51 +
29.52 + /** Soubor, kde je uložené nastavení */
29.53 + private static final String NASTAVENI_SOUBOR = "Nastaveni.xml.gz";
29.54 + private static final String CERTIFIKATY_SOUBOR = "DuveryhodneCertifikaty.keystore";
29.55 + private static final String NASTAVENI_SLOZKA = ".SuperPostak";
29.56 + private static final String DOMACI_ADRESAR = System.getProperty("user.home");
29.57 + private static Logger log = Logger.getLogger(SuperPostak.class.getName());
29.58 + private Nastaveni nastaveni = new Nastaveni();
29.59 + private Postak postak = new Postak(nastaveni);
29.60 +
29.61 + /**
29.62 + * Creates new form SuperPostak
29.63 + * @param ladit předvyplní testovací hodnoty - zprávu
29.64 + * @param exit při zavření okna ukončí program
29.65 + */
29.66 + public SuperPostak(boolean ladit, boolean exit) {
29.67 + log.log(Level.WARNING, "Program byl spuštěn.");
29.68 + nactiOvladaceJDBC();
29.69 + vytvorSlozkuProgramu();
29.70 + initComponents();
29.71 +
29.72 + nactiNastaveni();
29.73 + ulozNastaveni();
29.74 + nastaveni.setCestaKCertifikatum(getCestaKCertifikatum());
29.75 +
29.76 + inicializujCardLayout();
29.77 + setLocationRelativeTo(null);
29.78 +
29.79 + /** Vyřešíme problém TAB vs. Focus */
29.80 + vyresitTabFocusProblem(vstupSQL);
29.81 + vyresitTabFocusProblem(vstupZprava);
29.82 +
29.83 + /** Ladicí hodnoty */
29.84 + if (ladit) {
29.85 + nastavLadiciHodnoty();
29.86 + }
29.87 +
29.88 + if (exit) {
29.89 + setDefaultCloseOperation(EXIT_ON_CLOSE);
29.90 + }
29.91 +
29.92 +
29.93 + }
29.94 +
29.95 + private void inicializujCardLayout() {
29.96 + panelDatabaze.setName("panelDatabaze");
29.97 + panelOdeslat.setName("panelOdeslat");
29.98 + panelPrijemci.setName("panelPrijemci");
29.99 + panelServer.setName("panelServer");
29.100 + panelVychoziPrijemci.setName("panelVychoziPrijemci");
29.101 + panelZprava.setName("panelZprava");
29.102 +
29.103 + panel.add(panelDatabaze, panelDatabaze.getName());
29.104 + panel.add(panelOdeslat, panelOdeslat.getName());
29.105 + panel.add(panelPrijemci, panelPrijemci.getName());
29.106 + panel.add(panelServer, panelServer.getName());
29.107 + panel.add(panelVychoziPrijemci, panelVychoziPrijemci.getName());
29.108 + panel.add(panelZprava, panelZprava.getName());
29.109 +
29.110 + setPanel(panelZprava);
29.111 + pack();
29.112 + }
29.113 +
29.114 + /**
29.115 + * Vyplní formuláře (odesílatel, předmět, zpráva, příjemci...) výchozími hodnotami,
29.116 + * aby se dal program testovat jedním kliknutím.
29.117 + */
29.118 + private void nastavLadiciHodnoty() {
29.119 + try {
29.120 + vstupAdresaOdesilatele.setText("SuperPostak@frantovo.cz");
29.121 + vstupJmenoOdesilatele.setText("SuperPošťák");
29.122 + vstupPredmet.setText("Zkušební zpráva od SuperPošťáka");
29.123 + vstupZprava.setText("Toto je obyčejná zkušební zpráva v češtině :-)");
29.124 + ArrayList<InternetAddressKomu> adresy = new ArrayList<InternetAddressKomu>();
29.125 + adresy.add(new InternetAddressKomu("SuperPostak@frantovo.cz", "SuperPošťák"));
29.126 + prijemciZkusebni.setAdresy(adresy);
29.127 + } catch (UnsupportedEncodingException e) {
29.128 + log.log(Level.SEVERE, null, e);
29.129 + }
29.130 + }
29.131 +
29.132 + /**
29.133 + * Pokusíme se načíst ovladače pro různé DB a výsledek zapíšeme do logu.
29.134 + * Další ovladače je možné přidat pomocí manifestu v příslušných knihovnách.
29.135 + * viz http://www.sweb.cz/pichlik/archive/2006_08_06_archive.html#115502885631518161
29.136 + */
29.137 + private void nactiOvladaceJDBC() {
29.138 + nactiOvladacJDBC("org.postgresql.Driver", "PostgreSQL");
29.139 + nactiOvladacJDBC("com.mysql.jdbc.Driver", "MySQL");
29.140 + nactiOvladacJDBC("net.sourceforge.jtds.jdbc.Driver", "jTDS Sybase a MS SQL");
29.141 + nactiOvladacJDBC("com.sybase.jdbc2.jdbc.SybDriver", "Sybase.com");
29.142 + }
29.143 +
29.144 + /**
29.145 + * @param trida ovladač databáze, který se má načíst
29.146 + * @param jmeno název databáze
29.147 + */
29.148 + private void nactiOvladacJDBC(String trida, String jmeno) {
29.149 + try {
29.150 + Class.forName(trida);
29.151 + log.log(Level.INFO, "JDBC ovladač pro " + jmeno + " byl úspěšně načten.");
29.152 + } catch (ClassNotFoundException e) {
29.153 + log.log(Level.INFO, "JDBC ovladač pro " + jmeno + " se nepodařilo načíst.");
29.154 + }
29.155 + }
29.156 +
29.157 + /** Vrací plnou cestu k souboru s nastavením */
29.158 + protected static String getCestaKCertifikatum() {
29.159 + return getCestaKeSlozceProgramu() + CERTIFIKATY_SOUBOR;
29.160 + }
29.161 +
29.162 + /** Vrací plnou cestu k souboru s nastavením */
29.163 + protected static String getCestaKNastaveni() {
29.164 + return getCestaKeSlozceProgramu() + NASTAVENI_SOUBOR;
29.165 + }
29.166 +
29.167 + /** Vrací plnou cestu ke složce programu (nastavení, certifikáty a logy) */
29.168 + protected static String getCestaKeSlozceProgramu() {
29.169 + return DOMACI_ADRESAR + File.separator + NASTAVENI_SLOZKA + File.separator;
29.170 + }
29.171 +
29.172 + /** Načte nastavení ze souboru */
29.173 + private void nactiNastaveni() {
29.174 + try {
29.175 + XMLDecoder d = new XMLDecoder(new BufferedInputStream(new GZIPInputStream(new FileInputStream(getCestaKNastaveni()))));
29.176 + Object xmlObjekt = d.readObject();
29.177 + d.close();
29.178 +
29.179 + if (xmlObjekt instanceof Nastaveni) {
29.180 + nastaveni = (Nastaveni) xmlObjekt;
29.181 + } else {
29.182 + nastaveni = new Nastaveni();
29.183 + log.log(Level.SEVERE, "Nepodařilo se načíst nastavení: není instancí");
29.184 + }
29.185 +
29.186 + nactiNastaveniGUI();
29.187 +
29.188 + log.log(Level.INFO, "Nastavení bylo načteno.");
29.189 + } catch (FileNotFoundException ex) {
29.190 + log.log(Level.SEVERE, "Nepodařilo se načíst nastavení: soubor nenalezen", ex);
29.191 + } catch (IOException ex) {
29.192 + log.log(Level.SEVERE, "Nastavení se nepodařilo načíst: I/O.", ex);
29.193 + }
29.194 + }
29.195 +
29.196 + /** Vytvoří (pokud neexistuje) v domovském adresáři složku, kam se ukládá nastavení a případně logy */
29.197 + private static boolean vytvorSlozkuProgramu() {
29.198 + if (new File(getCestaKeSlozceProgramu()).mkdirs()) {
29.199 + log.log(Level.INFO, "Složka pro nastavení programu byla vytvořena: " + getCestaKeSlozceProgramu());
29.200 + return true;
29.201 + } else {
29.202 + return false;
29.203 + }
29.204 + }
29.205 +
29.206 + /** Uloží nastavení do souboru */
29.207 + private void ulozNastaveni() {
29.208 + try {
29.209 + ulozNastaveniGUI();
29.210 +
29.211 + vytvorSlozkuProgramu();
29.212 +
29.213 + XMLEncoder e = new XMLEncoder(new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream(getCestaKNastaveni()))));
29.214 + e.writeObject(nastaveni);
29.215 + e.close();
29.216 + log.log(Level.INFO, "Nastavení bylo uloženo.");
29.217 + } catch (FileNotFoundException ex) {
29.218 + log.log(Level.SEVERE, "Nastavení se nepodařilo uložit: soubor nenalezen.", ex);
29.219 + } catch (IOException ex) {
29.220 + log.log(Level.SEVERE, "Nastavení se nepodařilo uložit: I/O.", ex);
29.221 + }
29.222 + }
29.223 +
29.224 + /** Posbírá zadané hodnoty z GUI a uloží je do objektu nastaveni */
29.225 + private void ulozNastaveniGUI() {
29.226 + nastaveni.setDatabaze(vstupDatabaze.getText());
29.227 + nastaveni.setDbHeslo(vstupDBheslo.getPassword());
29.228 + nastaveni.setDbJmeno(vstupDBjmeno.getText());
29.229 + nastaveni.setLimitZprav((Integer) vstupSMTPlimitPrijemcu.getValue());
29.230 + nastaveni.setPostovniHeslo(vstupSMTPheslo.getPassword());
29.231 + nastaveni.setPostovniJmeno(vstupSMTPjmeno.getText());
29.232 + nastaveni.setPostovniPort((Integer) vstupSMTPport.getValue());
29.233 + nastaveni.setPostovniServer(vstupSMTPserver.getText());
29.234 + nastaveni.setVychoziPrijemci(prijemciVychozi.getAdresy());
29.235 + }
29.236 +
29.237 + /** Aktualizuje GUI formuláře hodnotami z objektu nastaveni */
29.238 + private void nactiNastaveniGUI() {
29.239 + vstupDatabaze.setText(nastaveni.getDatabaze());
29.240 + if (nastaveni.getDbHeslo() != null) {
29.241 + vstupDBheslo.setText(String.valueOf(nastaveni.getDbHeslo()));
29.242 + }
29.243 + vstupDBjmeno.setText(nastaveni.getDbJmeno());
29.244 + vstupSMTPlimitPrijemcu.setValue(nastaveni.getLimitZprav());
29.245 + if (nastaveni.getPostovniHeslo() != null) {
29.246 + vstupSMTPheslo.setText(String.valueOf(nastaveni.getPostovniHeslo()));
29.247 + }
29.248 + vstupSMTPjmeno.setText(nastaveni.getPostovniJmeno());
29.249 + vstupSMTPport.setValue(nastaveni.getPostovniPort());
29.250 + vstupSMTPserver.setText(nastaveni.getPostovniServer());
29.251 + prijemciVychozi.setAdresy(nastaveni.getVychoziPrijemci());
29.252 + }
29.253 +
29.254 + protected static void zobrazChybovyDialog(Component vlastnik, String strucnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
29.255 + zobrazChybovyDialog(vlastnik, "Chyba", strucnaZprava, null, vyjimka, zavaznost, logovat);
29.256 + }
29.257 +
29.258 + protected static void zobrazInformacniDialog(Component vlastnik, String nadpis, String text, boolean loguj) {
29.259 + JOptionPane.showMessageDialog(vlastnik, text, nadpis, JOptionPane.INFORMATION_MESSAGE);
29.260 + if (loguj) {
29.261 + log.log(Level.INFO, nadpis + ": " + text);
29.262 + }
29.263 + }
29.264 +
29.265 + protected static void zobrazChybovyDialog(Component vlastnik, String nadpis, String strucnaZprava, String podrobnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
29.266 + if (logovat) {
29.267 + log.log(zavaznost, strucnaZprava, vyjimka);
29.268 + }
29.269 +
29.270 + JXErrorPane chybovyPanel = new JXErrorPane();
29.271 + ErrorInfo chybovaInformace = new ErrorInfo(nadpis, strucnaZprava, podrobnaZprava, null, vyjimka, zavaznost, null);
29.272 + chybovyPanel.setErrorInfo(chybovaInformace);
29.273 + JDialog dialog = JXErrorPane.createDialog(vlastnik, chybovyPanel);
29.274 + dialog.setVisible(true);
29.275 + }
29.276 +
29.277 + private void zobrazChybovyDialog(String strucnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
29.278 + zobrazChybovyDialog(this, strucnaZprava, vyjimka, zavaznost, logovat);
29.279 + }
29.280 +
29.281 + private void zobrazInformacniDialog(String nadpis, String text, boolean loguj) {
29.282 + zobrazInformacniDialog(this, nadpis, text, loguj);
29.283 + }
29.284 +
29.285 + private void zobrazChybovyDialog(String nadpis, String strucnaZprava, String podrobnaZprava, Throwable vyjimka, Level zavaznost, boolean logovat) {
29.286 + zobrazChybovyDialog(this, nadpis, strucnaZprava, podrobnaZprava, vyjimka, zavaznost, logovat);
29.287 + }
29.288 +
29.289 + /** This method is called from within the constructor to
29.290 + * initialize the form.
29.291 + * WARNING: Do NOT modify this code. The content of this method is
29.292 + * always regenerated by the Form Editor.
29.293 + */
29.294 + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
29.295 + private void initComponents() {
29.296 +
29.297 + panelDatabaze = new org.jdesktop.swingx.JXPanel();
29.298 + jLabel9 = new javax.swing.JLabel();
29.299 + vstupDatabaze = new javax.swing.JTextField();
29.300 + jLabel10 = new javax.swing.JLabel();
29.301 + vstupDBjmeno = new javax.swing.JTextField();
29.302 + vstupDBheslo = new javax.swing.JPasswordField();
29.303 + jLabel11 = new javax.swing.JLabel();
29.304 + vyzkousetPripojeniTlacitko = new javax.swing.JButton();
29.305 + vystupDBzprava = new javax.swing.JLabel();
29.306 + panelOdeslat = new org.jdesktop.swingx.JXPanel();
29.307 + jPanel1 = new javax.swing.JPanel();
29.308 + rozeslatZkusebniTlacitko = new javax.swing.JButton();
29.309 + rozeslatHromadnouZpravuTlacitko = new javax.swing.JButton();
29.310 + zobrazitVsechnyPrijemceTlacitko = new javax.swing.JButton();
29.311 + prijemciZkusebni = new cz.frantovo.superPostak.PanelPrijemcu();
29.312 + jSeparator2 = new javax.swing.JSeparator();
29.313 + jLabel14 = new javax.swing.JLabel();
29.314 + panelPrijemci = new org.jdesktop.swingx.JXPanel();
29.315 + jLabel13 = new javax.swing.JLabel();
29.316 + jScrollPane3 = new javax.swing.JScrollPane();
29.317 + vstupSQL = new javax.swing.JTextArea();
29.318 + vyzkousetSQLTlacitko = new javax.swing.JButton();
29.319 + vystupSQLZprava = new javax.swing.JLabel();
29.320 + prijemciDodatecni = new cz.frantovo.superPostak.PanelPrijemcu();
29.321 + jSeparator1 = new javax.swing.JSeparator();
29.322 + jLabel16 = new javax.swing.JLabel();
29.323 + zobrazitSQLPrijemceTlacitko = new javax.swing.JButton();
29.324 + panelServer = new org.jdesktop.swingx.JXPanel();
29.325 + jLabel4 = new javax.swing.JLabel();
29.326 + jLabel5 = new javax.swing.JLabel();
29.327 + vstupSMTPserver = new javax.swing.JTextField();
29.328 + vstupSMTPport = new javax.swing.JSpinner();
29.329 + napovedaSMTPscroll = new javax.swing.JScrollPane();
29.330 + napovedaSMTP = new javax.swing.JTextArea();
29.331 + jLabel6 = new javax.swing.JLabel();
29.332 + vstupSMTPjmeno = new javax.swing.JTextField();
29.333 + vstupSMTPheslo = new javax.swing.JPasswordField();
29.334 + jLabel7 = new javax.swing.JLabel();
29.335 + vstupSMTPlimitPrijemcu = new javax.swing.JSpinner();
29.336 + jLabel8 = new javax.swing.JLabel();
29.337 + panelVychoziPrijemci = new org.jdesktop.swingx.JXPanel();
29.338 + prijemciVychozi = new cz.frantovo.superPostak.PanelPrijemcu();
29.339 + jLabel12 = new javax.swing.JLabel();
29.340 + panelZprava = new org.jdesktop.swingx.JXPanel();
29.341 + jLabel1 = new javax.swing.JLabel();
29.342 + vstupPredmet = new javax.swing.JTextField();
29.343 + jLabel2 = new javax.swing.JLabel();
29.344 + vstupJmenoOdesilatele = new javax.swing.JTextField();
29.345 + vstupAdresaOdesilatele = new javax.swing.JTextField();
29.346 + jScrollPane1 = new javax.swing.JScrollPane();
29.347 + vstupZprava = new javax.swing.JTextArea();
29.348 + jLabel15 = new javax.swing.JLabel();
29.349 + vstupFormatHTML = new javax.swing.JCheckBox();
29.350 + odpovedetKomuOdkaz = new org.jdesktop.swingx.JXHyperlink();
29.351 + odpovedetKomuDialog = new javax.swing.JDialog();
29.352 + jLabel18 = new javax.swing.JLabel();
29.353 + jLabel19 = new javax.swing.JLabel();
29.354 + jLabel17 = new javax.swing.JLabel();
29.355 + odpovedetKomuJmeno = new javax.swing.JTextField();
29.356 + odpovedetKomuAdresa = new javax.swing.JTextField();
29.357 + odpovedetKomuHotovo = new javax.swing.JButton();
29.358 + jXHeader1 = new org.jdesktop.swingx.JXHeader();
29.359 + taskPanel = new org.jdesktop.swingx.JXTaskPaneContainer();
29.360 + jXTaskPane1 = new org.jdesktop.swingx.JXTaskPane();
29.361 + lnText = new org.jdesktop.swingx.JXHyperlink();
29.362 + lnPrijemci = new org.jdesktop.swingx.JXHyperlink();
29.363 + lnOdeslat = new org.jdesktop.swingx.JXHyperlink();
29.364 + jXTaskPane2 = new org.jdesktop.swingx.JXTaskPane();
29.365 + lnServer = new org.jdesktop.swingx.JXHyperlink();
29.366 + lnDatabaze = new org.jdesktop.swingx.JXHyperlink();
29.367 + lnVychoziPrijemci = new org.jdesktop.swingx.JXHyperlink();
29.368 + panel = new org.jdesktop.swingx.JXPanel();
29.369 +
29.370 + jLabel9.setText("Databáze");
29.371 +
29.372 + jLabel10.setText("Jméno");
29.373 +
29.374 + jLabel11.setText("Heslo");
29.375 +
29.376 + vyzkousetPripojeniTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/fork.png"))); // NOI18N
29.377 + vyzkousetPripojeniTlacitko.setMnemonic('y');
29.378 + vyzkousetPripojeniTlacitko.setText("Vyzkoušet spojení");
29.379 + vyzkousetPripojeniTlacitko.addActionListener(new java.awt.event.ActionListener() {
29.380 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.381 + vyzkousetPripojeniTlacitkoActionPerformed(evt);
29.382 + }
29.383 + });
29.384 +
29.385 + vystupDBzprava.setText(" ");
29.386 +
29.387 + javax.swing.GroupLayout panelDatabazeLayout = new javax.swing.GroupLayout(panelDatabaze);
29.388 + panelDatabaze.setLayout(panelDatabazeLayout);
29.389 + panelDatabazeLayout.setHorizontalGroup(
29.390 + panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.391 + .addGroup(panelDatabazeLayout.createSequentialGroup()
29.392 + .addContainerGap()
29.393 + .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.394 + .addGroup(panelDatabazeLayout.createSequentialGroup()
29.395 + .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.396 + .addComponent(jLabel9)
29.397 + .addComponent(jLabel10)
29.398 + .addComponent(jLabel11))
29.399 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.400 + .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.401 + .addComponent(vstupDatabaze, javax.swing.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE)
29.402 + .addComponent(vstupDBjmeno, javax.swing.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE)
29.403 + .addGroup(panelDatabazeLayout.createSequentialGroup()
29.404 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
29.405 + .addComponent(vstupDBheslo, javax.swing.GroupLayout.DEFAULT_SIZE, 257, Short.MAX_VALUE))))
29.406 + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelDatabazeLayout.createSequentialGroup()
29.407 + .addComponent(vystupDBzprava, javax.swing.GroupLayout.DEFAULT_SIZE, 155, Short.MAX_VALUE)
29.408 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.409 + .addComponent(vyzkousetPripojeniTlacitko)))
29.410 + .addContainerGap())
29.411 + );
29.412 + panelDatabazeLayout.setVerticalGroup(
29.413 + panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.414 + .addGroup(panelDatabazeLayout.createSequentialGroup()
29.415 + .addContainerGap()
29.416 + .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.417 + .addComponent(jLabel9)
29.418 + .addComponent(vstupDatabaze, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
29.419 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.420 + .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.421 + .addComponent(jLabel10)
29.422 + .addComponent(vstupDBjmeno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
29.423 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.424 + .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.425 + .addComponent(jLabel11)
29.426 + .addComponent(vstupDBheslo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
29.427 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
29.428 + .addGroup(panelDatabazeLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.429 + .addComponent(vyzkousetPripojeniTlacitko)
29.430 + .addComponent(vystupDBzprava))
29.431 + .addContainerGap(183, Short.MAX_VALUE))
29.432 + );
29.433 +
29.434 + rozeslatZkusebniTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/apply.png"))); // NOI18N
29.435 + rozeslatZkusebniTlacitko.setMnemonic('u');
29.436 + rozeslatZkusebniTlacitko.setText("Rozeslat zkušební");
29.437 + rozeslatZkusebniTlacitko.addActionListener(new java.awt.event.ActionListener() {
29.438 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.439 + rozeslatZkusebniTlacitkoActionPerformed(evt);
29.440 + }
29.441 + });
29.442 +
29.443 + rozeslatHromadnouZpravuTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/adept_commit.png"))); // NOI18N
29.444 + rozeslatHromadnouZpravuTlacitko.setMnemonic('h');
29.445 + rozeslatHromadnouZpravuTlacitko.setText("Rozeslat hromadnou zprávu");
29.446 + rozeslatHromadnouZpravuTlacitko.addActionListener(new java.awt.event.ActionListener() {
29.447 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.448 + rozeslatHromadnouZpravuTlacitkoActionPerformed(evt);
29.449 + }
29.450 + });
29.451 +
29.452 + zobrazitVsechnyPrijemceTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/zobrazit_adresy.png"))); // NOI18N
29.453 + zobrazitVsechnyPrijemceTlacitko.setToolTipText("<html>\nZobrazí seznam všech příjemcům, kterým bude odeslána zpráva.<br/>\n(Při velkých počtech záznamů může být tato operace náročná.)\n</html>");
29.454 + zobrazitVsechnyPrijemceTlacitko.addActionListener(new java.awt.event.ActionListener() {
29.455 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.456 + zobrazitVsechnyPrijemceTlacitkoActionPerformed(evt);
29.457 + }
29.458 + });
29.459 +
29.460 + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
29.461 + jPanel1.setLayout(jPanel1Layout);
29.462 + jPanel1Layout.setHorizontalGroup(
29.463 + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.464 + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
29.465 + .addContainerGap(106, Short.MAX_VALUE)
29.466 + .addComponent(rozeslatZkusebniTlacitko)
29.467 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.468 + .addComponent(rozeslatHromadnouZpravuTlacitko)
29.469 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.470 + .addComponent(zobrazitVsechnyPrijemceTlacitko)
29.471 + .addContainerGap())
29.472 + );
29.473 + jPanel1Layout.setVerticalGroup(
29.474 + jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.475 + .addGroup(jPanel1Layout.createSequentialGroup()
29.476 + .addContainerGap()
29.477 + .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.478 + .addComponent(rozeslatHromadnouZpravuTlacitko)
29.479 + .addComponent(zobrazitVsechnyPrijemceTlacitko)
29.480 + .addComponent(rozeslatZkusebniTlacitko))
29.481 + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
29.482 + );
29.483 +
29.484 + jLabel14.setText("Zkušební příjemci");
29.485 +
29.486 + javax.swing.GroupLayout panelOdeslatLayout = new javax.swing.GroupLayout(panelOdeslat);
29.487 + panelOdeslat.setLayout(panelOdeslatLayout);
29.488 + panelOdeslatLayout.setHorizontalGroup(
29.489 + panelOdeslatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.490 + .addGroup(panelOdeslatLayout.createSequentialGroup()
29.491 + .addContainerGap()
29.492 + .addGroup(panelOdeslatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.493 + .addComponent(prijemciZkusebni, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE)
29.494 + .addComponent(jSeparator2, javax.swing.GroupLayout.DEFAULT_SIZE, 535, Short.MAX_VALUE)
29.495 + .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
29.496 + .addComponent(jLabel14))
29.497 + .addContainerGap())
29.498 + );
29.499 + panelOdeslatLayout.setVerticalGroup(
29.500 + panelOdeslatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.501 + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelOdeslatLayout.createSequentialGroup()
29.502 + .addContainerGap()
29.503 + .addComponent(jLabel14)
29.504 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.505 + .addComponent(prijemciZkusebni, javax.swing.GroupLayout.DEFAULT_SIZE, 153, Short.MAX_VALUE)
29.506 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
29.507 + .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
29.508 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.509 + .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
29.510 + .addContainerGap())
29.511 + );
29.512 +
29.513 + jLabel13.setText("SQL dotaz");
29.514 +
29.515 + vstupSQL.setColumns(20);
29.516 + vstupSQL.setRows(5);
29.517 + jScrollPane3.setViewportView(vstupSQL);
29.518 +
29.519 + vyzkousetSQLTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/fork.png"))); // NOI18N
29.520 + vyzkousetSQLTlacitko.setMnemonic('y');
29.521 + vyzkousetSQLTlacitko.setText("Vyzkoušet");
29.522 + vyzkousetSQLTlacitko.addActionListener(new java.awt.event.ActionListener() {
29.523 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.524 + vyzkousetSQLTlacitkoActionPerformed(evt);
29.525 + }
29.526 + });
29.527 +
29.528 + vystupSQLZprava.setText(" ");
29.529 +
29.530 + prijemciDodatecni.setToolTipText("Zde můžete dopnit další přijemce.");
29.531 +
29.532 + jLabel16.setText("Dodateční příjemci:");
29.533 +
29.534 + zobrazitSQLPrijemceTlacitko.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/zobrazit_adresy.png"))); // NOI18N
29.535 + zobrazitSQLPrijemceTlacitko.setToolTipText("<html>\nZobrazí seznam adres načtených z databáze.<br/>\n(Při velkých počtech záznamů může být tato operace náročná.)\n</html>");
29.536 + zobrazitSQLPrijemceTlacitko.addActionListener(new java.awt.event.ActionListener() {
29.537 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.538 + zobrazitSQLPrijemceTlacitkoActionPerformed(evt);
29.539 + }
29.540 + });
29.541 +
29.542 + javax.swing.GroupLayout panelPrijemciLayout = new javax.swing.GroupLayout(panelPrijemci);
29.543 + panelPrijemci.setLayout(panelPrijemciLayout);
29.544 + panelPrijemciLayout.setHorizontalGroup(
29.545 + panelPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.546 + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelPrijemciLayout.createSequentialGroup()
29.547 + .addContainerGap()
29.548 + .addGroup(panelPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
29.549 + .addComponent(prijemciDodatecni, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE)
29.550 + .addComponent(jSeparator1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE)
29.551 + .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 344, Short.MAX_VALUE)
29.552 + .addComponent(jLabel13, javax.swing.GroupLayout.Alignment.LEADING)
29.553 + .addGroup(panelPrijemciLayout.createSequentialGroup()
29.554 + .addComponent(vystupSQLZprava, javax.swing.GroupLayout.DEFAULT_SIZE, 52, Short.MAX_VALUE)
29.555 + .addGap(127, 127, 127)
29.556 + .addComponent(vyzkousetSQLTlacitko)
29.557 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.558 + .addComponent(zobrazitSQLPrijemceTlacitko))
29.559 + .addComponent(jLabel16, javax.swing.GroupLayout.Alignment.LEADING))
29.560 + .addContainerGap())
29.561 + );
29.562 + panelPrijemciLayout.setVerticalGroup(
29.563 + panelPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.564 + .addGroup(panelPrijemciLayout.createSequentialGroup()
29.565 + .addContainerGap()
29.566 + .addComponent(jLabel13)
29.567 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.568 + .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
29.569 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.570 + .addGroup(panelPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.571 + .addComponent(vystupSQLZprava, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
29.572 + .addComponent(zobrazitSQLPrijemceTlacitko)
29.573 + .addComponent(vyzkousetSQLTlacitko))
29.574 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.575 + .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
29.576 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.577 + .addComponent(jLabel16)
29.578 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.579 + .addComponent(prijemciDodatecni, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)
29.580 + .addContainerGap())
29.581 + );
29.582 +
29.583 + jLabel4.setText("SMTP server");
29.584 +
29.585 + jLabel5.setText("Port");
29.586 +
29.587 + vstupSMTPserver.setText("localhost");
29.588 +
29.589 + vstupSMTPport.setValue(25);
29.590 +
29.591 + napovedaSMTP.setColumns(20);
29.592 + napovedaSMTP.setEditable(false);
29.593 + napovedaSMTP.setLineWrap(true);
29.594 + napovedaSMTP.setRows(5);
29.595 + napovedaSMTP.setText("Tip: některé SMTP servery mají omezený seznam počítačů, ze kterých přijímají poštu");
29.596 + napovedaSMTP.setWrapStyleWord(true);
29.597 + napovedaSMTPscroll.setViewportView(napovedaSMTP);
29.598 +
29.599 + jLabel6.setText("Jméno");
29.600 +
29.601 + jLabel7.setText("Heslo");
29.602 +
29.603 + vstupSMTPlimitPrijemcu.setValue(1000);
29.604 +
29.605 + jLabel8.setText("Limit příjemců");
29.606 +
29.607 + javax.swing.GroupLayout panelServerLayout = new javax.swing.GroupLayout(panelServer);
29.608 + panelServer.setLayout(panelServerLayout);
29.609 + panelServerLayout.setHorizontalGroup(
29.610 + panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.611 + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelServerLayout.createSequentialGroup()
29.612 + .addContainerGap()
29.613 + .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
29.614 + .addComponent(napovedaSMTPscroll, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 318, Short.MAX_VALUE)
29.615 + .addGroup(panelServerLayout.createSequentialGroup()
29.616 + .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.617 + .addComponent(jLabel4)
29.618 + .addComponent(jLabel6)
29.619 + .addComponent(jLabel5)
29.620 + .addComponent(jLabel7)
29.621 + .addComponent(jLabel8))
29.622 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.623 + .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.624 + .addComponent(vstupSMTPserver, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)
29.625 + .addComponent(vstupSMTPport, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)
29.626 + .addComponent(vstupSMTPjmeno, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)
29.627 + .addComponent(vstupSMTPheslo, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE)
29.628 + .addComponent(vstupSMTPlimitPrijemcu, javax.swing.GroupLayout.DEFAULT_SIZE, 230, Short.MAX_VALUE))))
29.629 + .addContainerGap())
29.630 + );
29.631 + panelServerLayout.setVerticalGroup(
29.632 + panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.633 + .addGroup(panelServerLayout.createSequentialGroup()
29.634 + .addContainerGap()
29.635 + .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.636 + .addComponent(jLabel4)
29.637 + .addComponent(vstupSMTPserver, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
29.638 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.639 + .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.640 + .addComponent(vstupSMTPport, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
29.641 + .addComponent(jLabel5))
29.642 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.643 + .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.644 + .addComponent(jLabel6)
29.645 + .addComponent(vstupSMTPjmeno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
29.646 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.647 + .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.648 + .addComponent(vstupSMTPheslo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
29.649 + .addComponent(jLabel7))
29.650 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.651 + .addGroup(panelServerLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.652 + .addComponent(vstupSMTPlimitPrijemcu, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
29.653 + .addComponent(jLabel8))
29.654 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
29.655 + .addComponent(napovedaSMTPscroll, javax.swing.GroupLayout.DEFAULT_SIZE, 145, Short.MAX_VALUE)
29.656 + .addContainerGap())
29.657 + );
29.658 +
29.659 + jLabel12.setText("Těmto lidem přijde hromadný e-mail vždy (netýká se zkušebního rozeslání zprávy).");
29.660 +
29.661 + javax.swing.GroupLayout panelVychoziPrijemciLayout = new javax.swing.GroupLayout(panelVychoziPrijemci);
29.662 + panelVychoziPrijemci.setLayout(panelVychoziPrijemciLayout);
29.663 + panelVychoziPrijemciLayout.setHorizontalGroup(
29.664 + panelVychoziPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.665 + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelVychoziPrijemciLayout.createSequentialGroup()
29.666 + .addContainerGap()
29.667 + .addGroup(panelVychoziPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
29.668 + .addComponent(prijemciVychozi, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 514, Short.MAX_VALUE)
29.669 + .addComponent(jLabel12, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 514, Short.MAX_VALUE))
29.670 + .addContainerGap())
29.671 + );
29.672 + panelVychoziPrijemciLayout.setVerticalGroup(
29.673 + panelVychoziPrijemciLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.674 + .addGroup(panelVychoziPrijemciLayout.createSequentialGroup()
29.675 + .addContainerGap()
29.676 + .addComponent(jLabel12)
29.677 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
29.678 + .addComponent(prijemciVychozi, javax.swing.GroupLayout.DEFAULT_SIZE, 261, Short.MAX_VALUE)
29.679 + .addContainerGap())
29.680 + );
29.681 +
29.682 + jLabel1.setLabelFor(vstupPredmet);
29.683 + jLabel1.setText("Předmět");
29.684 +
29.685 + vstupPredmet.addActionListener(new java.awt.event.ActionListener() {
29.686 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.687 + vstupPredmetActionPerformed(evt);
29.688 + }
29.689 + });
29.690 +
29.691 + jLabel2.setText("Jméno odesílatele");
29.692 +
29.693 + vstupZprava.setColumns(20);
29.694 + vstupZprava.setRows(5);
29.695 + jScrollPane1.setViewportView(vstupZprava);
29.696 +
29.697 + jLabel15.setText("Formát zprávy");
29.698 +
29.699 + vstupFormatHTML.setMnemonic('h');
29.700 + vstupFormatHTML.setText("HTML");
29.701 + vstupFormatHTML.setToolTipText("Při nezaškrtnutí se odešle jako prostý text");
29.702 +
29.703 + odpovedetKomuOdkaz.setForeground(javax.swing.UIManager.getDefaults().getColor("windowText"));
29.704 + odpovedetKomuOdkaz.setMnemonic('e');
29.705 + odpovedetKomuOdkaz.setText("Adresa odesílatele");
29.706 + odpovedetKomuOdkaz.setToolTipText("<html><p>Klikněte sem pro nastavení adresy,</p><p>na kterou mají chodit odpovědi</p></html>");
29.707 + odpovedetKomuOdkaz.setClickedColor(javax.swing.UIManager.getDefaults().getColor("windowText"));
29.708 + odpovedetKomuOdkaz.setUnclickedColor(javax.swing.UIManager.getDefaults().getColor("windowText"));
29.709 + odpovedetKomuOdkaz.addActionListener(new java.awt.event.ActionListener() {
29.710 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.711 + odpovedetKomuOdkazActionPerformed(evt);
29.712 + }
29.713 + });
29.714 +
29.715 + javax.swing.GroupLayout panelZpravaLayout = new javax.swing.GroupLayout(panelZprava);
29.716 + panelZprava.setLayout(panelZpravaLayout);
29.717 + panelZpravaLayout.setHorizontalGroup(
29.718 + panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.719 + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelZpravaLayout.createSequentialGroup()
29.720 + .addContainerGap()
29.721 + .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
29.722 + .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 438, Short.MAX_VALUE)
29.723 + .addGroup(panelZpravaLayout.createSequentialGroup()
29.724 + .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
29.725 + .addGroup(panelZpravaLayout.createSequentialGroup()
29.726 + .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.727 + .addComponent(jLabel2)
29.728 + .addComponent(jLabel1))
29.729 + .addGap(17, 17, 17))
29.730 + .addGroup(panelZpravaLayout.createSequentialGroup()
29.731 + .addComponent(odpovedetKomuOdkaz, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
29.732 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)))
29.733 + .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.734 + .addComponent(vstupJmenoOdesilatele, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)
29.735 + .addComponent(vstupAdresaOdesilatele, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)
29.736 + .addComponent(vstupPredmet, javax.swing.GroupLayout.DEFAULT_SIZE, 328, Short.MAX_VALUE)))
29.737 + .addGroup(javax.swing.GroupLayout.Alignment.LEADING, panelZpravaLayout.createSequentialGroup()
29.738 + .addComponent(jLabel15)
29.739 + .addGap(33, 33, 33)
29.740 + .addComponent(vstupFormatHTML, javax.swing.GroupLayout.DEFAULT_SIZE, 81, Short.MAX_VALUE)
29.741 + .addGap(247, 247, 247)))
29.742 + .addContainerGap())
29.743 + );
29.744 + panelZpravaLayout.setVerticalGroup(
29.745 + panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.746 + .addGroup(panelZpravaLayout.createSequentialGroup()
29.747 + .addContainerGap()
29.748 + .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.749 + .addComponent(jLabel1)
29.750 + .addComponent(vstupPredmet, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
29.751 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.752 + .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.753 + .addComponent(jLabel2)
29.754 + .addComponent(vstupJmenoOdesilatele, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
29.755 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.756 + .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.757 + .addComponent(vstupAdresaOdesilatele, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
29.758 + .addComponent(odpovedetKomuOdkaz, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
29.759 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.760 + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 184, Short.MAX_VALUE)
29.761 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.762 + .addGroup(panelZpravaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.763 + .addComponent(jLabel15)
29.764 + .addComponent(vstupFormatHTML))
29.765 + .addContainerGap())
29.766 + );
29.767 +
29.768 + odpovedetKomuDialog.setTitle("Adresa pro odpovědi");
29.769 + odpovedetKomuDialog.setModal(true);
29.770 +
29.771 + jLabel18.setText("Jméno");
29.772 +
29.773 + jLabel19.setText("Adresa");
29.774 +
29.775 + jLabel17.setText("<html>\n<p>Pokud bude příjemce na hromadnou zprávu odpovídat,</p>\n<p>odpověď přijde na tuto adresu.</p>\n<p>Pokud tyto údaje nevyplníte, nebo zadáte chybný e-mail,</p>\n<p>budou odpovědi chodit odesílateli.</p>\n</html>");
29.776 +
29.777 + odpovedetKomuHotovo.setText("Hotovo");
29.778 + odpovedetKomuHotovo.addActionListener(new java.awt.event.ActionListener() {
29.779 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.780 + odpovedetKomuHotovoActionPerformed(evt);
29.781 + }
29.782 + });
29.783 +
29.784 + javax.swing.GroupLayout odpovedetKomuDialogLayout = new javax.swing.GroupLayout(odpovedetKomuDialog.getContentPane());
29.785 + odpovedetKomuDialog.getContentPane().setLayout(odpovedetKomuDialogLayout);
29.786 + odpovedetKomuDialogLayout.setHorizontalGroup(
29.787 + odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.788 + .addGroup(odpovedetKomuDialogLayout.createSequentialGroup()
29.789 + .addContainerGap()
29.790 + .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.791 + .addGroup(odpovedetKomuDialogLayout.createSequentialGroup()
29.792 + .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.793 + .addComponent(jLabel19)
29.794 + .addComponent(jLabel18))
29.795 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.796 + .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
29.797 + .addComponent(odpovedetKomuAdresa, javax.swing.GroupLayout.DEFAULT_SIZE, 332, Short.MAX_VALUE)
29.798 + .addComponent(odpovedetKomuJmeno, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 332, Short.MAX_VALUE)))
29.799 + .addComponent(jLabel17, javax.swing.GroupLayout.DEFAULT_SIZE, 382, Short.MAX_VALUE)
29.800 + .addComponent(odpovedetKomuHotovo, javax.swing.GroupLayout.Alignment.TRAILING))
29.801 + .addContainerGap())
29.802 + );
29.803 + odpovedetKomuDialogLayout.setVerticalGroup(
29.804 + odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.805 + .addGroup(odpovedetKomuDialogLayout.createSequentialGroup()
29.806 + .addContainerGap()
29.807 + .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
29.808 + .addComponent(jLabel18)
29.809 + .addComponent(odpovedetKomuJmeno, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
29.810 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.811 + .addGroup(odpovedetKomuDialogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
29.812 + .addComponent(jLabel19)
29.813 + .addComponent(odpovedetKomuAdresa, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
29.814 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.815 + .addComponent(jLabel17)
29.816 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
29.817 + .addComponent(odpovedetKomuHotovo)
29.818 + .addContainerGap())
29.819 + );
29.820 +
29.821 + setTitle("SuperPošťák");
29.822 + addWindowListener(new java.awt.event.WindowAdapter() {
29.823 + public void windowClosing(java.awt.event.WindowEvent evt) {
29.824 + formWindowClosing(evt);
29.825 + }
29.826 + });
29.827 +
29.828 + jXHeader1.setDescription("Program pro posílání hromadných zpráv elektronickou poštou.\nNezneužívejte pro rozesílání spamu.");
29.829 + jXHeader1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/xfmail.png"))); // NOI18N
29.830 + jXHeader1.setTitle("SuperPošťák");
29.831 +
29.832 + taskPanel.setBackground(javax.swing.UIManager.getDefaults().getColor("Button.background"));
29.833 +
29.834 + jXTaskPane1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/mail_generic.png"))); // NOI18N
29.835 + jXTaskPane1.setTitle("Hromadná zpráva");
29.836 +
29.837 + lnText.setMnemonic('z');
29.838 + lnText.setText("Text zprávy");
29.839 + lnText.setActionCommand("Zpráva");
29.840 + lnText.addActionListener(new java.awt.event.ActionListener() {
29.841 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.842 + lnTextActionPerformed(evt);
29.843 + }
29.844 + });
29.845 + jXTaskPane1.getContentPane().add(lnText);
29.846 +
29.847 + lnPrijemci.setMnemonic('p');
29.848 + lnPrijemci.setText("Příjemci");
29.849 + lnPrijemci.addActionListener(new java.awt.event.ActionListener() {
29.850 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.851 + lnPrijemciActionPerformed(evt);
29.852 + }
29.853 + });
29.854 + jXTaskPane1.getContentPane().add(lnPrijemci);
29.855 +
29.856 + lnOdeslat.setMnemonic('o');
29.857 + lnOdeslat.setText("Odeslat");
29.858 + lnOdeslat.addActionListener(new java.awt.event.ActionListener() {
29.859 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.860 + lnOdeslatActionPerformed(evt);
29.861 + }
29.862 + });
29.863 + jXTaskPane1.getContentPane().add(lnOdeslat);
29.864 +
29.865 + taskPanel.add(jXTaskPane1);
29.866 +
29.867 + jXTaskPane2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cz/frantovo/superPostak/obrazky/gear.png"))); // NOI18N
29.868 + jXTaskPane2.setTitle("Nastavení");
29.869 +
29.870 + lnServer.setMnemonic('s');
29.871 + lnServer.setText("Poštovní server");
29.872 + lnServer.addActionListener(new java.awt.event.ActionListener() {
29.873 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.874 + lnServerActionPerformed(evt);
29.875 + }
29.876 + });
29.877 + jXTaskPane2.getContentPane().add(lnServer);
29.878 +
29.879 + lnDatabaze.setMnemonic('d');
29.880 + lnDatabaze.setText("Databáze");
29.881 + lnDatabaze.addActionListener(new java.awt.event.ActionListener() {
29.882 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.883 + lnDatabazeActionPerformed(evt);
29.884 + }
29.885 + });
29.886 + jXTaskPane2.getContentPane().add(lnDatabaze);
29.887 +
29.888 + lnVychoziPrijemci.setMnemonic('v');
29.889 + lnVychoziPrijemci.setText("Výchozí příjemci");
29.890 + lnVychoziPrijemci.addActionListener(new java.awt.event.ActionListener() {
29.891 + public void actionPerformed(java.awt.event.ActionEvent evt) {
29.892 + lnVychoziPrijemciActionPerformed(evt);
29.893 + }
29.894 + });
29.895 + jXTaskPane2.getContentPane().add(lnVychoziPrijemci);
29.896 +
29.897 + taskPanel.add(jXTaskPane2);
29.898 +
29.899 + panel.setLayout(new java.awt.CardLayout());
29.900 +
29.901 + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
29.902 + getContentPane().setLayout(layout);
29.903 + layout.setHorizontalGroup(
29.904 + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.905 + .addGroup(layout.createSequentialGroup()
29.906 + .addComponent(taskPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 196, javax.swing.GroupLayout.PREFERRED_SIZE)
29.907 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.908 + .addComponent(panel, javax.swing.GroupLayout.DEFAULT_SIZE, 342, Short.MAX_VALUE))
29.909 + .addComponent(jXHeader1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 544, Short.MAX_VALUE)
29.910 + );
29.911 + layout.setVerticalGroup(
29.912 + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
29.913 + .addGroup(layout.createSequentialGroup()
29.914 + .addComponent(jXHeader1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
29.915 + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
29.916 + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
29.917 + .addComponent(taskPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE)
29.918 + .addComponent(panel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE)))
29.919 + );
29.920 +
29.921 + pack();
29.922 + }// </editor-fold>//GEN-END:initComponents
29.923 + private void vstupPredmetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vstupPredmetActionPerformed
29.924 +
29.925 +}//GEN-LAST:event_vstupPredmetActionPerformed
29.926 +
29.927 + private void lnTextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnTextActionPerformed
29.928 + setPanel(panelZprava);
29.929 + }//GEN-LAST:event_lnTextActionPerformed
29.930 +
29.931 + private void lnPrijemciActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnPrijemciActionPerformed
29.932 + setPanel(panelPrijemci);
29.933 + }//GEN-LAST:event_lnPrijemciActionPerformed
29.934 +
29.935 + private void lnOdeslatActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnOdeslatActionPerformed
29.936 + setPanel(panelOdeslat);
29.937 + }//GEN-LAST:event_lnOdeslatActionPerformed
29.938 +
29.939 + private void lnServerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnServerActionPerformed
29.940 + setPanel(panelServer);
29.941 + }//GEN-LAST:event_lnServerActionPerformed
29.942 +
29.943 + private void lnDatabazeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnDatabazeActionPerformed
29.944 + setPanel(panelDatabaze);
29.945 + }//GEN-LAST:event_lnDatabazeActionPerformed
29.946 +
29.947 + private void lnVychoziPrijemciActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lnVychoziPrijemciActionPerformed
29.948 + setPanel(panelVychoziPrijemci);
29.949 + }//GEN-LAST:event_lnVychoziPrijemciActionPerformed
29.950 +
29.951 + private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
29.952 + ulozNastaveni();
29.953 + log.log(Level.WARNING, "Ukončuji program.");
29.954 + }//GEN-LAST:event_formWindowClosing
29.955 +
29.956 + /**
29.957 + * Sestaví zprávu na základě GUI vstupů. Všechno kromě příjemců,
29.958 + * ti se přidají až dodatečně, podle toho,
29.959 + * jestli jde o zkušební nebo skutečné rozesílání.
29.960 + */
29.961 + private HromadnaZprava getZprava() throws UnsupportedEncodingException {
29.962 + HromadnaZprava zprava = new HromadnaZprava();
29.963 + zprava.setOdesilatel(new InternetAddress(vstupAdresaOdesilatele.getText(), vstupJmenoOdesilatele.getText()));
29.964 + zprava.setPredmet(vstupPredmet.getText());
29.965 + zprava.setText(vstupZprava.getText());
29.966 + zprava.setFormatHTML(vstupFormatHTML.isSelected());
29.967 +
29.968 + if (Postak.zkontrolujAdresu(odpovedetKomuAdresa.getText())) {
29.969 + InternetAddress komu = new InternetAddress();
29.970 + komu.setPersonal(odpovedetKomuJmeno.getText());
29.971 + komu.setAddress(odpovedetKomuAdresa.getText());
29.972 + zprava.setOdpovedetKomu(komu);
29.973 + }
29.974 +
29.975 + return zprava;
29.976 + }
29.977 +
29.978 + /** Všichni příjemci, kterým bude odeslána ostrá zpráva. */
29.979 + private ArrayList<InternetAddressKomu> getPrijemciVsichni() throws SQLException, UnsupportedEncodingException {
29.980 + ArrayList<InternetAddressKomu> vsichni = new ArrayList<InternetAddressKomu>();
29.981 + Collection<InternetAddressKomu> adresyVychozi = nastaveni.getVychoziPrijemci();
29.982 + Collection<InternetAddressKomu> adresySQL = getPrijemciSQL();
29.983 + Collection<InternetAddressKomu> adresyDodatecne = prijemciDodatecni.getAdresy();
29.984 +
29.985 + if (adresyVychozi != null) {
29.986 + vsichni.addAll(adresyVychozi);
29.987 + }
29.988 + if (adresySQL != null) {
29.989 + vsichni.addAll(adresySQL);
29.990 + }
29.991 + if (adresyDodatecne != null) {
29.992 + vsichni.addAll(adresyDodatecne);
29.993 + }
29.994 + return vsichni;
29.995 + }
29.996 +
29.997 + private void rozeslatHromadnouZpravuTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rozeslatHromadnouZpravuTlacitkoActionPerformed
29.998 + try {
29.999 + ulozNastaveniGUI();
29.1000 + HromadnaZprava zprava = getZprava();
29.1001 + zprava.setPrijemci(getPrijemciVsichni());
29.1002 +
29.1003 + int volba = JOptionPane.showOptionDialog(this, "Počet příjemců hromadné zprávy: " + zprava.getPrijemci().size() + "\nPřejete si zprávu odeslat?", "Potvrdit odeslání", JOptionPane.YES_NO_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null);
29.1004 + if (volba == JOptionPane.YES_OPTION) {
29.1005 + odesli(zprava);
29.1006 + Postak.vypisPrijemce(zprava.getPrijemci());
29.1007 + zobrazInformacniDialog("Odesláno", "Zpráva byla odeslána.\nPočet příjemců: " + zprava.getPrijemci().size(), true);
29.1008 + }
29.1009 + } catch (Exception e) {
29.1010 + zobrazChybovyDialog("Zprávu se nepodařilo odeslat", e, Level.SEVERE, true);
29.1011 + }
29.1012 +}//GEN-LAST:event_rozeslatHromadnouZpravuTlacitkoActionPerformed
29.1013 +
29.1014 + private void rozeslatZkusebniTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rozeslatZkusebniTlacitkoActionPerformed
29.1015 + try {
29.1016 + ulozNastaveniGUI();
29.1017 + HromadnaZprava zprava = getZprava();
29.1018 + zprava.setPrijemci(prijemciZkusebni.getAdresy());
29.1019 +
29.1020 + odesli(zprava);
29.1021 +
29.1022 + zobrazInformacniDialog("Odesláno", "Zkušební zpráva byla odeslána.\nPočet adresátů: " + zprava.getPrijemci().size(), true);
29.1023 + } catch (Exception e) {
29.1024 + zobrazChybovyDialog("Zkušební zprávu se nepodařilo odeslat", e, Level.SEVERE, true);
29.1025 + }
29.1026 + }//GEN-LAST:event_rozeslatZkusebniTlacitkoActionPerformed
29.1027 +
29.1028 + private void vyzkousetPripojeniTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vyzkousetPripojeniTlacitkoActionPerformed
29.1029 + try {
29.1030 + getSpojeni();//GEN-LAST:event_vyzkousetPripojeniTlacitkoActionPerformed
29.1031 + zobrazInformacniDialog("Připojeno k DB", "Připojení k DB proběhlo úspěšně", false);
29.1032 + } catch (SQLException e) {
29.1033 + zobrazChybovyDialog("Spojení s DB", "Připojení k databázi selhalo", null, e, Level.SEVERE, true);
29.1034 + }
29.1035 + }
29.1036 +
29.1037 + private void vyzkousetSQLTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_vyzkousetSQLTlacitkoActionPerformed
29.1038 + try {
29.1039 + Collection<InternetAddressKomu> adresy = getPrijemciSQL();//GEN-LAST:event_vyzkousetSQLTlacitkoActionPerformed
29.1040 + if (adresy == null) {
29.1041 + zobrazInformacniDialog("SQL dotaz", "Dotaz do databáze neproběhl.\nSQL dotaz je prázdný.", false);
29.1042 + } else {
29.1043 + zobrazInformacniDialog("SQL dotaz", "Dotaz do databáze byl úspěšný.\nPočet získaných záznamů: " + adresy.size(), false);
29.1044 + }
29.1045 + } catch (Exception e) {
29.1046 + zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
29.1047 + }
29.1048 + }
29.1049 +
29.1050 + private void zobrazitSQLPrijemceTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zobrazitSQLPrijemceTlacitkoActionPerformed
29.1051 + try {
29.1052 + Collection<InternetAddressKomu> adresy = getPrijemciSQL();
29.1053 +
29.1054 + ZobrazovacAdres zobrazovac = new ZobrazovacAdres(this, false);
29.1055 + zobrazovac.setAdresy(adresy);
29.1056 + zobrazovac.setLocationRelativeTo(this);
29.1057 + zobrazovac.setVisible(true);
29.1058 +
29.1059 + } catch (Exception e) {
29.1060 + zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
29.1061 + }
29.1062 + }//GEN-LAST:event_zobrazitSQLPrijemceTlacitkoActionPerformed
29.1063 +
29.1064 + private void zobrazitVsechnyPrijemceTlacitkoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_zobrazitVsechnyPrijemceTlacitkoActionPerformed
29.1065 + try {
29.1066 + Collection<InternetAddressKomu> adresy = getPrijemciVsichni();
29.1067 +
29.1068 + ZobrazovacAdres zobrazovac = new ZobrazovacAdres(this, false);
29.1069 + zobrazovac.setAdresy(adresy);
29.1070 + zobrazovac.setLocationRelativeTo(this);
29.1071 + zobrazovac.setVisible(true);
29.1072 +
29.1073 + } catch (Exception e) {
29.1074 + zobrazChybovyDialog("SQL dotaz", "Provedení SQL příkazu selhalo selhalo", null, e, Level.SEVERE, true);
29.1075 + }
29.1076 + }//GEN-LAST:event_zobrazitVsechnyPrijemceTlacitkoActionPerformed
29.1077 +
29.1078 + private void odpovedetKomuOdkazActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_odpovedetKomuOdkazActionPerformed
29.1079 + odpovedetKomuDialog.pack();
29.1080 + odpovedetKomuDialog.setLocationRelativeTo(this);
29.1081 + odpovedetKomuDialog.setModalityType(ModalityType.APPLICATION_MODAL);
29.1082 + odpovedetKomuDialog.getRootPane().setDefaultButton(odpovedetKomuHotovo);
29.1083 + odpovedetKomuDialog.setVisible(true);
29.1084 +}//GEN-LAST:event_odpovedetKomuOdkazActionPerformed
29.1085 +
29.1086 + private void odpovedetKomuHotovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_odpovedetKomuHotovoActionPerformed
29.1087 + odpovedetKomuDialog.setVisible(false);
29.1088 +}//GEN-LAST:event_odpovedetKomuHotovoActionPerformed
29.1089 +
29.1090 + /** Provede uživatelem zadaný SQL dotaz a vrátí získané příjemce */
29.1091 + private Collection<InternetAddressKomu> getPrijemciSQL() throws SQLException, UnsupportedEncodingException {
29.1092 + if ("".equals(vstupSQL.getText())) {
29.1093 + return null;
29.1094 + } else {
29.1095 + return getSpojeni().getAdresy(vstupSQL.getText());
29.1096 + }
29.1097 + }
29.1098 +
29.1099 + private DataSQL getSpojeni() throws SQLException {
29.1100 + return Data.getSpojeniSQL(vstupDatabaze.getText(), vstupDBjmeno.getText(), vstupDBheslo.getPassword());
29.1101 + }
29.1102 +
29.1103 + /** Obalovací třída, která v průběhu odesílání zobrazuje kurzor s hodinami. */
29.1104 + private void odesli(HromadnaZprava zprava) throws MessagingException {
29.1105 + setCursor(new Cursor(Cursor.WAIT_CURSOR));
29.1106 + try {
29.1107 + postak.setNastaveni(nastaveni);
29.1108 + postak.odesli(zprava);
29.1109 +
29.1110 + } catch (MessagingException e) {
29.1111 + throw e;
29.1112 + } finally {
29.1113 + setCursor(Cursor.getDefaultCursor());
29.1114 + }
29.1115 + }
29.1116 +
29.1117 + private void setPanel(JComponent komponenta) {
29.1118 +
29.1119 + if (panel.getLayout() instanceof CardLayout) {
29.1120 + CardLayout l = (CardLayout) panel.getLayout();
29.1121 + l.show(panel, komponenta.getName());
29.1122 + } else {
29.1123 + log.log(Level.WARNING, "Neplatí: panel.getLayout() instanceof CardLayout");
29.1124 + }
29.1125 +
29.1126 + }
29.1127 +
29.1128 + /** Změní chování tabulátoru v textovém poli - aby se pomocí TABu dalo skočit na další komponentu */
29.1129 + private void vyresitTabFocusProblem(JTextArea textArea) {
29.1130 + textArea.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, null);
29.1131 + textArea.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, null);
29.1132 + }
29.1133 +
29.1134 + public JXTaskPaneContainer getTaskPanel() {
29.1135 + return taskPanel;
29.1136 + }
29.1137 +
29.1138 + /**
29.1139 + * @param args the command line arguments
29.1140 + */
29.1141 + public static void main(String args[]) {
29.1142 + final boolean ladit = (args != null && args.length > 0 && args[0].equals("ladit"));
29.1143 +
29.1144 + /**try {
29.1145 + //LookAndFeel laf = UIManager.getLookAndFeel();
29.1146 +
29.1147 + //laf = new SubstanceLookAndFeel();
29.1148 + //laf = new SubstanceBusinessLookAndFeel();
29.1149 + //laf = new SubstanceBusinessBlueSteelLookAndFeel();
29.1150 + //laf = new SubstanceBusinessBlackSteelLookAndFeel();
29.1151 +
29.1152 + UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceBusinessBlueSteelLookAndFeel");
29.1153 + } catch (ClassNotFoundException ex) {
29.1154 + log.log(Level.SEVERE, null, ex);
29.1155 + } catch (InstantiationException ex) {
29.1156 + log.log(Level.SEVERE, null, ex);
29.1157 + } catch (IllegalAccessException ex) {
29.1158 + log.log(Level.SEVERE, null, ex);
29.1159 + } catch (UnsupportedLookAndFeelException ex) {
29.1160 + log.log(Level.SEVERE, null, ex);
29.1161 + } */
29.1162 +
29.1163 + java.awt.EventQueue.invokeLater(new Runnable() {
29.1164 +
29.1165 + public void run() {
29.1166 + new SuperPostak(ladit, true).setVisible(true);
29.1167 + }
29.1168 + });
29.1169 + }
29.1170 + // Variables declaration - do not modify//GEN-BEGIN:variables
29.1171 + private javax.swing.JLabel jLabel1;
29.1172 + private javax.swing.JLabel jLabel10;
29.1173 + private javax.swing.JLabel jLabel11;
29.1174 + private javax.swing.JLabel jLabel12;
29.1175 + private javax.swing.JLabel jLabel13;
29.1176 + private javax.swing.JLabel jLabel14;
29.1177 + private javax.swing.JLabel jLabel15;
29.1178 + private javax.swing.JLabel jLabel16;
29.1179 + private javax.swing.JLabel jLabel17;
29.1180 + private javax.swing.JLabel jLabel18;
29.1181 + private javax.swing.JLabel jLabel19;
29.1182 + private javax.swing.JLabel jLabel2;
29.1183 + private javax.swing.JLabel jLabel4;
29.1184 + private javax.swing.JLabel jLabel5;
29.1185 + private javax.swing.JLabel jLabel6;
29.1186 + private javax.swing.JLabel jLabel7;
29.1187 + private javax.swing.JLabel jLabel8;
29.1188 + private javax.swing.JLabel jLabel9;
29.1189 + private javax.swing.JPanel jPanel1;
29.1190 + private javax.swing.JScrollPane jScrollPane1;
29.1191 + private javax.swing.JScrollPane jScrollPane3;
29.1192 + private javax.swing.JSeparator jSeparator1;
29.1193 + private javax.swing.JSeparator jSeparator2;
29.1194 + private org.jdesktop.swingx.JXHeader jXHeader1;
29.1195 + private org.jdesktop.swingx.JXTaskPane jXTaskPane1;
29.1196 + private org.jdesktop.swingx.JXTaskPane jXTaskPane2;
29.1197 + private org.jdesktop.swingx.JXHyperlink lnDatabaze;
29.1198 + private org.jdesktop.swingx.JXHyperlink lnOdeslat;
29.1199 + private org.jdesktop.swingx.JXHyperlink lnPrijemci;
29.1200 + private org.jdesktop.swingx.JXHyperlink lnServer;
29.1201 + private org.jdesktop.swingx.JXHyperlink lnText;
29.1202 + private org.jdesktop.swingx.JXHyperlink lnVychoziPrijemci;
29.1203 + private javax.swing.JTextArea napovedaSMTP;
29.1204 + private javax.swing.JScrollPane napovedaSMTPscroll;
29.1205 + private javax.swing.JTextField odpovedetKomuAdresa;
29.1206 + private javax.swing.JDialog odpovedetKomuDialog;
29.1207 + private javax.swing.JButton odpovedetKomuHotovo;
29.1208 + private javax.swing.JTextField odpovedetKomuJmeno;
29.1209 + private org.jdesktop.swingx.JXHyperlink odpovedetKomuOdkaz;
29.1210 + private org.jdesktop.swingx.JXPanel panel;
29.1211 + private org.jdesktop.swingx.JXPanel panelDatabaze;
29.1212 + private org.jdesktop.swingx.JXPanel panelOdeslat;
29.1213 + private org.jdesktop.swingx.JXPanel panelPrijemci;
29.1214 + private org.jdesktop.swingx.JXPanel panelServer;
29.1215 + private org.jdesktop.swingx.JXPanel panelVychoziPrijemci;
29.1216 + private org.jdesktop.swingx.JXPanel panelZprava;
29.1217 + private cz.frantovo.superPostak.PanelPrijemcu prijemciDodatecni;
29.1218 + private cz.frantovo.superPostak.PanelPrijemcu prijemciVychozi;
29.1219 + private cz.frantovo.superPostak.PanelPrijemcu prijemciZkusebni;
29.1220 + private javax.swing.JButton rozeslatHromadnouZpravuTlacitko;
29.1221 + private javax.swing.JButton rozeslatZkusebniTlacitko;
29.1222 + private org.jdesktop.swingx.JXTaskPaneContainer taskPanel;
29.1223 + private javax.swing.JTextField vstupAdresaOdesilatele;
29.1224 + private javax.swing.JPasswordField vstupDBheslo;
29.1225 + private javax.swing.JTextField vstupDBjmeno;
29.1226 + private javax.swing.JTextField vstupDatabaze;
29.1227 + private javax.swing.JCheckBox vstupFormatHTML;
29.1228 + private javax.swing.JTextField vstupJmenoOdesilatele;
29.1229 + private javax.swing.JTextField vstupPredmet;
29.1230 + private javax.swing.JPasswordField vstupSMTPheslo;
29.1231 + private javax.swing.JTextField vstupSMTPjmeno;
29.1232 + private javax.swing.JSpinner vstupSMTPlimitPrijemcu;
29.1233 + private javax.swing.JSpinner vstupSMTPport;
29.1234 + private javax.swing.JTextField vstupSMTPserver;
29.1235 + private javax.swing.JTextArea vstupSQL;
29.1236 + private javax.swing.JTextArea vstupZprava;
29.1237 + private javax.swing.JLabel vystupDBzprava;
29.1238 + private javax.swing.JLabel vystupSQLZprava;
29.1239 + private javax.swing.JButton vyzkousetPripojeniTlacitko;
29.1240 + private javax.swing.JButton vyzkousetSQLTlacitko;
29.1241 + private javax.swing.JButton zobrazitSQLPrijemceTlacitko;
29.1242 + private javax.swing.JButton zobrazitVsechnyPrijemceTlacitko;
29.1243 + // End of variables declaration//GEN-END:variables
29.1244 +}
30.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
30.2 +++ b/java/SuperPostak/src/cz/frantovo/superPostak/TODO.txt Sun Nov 23 22:19:20 2008 +0100
30.3 @@ -0,0 +1,30 @@
30.4 + Přidat dotaz - odsouhlasení před odesláním
30.5 + Export adres
30.6 + Import adres
30.7 + Zobrazení adres
30.8 + Editovatelnost seznamů (zapnuto/vypnuto)
30.9 + SQL připojení
30.10 + SQL načítání
30.11 + Odesílací třída
30.12 + HTML zprávy
30.13 + SMTP přihlašování
30.14 + SMTP SSL
30.15 + Dělení na dávky
30.16 +Obojetný formát zpráv: html + text
30.17 +
30.18 +
30.19 + Kontrola vstupu: adresy se zavináčem, délky...
30.20 +Inteligentní interpret chybových hlášek
30.21 +
30.22 +Nápověda u nastavení serveru
30.23 +"O aplikaci"
30.24 +Možnost neukládání hesla k DB, případně šifrování
30.25 +Dokumentace - DocBook - JavaHelp
30.26 +
30.27 +
30.28 +Odebírání více příjemců současně (multiselekt v tabulce)
30.29 +automatické doplňování dříve napsaných textů (jména, adresy)
30.30 +Řádek s logy - místo dialogů
30.31 +Zvýrazňování SQL syntaxe
30.32 +
30.33 +Refaktoring JFTable
30.34 \ No newline at end of file
31.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
31.2 +++ b/java/SuperPostak/src/cz/frantovo/superPostak/ZobrazovacAdres.form Sun Nov 23 22:19:20 2008 +0100
31.3 @@ -0,0 +1,38 @@
31.4 +<?xml version="1.0" encoding="UTF-8" ?>
31.5 +
31.6 +<Form version="1.3" maxVersion="1.5" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
31.7 + <Properties>
31.8 + <Property name="defaultCloseOperation" type="int" value="2"/>
31.9 + <Property name="title" type="java.lang.String" value="Seznam adres"/>
31.10 + </Properties>
31.11 + <SyntheticProperties>
31.12 + <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
31.13 + </SyntheticProperties>
31.14 + <AuxValues>
31.15 + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
31.16 + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
31.17 + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
31.18 + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
31.19 + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
31.20 + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
31.21 + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
31.22 + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
31.23 + </AuxValues>
31.24 +
31.25 + <Layout>
31.26 + <DimensionLayout dim="0">
31.27 + <Group type="103" groupAlignment="0" attributes="0">
31.28 + <Component id="panelAdres" alignment="0" pref="422" max="32767" attributes="0"/>
31.29 + </Group>
31.30 + </DimensionLayout>
31.31 + <DimensionLayout dim="1">
31.32 + <Group type="103" groupAlignment="0" attributes="0">
31.33 + <Component id="panelAdres" alignment="0" pref="315" max="32767" attributes="0"/>
31.34 + </Group>
31.35 + </DimensionLayout>
31.36 + </Layout>
31.37 + <SubComponents>
31.38 + <Component class="cz.frantovo.superPostak.PanelPrijemcu" name="panelAdres">
31.39 + </Component>
31.40 + </SubComponents>
31.41 +</Form>
32.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
32.2 +++ b/java/SuperPostak/src/cz/frantovo/superPostak/ZobrazovacAdres.java Sun Nov 23 22:19:20 2008 +0100
32.3 @@ -0,0 +1,77 @@
32.4 +/*
32.5 + * ZobrazovacAdres.java
32.6 + *
32.7 + * Created on 18. únor 2008, 0:13
32.8 + */
32.9 +
32.10 +package cz.frantovo.superPostak;
32.11 +
32.12 +import cz.frantovo.postak.InternetAddressKomu;
32.13 +import java.util.Collection;
32.14 +
32.15 +/**
32.16 + *
32.17 + * @author fiki
32.18 + */
32.19 +public class ZobrazovacAdres extends javax.swing.JDialog {
32.20 +
32.21 + /** Creates new form ZobrazovacAdres */
32.22 + public ZobrazovacAdres(java.awt.Frame parent, boolean modal) {
32.23 + super(parent, modal);
32.24 + initComponents();
32.25 + panelAdres.setEditovatelny(false);
32.26 + }
32.27 +
32.28 + public void setAdresy(Collection<InternetAddressKomu> adresy) {
32.29 + panelAdres.setAdresy(adresy);
32.30 + }
32.31 +
32.32 + /** This method is called from within the constructor to
32.33 + * initialize the form.
32.34 + * WARNING: Do NOT modify this code. The content of this method is
32.35 + * always regenerated by the Form Editor.
32.36 + */
32.37 + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
32.38 + private void initComponents() {
32.39 +
32.40 + panelAdres = new cz.frantovo.superPostak.PanelPrijemcu();
32.41 +
32.42 + setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
32.43 + setTitle("Seznam adres");
32.44 +
32.45 + javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
32.46 + getContentPane().setLayout(layout);
32.47 + layout.setHorizontalGroup(
32.48 + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
32.49 + .addComponent(panelAdres, javax.swing.GroupLayout.DEFAULT_SIZE, 422, Short.MAX_VALUE)
32.50 + );
32.51 + layout.setVerticalGroup(
32.52 + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
32.53 + .addComponent(panelAdres, javax.swing.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
32.54 + );
32.55 +
32.56 + pack();
32.57 + }// </editor-fold>//GEN-END:initComponents
32.58 +
32.59 + /**
32.60 + * @param args the command line arguments
32.61 + */
32.62 + public static void main(String args[]) {
32.63 + java.awt.EventQueue.invokeLater(new Runnable() {
32.64 + public void run() {
32.65 + ZobrazovacAdres dialog = new ZobrazovacAdres(new javax.swing.JFrame(), true);
32.66 + dialog.addWindowListener(new java.awt.event.WindowAdapter() {
32.67 + public void windowClosing(java.awt.event.WindowEvent e) {
32.68 + System.exit(0);
32.69 + }
32.70 + });
32.71 + dialog.setVisible(true);
32.72 + }
32.73 + });
32.74 + }
32.75 +
32.76 + // Variables declaration - do not modify//GEN-BEGIN:variables
32.77 + private cz.frantovo.superPostak.PanelPrijemcu panelAdres;
32.78 + // End of variables declaration//GEN-END:variables
32.79 +
32.80 +}
33.1 Binary file java/SuperPostak/src/cz/frantovo/superPostak/obrazky/adept_commit.png has changed
34.1 Binary file java/SuperPostak/src/cz/frantovo/superPostak/obrazky/apply.png has changed
35.1 Binary file java/SuperPostak/src/cz/frantovo/superPostak/obrazky/editdelete.png has changed
36.1 Binary file java/SuperPostak/src/cz/frantovo/superPostak/obrazky/fork.png has changed
37.1 Binary file java/SuperPostak/src/cz/frantovo/superPostak/obrazky/gear.png has changed
38.1 Binary file java/SuperPostak/src/cz/frantovo/superPostak/obrazky/mail_generic.png has changed
39.1 Binary file java/SuperPostak/src/cz/frantovo/superPostak/obrazky/otevrit.png has changed
40.1 Binary file java/SuperPostak/src/cz/frantovo/superPostak/obrazky/ulozit.png has changed
41.1 Binary file java/SuperPostak/src/cz/frantovo/superPostak/obrazky/vlozit.png has changed
42.1 Binary file java/SuperPostak/src/cz/frantovo/superPostak/obrazky/xfmail.png has changed
43.1 Binary file java/SuperPostak/src/cz/frantovo/superPostak/obrazky/zobrazit_adresy.png has changed
44.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
44.2 +++ b/java/SuperPostak/test/cz/frantovo/superPostak/PostakTest.java Sun Nov 23 22:19:20 2008 +0100
44.3 @@ -0,0 +1,31 @@
44.4 +package cz.frantovo.superPostak;
44.5 +
44.6 +import cz.frantovo.postak.Postak;
44.7 +import org.junit.Test;
44.8 +import static org.junit.Assert.*;
44.9 +
44.10 +/**
44.11 + * @author fiki
44.12 + */
44.13 +public class PostakTest {
44.14 +
44.15 + @Test
44.16 + public void zkontrolujAdresu() {
44.17 + System.out.println("zkontrolujAdresu");
44.18 +
44.19 + String[] adresyDobre = {"abcd@example.com", "aa.bb@seznam.cz", "nbusr123@example.name", "VeLkA@pIsMeNa.COM"};
44.20 + String[] adresySpatne = {"adresaATexampleDOTcom", "nějaká adresa", "adresa @seznam.cz"};
44.21 +
44.22 + for (String adresa : adresyDobre) {
44.23 + System.out.println("Kontroluji: " + adresa);
44.24 + assertEquals(true, Postak.zkontrolujAdresu(adresa));
44.25 + }
44.26 +
44.27 + System.out.println();
44.28 +
44.29 + for (String adresa : adresySpatne) {
44.30 + System.out.println("Kontroluji: " + adresa);
44.31 + assertEquals(false, Postak.zkontrolujAdresu(adresa));
44.32 + }
44.33 + }
44.34 +}