1.1 --- a/tasklist.core/manifest.mf Mon Dec 04 21:57:00 2006 +0000
1.2 +++ b/tasklist.core/manifest.mf Mon Dec 04 21:59:57 2006 +0000
1.3 @@ -1,6 +1,6 @@
1.4 Manifest-Version: 1.0
1.5 OpenIDE-Module: org.netbeans.modules.tasklist.core/2
1.6 -OpenIDE-Module-Implementation-Version: 19
1.7 +OpenIDE-Module-Implementation-Version: 20
1.8 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/tasklist/core/Bundle.properties
1.9 OpenIDE-Module-Requires: org.netbeans.api.javahelp.Help
1.10 OpenIDE-Module-Layer: org/netbeans/modules/tasklist/core/mf-layer.xml
2.1 --- a/tasklist.editor/nbproject/project.properties Mon Dec 04 21:57:00 2006 +0000
2.2 +++ b/tasklist.editor/nbproject/project.properties Mon Dec 04 21:59:57 2006 +0000
2.3 @@ -16,6 +16,6 @@
2.4 # Microsystems, Inc. All Rights Reserved.
2.5
2.6 javac.source=1.5
2.7 -spec.version.base=1.14.1
2.8 +spec.version.base=1.14.2
2.9 is.eager=true
2.10 nbm.homepage=http://tasklist.netbeans.org/updates/tasklist-editor.html
3.1 --- a/tasklist.editor/src/org/netbeans/modules/tasklist/editor/NewTaskEditorAction.java Mon Dec 04 21:57:00 2006 +0000
3.2 +++ b/tasklist.editor/src/org/netbeans/modules/tasklist/editor/NewTaskEditorAction.java Mon Dec 04 21:59:57 2006 +0000
3.3 @@ -60,9 +60,6 @@
3.4 if (target == null)
3.5 return;
3.6
3.7 - // TODO test shows the componnet far from caret
3.8 - //EditorView.show(new JLabel("HOHOHOHOH"));
3.9 -
3.10 BaseDocument doc = (BaseDocument) target.getDocument();
3.11 Caret caret = target.getCaret();
3.12
3.13 @@ -82,7 +79,8 @@
3.14 return;
3.15 }
3.16
3.17 - Line lineObj = NbEditorUtilities.getLine((Document) doc, caret.getDot(), false);
3.18 + Line lineObj = NbEditorUtilities.getLine(
3.19 + (Document) doc, caret.getDot(), false);
3.20 NewTaskAction.performAction(lineObj);
3.21 }
3.22
4.1 --- a/tasklist.usertasks/arch.xml Mon Dec 04 21:57:00 2006 +0000
4.2 +++ b/tasklist.usertasks/arch.xml Mon Dec 04 21:59:57 2006 +0000
4.3 @@ -71,7 +71,8 @@
4.4 <answer id="arch-quality">
4.5 <p>
4.6 There are (although not so many) unit and functional tests that could
4.7 - be run automatically.
4.8 + be run automatically. Line coverage of unit test is now (Nov. 2006) about
4.9 + 14%.
4.10 </p>
4.11 </answer>
4.12
4.13 @@ -90,9 +91,7 @@
4.14 -->
4.15 <answer id="arch-time">
4.16 <p>
4.17 - The module is currently (Jan. 2006) available as beta. If no significant
4.18 - bugs or architecture flaws will be found it will be available in 3 months
4.19 - on the stable AUC.
4.20 + The module is currently (Nov. 2006) available from the stable AUC.
4.21 </p>
4.22 </answer>
4.23
4.24 @@ -172,7 +171,8 @@
4.25 <answer id="compat-i18n">
4.26 <p>
4.27 All texts are properly internationalized. The code cannot deal with
4.28 - calendars other than gregorian.
4.29 + calendars other than gregorian. XSL templates would be really hard to
4.30 + translate.
4.31 </p>
4.32 </answer>
4.33
4.34 @@ -221,7 +221,7 @@
4.35 <answer id="compat-version">
4.36 <p>
4.37 The module maintains backward compatibility for serialized
4.38 - top components. Usage of org.openide.options.SystemOption for storing
4.39 + top components. Usage of NbPreferences for storing
4.40 setting means compatibility with earlier and future versions of the module.
4.41 Unknown or unsupported components and properties from
4.42 <api name="RFC-2445" category="standard" type="import" group="dtd"/>
4.43 @@ -246,7 +246,7 @@
4.44 -->
4.45 <answer id="dep-jre">
4.46 <p>
4.47 - 1.4
4.48 + 1.5
4.49 </p>
4.50 </answer>
4.51
4.52 @@ -376,24 +376,7 @@
4.53 </question>
4.54 -->
4.55 <answer id="deploy-jar">
4.56 - <ul>
4.57 - <li>
4.58 - <api
4.59 - name="location-of-jcalendar"
4.60 - group="java.io.File"
4.61 - category="private"
4.62 - type="export"
4.63 - >modules/ext/jcalendar.jar</api>
4.64 - </li>
4.65 - <li>
4.66 - <api
4.67 - name="location-of-ical4j"
4.68 - group="java.io.File"
4.69 - category="private"
4.70 - type="export"
4.71 - >modules/ext/ical4j.jar</api>
4.72 - </li>
4.73 - </ul>
4.74 + Only module jar file.
4.75 </answer>
4.76
4.77
4.78 @@ -614,11 +597,7 @@
4.79 -->
4.80 <answer id="exec-reflection">
4.81 <p>
4.82 - Yes.
4.83 - <api type="import" group="java" name="javaHelpIntegrationAPI"
4.84 - category="private" url="http://www.netbeans.org/download/dev/javadoc/org-netbeans-modules-javahelp/overview-summary.html">
4.85 - org.netbeans.api.javahelp.Help.showHelp is called through reflection API.
4.86 - </api>
4.87 + No.
4.88 </p>
4.89 </answer>
4.90
4.91 @@ -805,7 +784,7 @@
4.92 -->
4.93 <answer id="perf-exit">
4.94 <p>
4.95 - Top component settings and module settings are serialized on exit.
4.96 + Top component settings are stored are serialized on exit.
4.97 </p>
4.98 </answer>
4.99
4.100 @@ -847,7 +826,7 @@
4.101 -->
4.102 <answer id="perf-mem">
4.103 <p>
4.104 - XXX no answer for perf-mem
4.105 + TODO no answer for perf-mem
4.106 </p>
4.107 </answer>
4.108
4.109 @@ -1112,7 +1091,7 @@
4.110 -->
4.111 <answer id="compat-deprecation">
4.112 <p>
4.113 - XXX no answer for compat-deprecation
4.114 + n/a
4.115 </p>
4.116 </answer>
4.117
5.1 --- a/tasklist.usertasks/build.xml Mon Dec 04 21:57:00 2006 +0000
5.2 +++ b/tasklist.usertasks/build.xml Mon Dec 04 21:59:57 2006 +0000
5.3 @@ -21,43 +21,6 @@
5.4
5.5 <import file="../../nbbuild/templates/projectized.xml"/>
5.6
5.7 - <target name="nbm" depends="init,netbeans" description="Build NBM archive.">
5.8 - <mkdir dir="build"/>
5.9 - <property name="nbm.target.cluster" value=""/> <!-- fallback -->
5.10 - <makenbm file="build/${nbm}"
5.11 - productdir="${cluster}"
5.12 - module="${module.jar}"
5.13 - homepage="${nbm.homepage}"
5.14 - distribution="http://${dist.base}/${nbm}"
5.15 - needsrestart="${nbm.needs.restart}"
5.16 - releasedate="${nbm.release.date}"
5.17 - moduleauthor="${nbm.module.author}"
5.18 - global="${nbm.is.global}"
5.19 - targetcluster="${nbm.target.cluster}">
5.20 - <license>
5.21 - <text>For the User Tasks module itself:</text>
5.22 - <file location="${license.file}"/>
5.23 - <text>For the bundled JCalendar runtime library:</text>
5.24 - <file location="../external/jcalendar-license.txt"/>
5.25 - <text>For the bundled iCal4j library:</text>
5.26 - <file location="../external/ical4j-license.txt"/>
5.27 - </license>
5.28 - <signature keystore="${keystore}" storepass="${storepass}" alias="${nbm_alias}"/>
5.29 - </makenbm>
5.30 - </target>
5.31 -
5.32 - <target name="netbeans-extra" depends="release"/>
5.33 -
5.34 - <target name="release" depends="init">
5.35 - <mkdir dir="${cluster}/modules/ext"/>
5.36 - <copy todir="${cluster}/modules/ext">
5.37 - <fileset dir="../external/">
5.38 - <include name="jcalendar*.jar"/>
5.39 - <include name="ical4j*.jar"/>
5.40 - </fileset>
5.41 - </copy>
5.42 - </target>
5.43 -
5.44 <target name="changelog">
5.45 </target>
5.46
5.47 @@ -79,5 +42,4 @@
5.48 </fileset>
5.49 </pmd>
5.50 </target>
5.51 -
5.52 </project>
6.1 --- a/tasklist.usertasks/doc/plans.ics Mon Dec 04 21:57:00 2006 +0000
6.2 +++ b/tasklist.usertasks/doc/plans.ics Mon Dec 04 21:59:57 2006 +0000
6.3 @@ -6,14 +6,291 @@
6.4 CREATED:20060420T174251Z
6.5 SUMMARY:NetBeans 6.0+ (1.30.?????)
6.6 PERCENT-COMPLETE:0
6.7 -X-NETBEANS-EFFORT:6070
6.8 -X-NETBEANS-SPENT-TIME:0
6.9 -LAST-MODIFIED:20061104T200426Z
6.10 +X-NETBEANS-EFFORT:7810
6.11 +X-NETBEANS-SPENT-TIME:260
6.12 +LAST-MODIFIED:20061123T205811Z
6.13 X-NETBEANS-PROGRESS-COMPUTED:yes
6.14 X-NETBEANS-EFFORT-COMPUTED:yes
6.15 X-NETBEANS-SPENT-TIME-COMPUTED:yes
6.16 COMPLETED:20060428T145235Z
6.17 DTSTAMP:20060420T174251Z
6.18 +X-NETBEANS-VALUES-COMPUTED:yes
6.19 +END:VTODO
6.20 +BEGIN:VTODO
6.21 +DTSTAMP:20061119T134909Z
6.22 +UID:nb1163944149140.290@timpc2/127.0.0.1
6.23 +CREATED:20061119T134909Z
6.24 +SUMMARY:Rethink "User Tasks" default view notion
6.25 +PERCENT-COMPLETE:0
6.26 +X-NETBEANS-EFFORT:60
6.27 +X-NETBEANS-SPENT-TIME:0
6.28 +LAST-MODIFIED:20061119T134943Z
6.29 +RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.30 +END:VTODO
6.31 +BEGIN:VTODO
6.32 +DTSTAMP:20061119T125337Z
6.33 +UID:nb1163940817044.289@timpc2/127.0.0.1
6.34 +CREATED:20061119T125337Z
6.35 +SUMMARY:"Split task" action
6.36 +PERCENT-COMPLETE:0
6.37 +X-NETBEANS-EFFORT:60
6.38 +X-NETBEANS-SPENT-TIME:0
6.39 +LAST-MODIFIED:20061119T125345Z
6.40 +RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.41 +END:VTODO
6.42 +BEGIN:VTODO
6.43 +DTSTAMP:20061118T182129Z
6.44 +UID:nb1163874089892.285@timpc2/127.0.0.1
6.45 +CREATED:20061118T182129Z
6.46 +SUMMARY:Icons
6.47 +PERCENT-COMPLETE:0
6.48 +X-NETBEANS-EFFORT:60
6.49 +X-NETBEANS-SPENT-TIME:0
6.50 +LAST-MODIFIED:20061118T182138Z
6.51 +URL:http://www.java-tutor.com/java/additional_java_swing_components.htm
6.52 +X-NETBEANS-LINE:1
6.53 +RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.54 +END:VTODO
6.55 +BEGIN:VTODO
6.56 +DTSTAMP:20061117T194245Z
6.57 +UID:nb1163792565710.305@timpc2/127.0.0.1
6.58 +CREATED:20061117T194245Z
6.59 +SUMMARY:Split time accounting from user tasks
6.60 +PERCENT-COMPLETE:0
6.61 +X-NETBEANS-EFFORT:60
6.62 +X-NETBEANS-SPENT-TIME:0
6.63 +LAST-MODIFIED:20061117T194258Z
6.64 +RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.65 +END:VTODO
6.66 +BEGIN:VTODO
6.67 +DTSTAMP:20061117T194157Z
6.68 +UID:nb1163792517120.303@timpc2/127.0.0.1
6.69 +CREATED:20061117T194157Z
6.70 +SUMMARY:Local menu for table headers
6.71 +PERCENT-COMPLETE:0
6.72 +X-NETBEANS-EFFORT:60
6.73 +X-NETBEANS-SPENT-TIME:0
6.74 +LAST-MODIFIED:20061117T194203Z
6.75 +RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.76 +END:VTODO
6.77 +BEGIN:VTODO
6.78 +DTSTAMP:20061115T200637Z
6.79 +UID:nb1163621197757.333@timpc2/127.0.0.1
6.80 +CREATED:20061115T200637Z
6.81 +SUMMARY:Text antialiasing
6.82 +PERCENT-COMPLETE:0
6.83 +X-NETBEANS-EFFORT:60
6.84 +X-NETBEANS-SPENT-TIME:0
6.85 +LAST-MODIFIED:20061115T200641Z
6.86 +RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.87 +END:VTODO
6.88 +BEGIN:VTODO
6.89 +DTSTAMP:20061115T115524Z
6.90 +UID:nb1163591724322.300@timpc2/127.0.0.1
6.91 +CREATED:20061115T115524Z
6.92 +SUMMARY:D&D-Improvements
6.93 +PERCENT-COMPLETE:0
6.94 +X-NETBEANS-EFFORT:300
6.95 +X-NETBEANS-SPENT-TIME:33
6.96 +LAST-MODIFIED:20061118T132725Z
6.97 +RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.98 +X-NETBEANS-PROGRESS-COMPUTED:yes
6.99 +X-NETBEANS-EFFORT-COMPUTED:yes
6.100 +X-NETBEANS-SPENT-TIME-COMPUTED:yes
6.101 +X-NETBEANS-VALUES-COMPUTED:yes
6.102 +END:VTODO
6.103 +BEGIN:VTODO
6.104 +DTSTAMP:20061113T211939Z
6.105 +UID:nb1163591735805.302@timpc2/127.0.0.1
6.106 +CREATED:20061113T211939Z
6.107 +SUMMARY:Better D&D
6.108 +PERCENT-COMPLETE:0
6.109 +X-NETBEANS-EFFORT:60
6.110 +X-NETBEANS-SPENT-TIME:0
6.111 +LAST-MODIFIED:20061113T211959Z
6.112 +URL:http://weblogs.java.net/blog/shan_man/archive/2006/01/first_class_dra
6.113 + .html
6.114 +X-NETBEANS-LINE:1
6.115 +RELATED-TO:nb1163591724322.300@timpc2/127.0.0.1
6.116 +END:VTODO
6.117 +BEGIN:VTODO
6.118 +DTSTAMP:20061113T212415Z
6.119 +UID:nb1163591739446.304@timpc2/127.0.0.1
6.120 +CREATED:20061113T212415Z
6.121 +SUMMARY:Images for D&D
6.122 +PERCENT-COMPLETE:0
6.123 +X-NETBEANS-EFFORT:60
6.124 +X-NETBEANS-SPENT-TIME:0
6.125 +LAST-MODIFIED:20061113T212427Z
6.126 +URL:http://www.javaworld.com/javaworld/javatips/jw-javatip114.html
6.127 +X-NETBEANS-LINE:1
6.128 +RELATED-TO:nb1163591724322.300@timpc2/127.0.0.1
6.129 +END:VTODO
6.130 +BEGIN:VTODO
6.131 +DTSTAMP:20061113T211500Z
6.132 +UID:nb1163591745022.308@timpc2/127.0.0.1
6.133 +CREATED:20061113T211500Z
6.134 +SUMMARY:Quicker scrolling while D&D
6.135 +PERCENT-COMPLETE:0
6.136 +X-NETBEANS-PROGRESS-COMPUTED:yes
6.137 +X-NETBEANS-EFFORT:120
6.138 +X-NETBEANS-EFFORT-COMPUTED:yes
6.139 +X-NETBEANS-SPENT-TIME:33
6.140 +X-NETBEANS-SPENT-TIME-COMPUTED:yes
6.141 +LAST-MODIFIED:20061118T132725Z
6.142 +URL:http://www.javalobby.org/java/forums/t53436.html
6.143 +X-NETBEANS-LINE:1
6.144 +RELATED-TO:nb1163591724322.300@timpc2/127.0.0.1
6.145 +X-NETBEANS-VALUES-COMPUTED:yes
6.146 +END:VTODO
6.147 +BEGIN:VTODO
6.148 +DTSTAMP:20061113T215654Z
6.149 +UID:nb1163591745022.309@timpc2/127.0.0.1
6.150 +CREATED:20061113T215654Z
6.151 +SUMMARY:Workaround
6.152 +PERCENT-COMPLETE:0
6.153 +X-NETBEANS-EFFORT:60
6.154 +X-NETBEANS-SPENT-TIME:33
6.155 +LAST-MODIFIED:20061113T220051Z
6.156 +RELATED-TO:nb1163591745022.308@timpc2/127.0.0.1
6.157 +END:VTODO
6.158 +BEGIN:VTODO
6.159 +DTSTAMP:20061113T213454Z
6.160 +UID:nb1163591745022.310@timpc2/127.0.0.1
6.161 +CREATED:20061113T213454Z
6.162 +SUMMARY:JDK Bug #6464450 (Linux only)
6.163 +PERCENT-COMPLETE:0
6.164 +X-NETBEANS-EFFORT:60
6.165 +X-NETBEANS-SPENT-TIME:0
6.166 +LAST-MODIFIED:20061113T213521Z
6.167 +URL:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6464450
6.168 +X-NETBEANS-LINE:1
6.169 +RELATED-TO:nb1163591745022.308@timpc2/127.0.0.1
6.170 +END:VTODO
6.171 +BEGIN:VTODO
6.172 +DTSTAMP:20061109T183857Z
6.173 +UID:nb1163591754558.312@timpc2/127.0.0.1
6.174 +CREATED:20061109T183857Z
6.175 +SUMMARY:Drop tasks between two other tasks
6.176 +PERCENT-COMPLETE:0
6.177 +X-NETBEANS-EFFORT:60
6.178 +X-NETBEANS-SPENT-TIME:0
6.179 +LAST-MODIFIED:20061118T181428Z
6.180 +RELATED-TO:nb1163591724322.300@timpc2/127.0.0.1
6.181 +URL:http://www.antonioshome.net/attic/treewrapper/
6.182 +X-NETBEANS-LINE:1
6.183 +END:VTODO
6.184 +BEGIN:VTODO
6.185 +DTSTAMP:20061115T103849Z
6.186 +UID:nb1163587129879.297@timpc2/127.0.0.1
6.187 +CREATED:20061115T103849Z
6.188 +SUMMARY:Bugfix: Translators do not honor settings for working hours
6.189 +PERCENT-COMPLETE:0
6.190 +X-NETBEANS-EFFORT:60
6.191 +X-NETBEANS-SPENT-TIME:7
6.192 +LAST-MODIFIED:20061115T121304Z
6.193 +RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.194 +END:VTODO
6.195 +BEGIN:VTODO
6.196 +DTSTAMP:20061115T103601Z
6.197 +UID:nb1163586961722.296@timpc2/127.0.0.1
6.198 +CREATED:20061115T103601Z
6.199 +SUMMARY:Simplify filters persistence
6.200 +PERCENT-COMPLETE:0
6.201 +X-NETBEANS-EFFORT:60
6.202 +X-NETBEANS-SPENT-TIME:0
6.203 +LAST-MODIFIED:20061115T103611Z
6.204 +RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.205 +END:VTODO
6.206 +BEGIN:VTODO
6.207 +DTSTAMP:20061114T205131Z
6.208 +UID:nb1163537491604.289@timpc2/127.0.0.1
6.209 +CREATED:20061114T205131Z
6.210 +SUMMARY:Compare to similar software
6.211 +PERCENT-COMPLETE:0
6.212 +X-NETBEANS-EFFORT:240
6.213 +X-NETBEANS-SPENT-TIME:0
6.214 +LAST-MODIFIED:20061123T205811Z
6.215 +RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.216 +X-NETBEANS-PROGRESS-COMPUTED:yes
6.217 +X-NETBEANS-EFFORT-COMPUTED:yes
6.218 +X-NETBEANS-SPENT-TIME-COMPUTED:yes
6.219 +X-NETBEANS-VALUES-COMPUTED:yes
6.220 +COMPLETED:20061118T140407Z
6.221 +END:VTODO
6.222 +BEGIN:VTODO
6.223 +DTSTAMP:20061123T205805Z
6.224 +UID:nb1164315485915.295@timpc2/127.0.0.1
6.225 +CREATED:20061123T205805Z
6.226 +SUMMARY:Visual Studio 2005
6.227 +PERCENT-COMPLETE:0
6.228 +X-NETBEANS-EFFORT:60
6.229 +X-NETBEANS-SPENT-TIME:0
6.230 +LAST-MODIFIED:20061123T205810Z
6.231 +RELATED-TO:nb1163537491604.289@timpc2/127.0.0.1
6.232 +END:VTODO
6.233 +BEGIN:VTODO
6.234 +DTSTAMP:20061119T193055Z
6.235 +UID:nb1163964655303.291@timpc2/127.0.0.1
6.236 +CREATED:20061119T193055Z
6.237 +SUMMARY:KArm
6.238 +PERCENT-COMPLETE:0
6.239 +X-NETBEANS-EFFORT:60
6.240 +X-NETBEANS-SPENT-TIME:0
6.241 +LAST-MODIFIED:20061119T193103Z
6.242 +URL:http://pim.kde.org/components/karm.php
6.243 +X-NETBEANS-LINE:422
6.244 +RELATED-TO:nb1163537491604.289@timpc2/127.0.0.1
6.245 +END:VTODO
6.246 +BEGIN:VTODO
6.247 +DTSTAMP:20061114T205142Z
6.248 +UID:nb1163537502539.290@timpc2/127.0.0.1
6.249 +CREATED:20061114T205142Z
6.250 +SUMMARY:XPlanner
6.251 +PERCENT-COMPLETE:0
6.252 +X-NETBEANS-EFFORT:0
6.253 +X-NETBEANS-SPENT-TIME:0
6.254 +LAST-MODIFIED:20061114T205626Z
6.255 +RELATED-TO:nb1163537491604.289@timpc2/127.0.0.1
6.256 +URL:http://www.xplanner.org/
6.257 +X-NETBEANS-LINE:1
6.258 +END:VTODO
6.259 +BEGIN:VTODO
6.260 +DTSTAMP:20061114T205559Z
6.261 +UID:nb1163537759617.292@timpc2/127.0.0.1
6.262 +CREATED:20061114T205559Z
6.263 +SUMMARY:Eclipse mylar
6.264 +PERCENT-COMPLETE:0
6.265 +X-NETBEANS-EFFORT:60
6.266 +X-NETBEANS-SPENT-TIME:0
6.267 +LAST-MODIFIED:20061114T205605Z
6.268 +RELATED-TO:nb1163537491604.289@timpc2/127.0.0.1
6.269 +END:VTODO
6.270 +BEGIN:VTODO
6.271 +DTSTAMP:20061114T205927Z
6.272 +UID:nb1163537967374.295@timpc2/127.0.0.1
6.273 +CREATED:20061114T205927Z
6.274 +SUMMARY:VIP task manager
6.275 +PERCENT-COMPLETE:0
6.276 +X-NETBEANS-EFFORT:60
6.277 +X-NETBEANS-SPENT-TIME:0
6.278 +LAST-MODIFIED:20061114T205937Z
6.279 +URL:http://www.taskmanagementsoft.com/
6.280 +X-NETBEANS-LINE:1
6.281 +RELATED-TO:nb1163537491604.289@timpc2/127.0.0.1
6.282 +END:VTODO
6.283 +BEGIN:VTODO
6.284 +DTSTAMP:20061113T121038Z
6.285 +UID:nb1163419838844.280@timpc2/127.0.0.1
6.286 +CREATED:20061113T121038Z
6.287 +SUMMARY:Table examples
6.288 +PERCENT-COMPLETE:0
6.289 +X-NETBEANS-EFFORT:60
6.290 +X-NETBEANS-SPENT-TIME:0
6.291 +LAST-MODIFIED:20061113T121047Z
6.292 +URL:http://www.java2s.com/Code/Java/Swing-Components/TreeTable.htm
6.293 +X-NETBEANS-LINE:1
6.294 +RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.295 END:VTODO
6.296 BEGIN:VTODO
6.297 DTSTAMP:20061104T200412Z
6.298 @@ -207,12 +484,14 @@
6.299 PERCENT-COMPLETE:0
6.300 X-NETBEANS-EFFORT:10
6.301 X-NETBEANS-SPENT-TIME:0
6.302 -LAST-MODIFIED:20061022T124837Z
6.303 +LAST-MODIFIED:20061117T195011Z
6.304 RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.305 DTSTAMP:20061007T104558Z
6.306 X-NETBEANS-PROGRESS-COMPUTED:yes
6.307 X-NETBEANS-EFFORT-COMPUTED:yes
6.308 X-NETBEANS-SPENT-TIME-COMPUTED:yes
6.309 +X-NETBEANS-VALUES-COMPUTED:yes
6.310 +COMPLETED:20061118T140407Z
6.311 END:VTODO
6.312 BEGIN:VTODO
6.313 DTSTAMP:20061022T124738Z
6.314 @@ -260,147 +539,128 @@
6.315 RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.316 END:VTODO
6.317 BEGIN:VTODO
6.318 +DTSTAMP:20061022T124404Z
6.319 +UID:nb1163518579283.288@timpc2/127.0.0.1
6.320 +CREATED:20061022T124404Z
6.321 +SUMMARY:Icon for "task in progress"/different icons for different task ty
6.322 + pes
6.323 +PERCENT-COMPLETE:0
6.324 +X-NETBEANS-EFFORT:120
6.325 +X-NETBEANS-SPENT-TIME:0
6.326 +LAST-MODIFIED:20061114T153632Z
6.327 +RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.328 +END:VTODO
6.329 +BEGIN:VTODO
6.330 +DTSTAMP:20061114T205322Z
6.331 +UID:nb1163537774273.294@timpc2/127.0.0.1
6.332 +CREATED:20061114T205322Z
6.333 +SUMMARY:Reports
6.334 +PERCENT-COMPLETE:0
6.335 +X-NETBEANS-EFFORT:60
6.336 +X-NETBEANS-SPENT-TIME:0
6.337 +LAST-MODIFIED:20061114T205328Z
6.338 +URL:http://www.xplanner.org/images/screenshots/statistics.jpg
6.339 +X-NETBEANS-LINE:236
6.340 +RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.341 +END:VTODO
6.342 +BEGIN:VTODO
6.343 +DTSTAMP:20060121T141928Z
6.344 +UID:nb1163792734867.307@timpc2/127.0.0.1
6.345 +CREATED:20060121T141928Z
6.346 +SUMMARY:(not User Tasks) #65594: Allow batch export of tasklists
6.347 +PERCENT-COMPLETE:0
6.348 +X-NETBEANS-EFFORT:480
6.349 +X-NETBEANS-SPENT-TIME:220
6.350 +LAST-MODIFIED:20060704T221124Z
6.351 +URL:http://tasklist.netbeans.org/issues/show_bug.cgi?id=65594
6.352 +X-NETBEANS-LINE:1
6.353 +RELATED-TO:nb1145554971896.272@timpc/127.0.0.1
6.354 +END:VTODO
6.355 +BEGIN:VTODO
6.356 UID:nb1137857799682.30@timpc/127.0.0.1
6.357 CREATED:20060121T153639Z
6.358 SUMMARY:NetBeans 6.0/promo-H (1.29.?????)
6.359 -PERCENT-COMPLETE:88
6.360 -X-NETBEANS-EFFORT:11690
6.361 -X-NETBEANS-SPENT-TIME:7429
6.362 -LAST-MODIFIED:20061106T173549Z
6.363 +PERCENT-COMPLETE:85
6.364 +X-NETBEANS-EFFORT:14350
6.365 +X-NETBEANS-SPENT-TIME:9348
6.366 +LAST-MODIFIED:20061202T230123Z
6.367 X-NETBEANS-PROGRESS-COMPUTED:yes
6.368 X-NETBEANS-EFFORT-COMPUTED:yes
6.369 X-NETBEANS-SPENT-TIME-COMPUTED:yes
6.370 X-NETBEANS-DUETIME:1159480800000
6.371 X-NETBEANS-DUE-SIGNALED:yes
6.372 DTSTAMP:20060121T153639Z
6.373 +COMPLETED:20061118T130219Z
6.374 +X-NETBEANS-VALUES-COMPUTED:yes
6.375 END:VTODO
6.376 BEGIN:VTODO
6.377 -DTSTAMP:20061102T192610Z
6.378 -UID:nb1162495570981.265@timpc2/127.0.0.1
6.379 -CREATED:20061102T192610Z
6.380 -SUMMARY:"Add User Task" from the editor should take the content of the li
6.381 - ne as summary
6.382 -PERCENT-COMPLETE:0
6.383 -X-NETBEANS-EFFORT:30
6.384 -X-NETBEANS-SPENT-TIME:0
6.385 -LAST-MODIFIED:20061102T192648Z
6.386 -RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.387 -END:VTODO
6.388 -BEGIN:VTODO
6.389 -DTSTAMP:20061030T213201Z
6.390 -UID:nb1162243921345.263@timpc2/127.0.0.1
6.391 -CREATED:20061030T213201Z
6.392 -SUMMARY:Bugfix: Cut/Paste does not seem to work
6.393 +DTSTAMP:20061116T214527Z
6.394 +UID:nb1163713527665.351@timpc2/127.0.0.1
6.395 +CREATED:20061116T214527Z
6.396 +SUMMARY:developer role for libs
6.397 PERCENT-COMPLETE:0
6.398 X-NETBEANS-EFFORT:60
6.399 X-NETBEANS-SPENT-TIME:0
6.400 -LAST-MODIFIED:20061101T212121Z
6.401 -RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.402 -END:VTODO
6.403 -BEGIN:VTODO
6.404 -DTSTAMP:20061022T124404Z
6.405 -UID:nb1161521044788.254@timpc2/127.0.0.1
6.406 -CREATED:20061022T124404Z
6.407 -SUMMARY:Icon for "task in progress"
6.408 -PERCENT-COMPLETE:0
6.409 -X-NETBEANS-EFFORT:120
6.410 -X-NETBEANS-SPENT-TIME:0
6.411 -LAST-MODIFIED:20061022T124554Z
6.412 -RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.413 -END:VTODO
6.414 -BEGIN:VTODO
6.415 -DTSTAMP:20061022T111754Z
6.416 -UID:nb1161515874341.248@timpc2/127.0.0.1
6.417 -CREATED:20061022T111754Z
6.418 -SUMMARY:#87378: Filter on priority failure
6.419 -PERCENT-COMPLETE:0
6.420 -X-NETBEANS-EFFORT:60
6.421 -X-NETBEANS-SPENT-TIME:0
6.422 -LAST-MODIFIED:20061022T111826Z
6.423 -URL:http://tasklist.netbeans.org/issues/show_bug.cgi?id=87378
6.424 +LAST-MODIFIED:20061123T183845Z
6.425 +URL:http://libs.netbeans.org/issues/show_bug.cgi?id=89513
6.426 X-NETBEANS-LINE:1
6.427 RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.428 END:VTODO
6.429 BEGIN:VTODO
6.430 -DTSTAMP:20061022T110102Z
6.431 -UID:nb1161514862636.247@timpc2/127.0.0.1
6.432 -CREATED:20061022T110102Z
6.433 -SUMMARY:Changing effort in the properties view does not refresh "remainin
6.434 - g effort" there
6.435 -PERCENT-COMPLETE:0
6.436 -X-NETBEANS-EFFORT:15
6.437 -X-NETBEANS-SPENT-TIME:0
6.438 -LAST-MODIFIED:20061022T110151Z
6.439 -RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.440 -END:VTODO
6.441 -BEGIN:VTODO
6.442 -DTSTAMP:20061016T170914Z
6.443 -UID:nb1161018554488.240@timpc2/127.0.0.1
6.444 -CREATED:20061016T170914Z
6.445 -SUMMARY:Export images for export formats
6.446 -PERCENT-COMPLETE:0
6.447 -X-NETBEANS-EFFORT:60
6.448 -X-NETBEANS-SPENT-TIME:0
6.449 -LAST-MODIFIED:20061022T124606Z
6.450 -RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.451 -END:VTODO
6.452 -BEGIN:VTODO
6.453 -DTSTAMP:20061009T211556Z
6.454 -UID:nb1160428556403.227@timpc2/127.0.0.1
6.455 -CREATED:20061009T211556Z
6.456 -SUMMARY:Add combobox for the duration properties
6.457 -PERCENT-COMPLETE:0
6.458 -X-NETBEANS-EFFORT:60
6.459 -X-NETBEANS-SPENT-TIME:0
6.460 -LAST-MODIFIED:20061009T211608Z
6.461 -RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.462 -END:VTODO
6.463 -BEGIN:VTODO
6.464 -UID:nb1150658712767.237@timpc/127.0.0.1
6.465 -CREATED:20060618T192512Z
6.466 -SUMMARY:ical4j as NB library module
6.467 -PERCENT-COMPLETE:0
6.468 -X-NETBEANS-EFFORT:60
6.469 -X-NETBEANS-SPENT-TIME:0
6.470 -LAST-MODIFIED:20060704T221124Z
6.471 -RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.472 -DTSTAMP:20060618T192512Z
6.473 -END:VTODO
6.474 -BEGIN:VTODO
6.475 -UID:nb1150658648754.236@timpc/127.0.0.1
6.476 -CREATED:20060618T192408Z
6.477 -SUMMARY:JCalendar as a NB library module
6.478 -PERCENT-COMPLETE:0
6.479 -X-NETBEANS-EFFORT:60
6.480 -X-NETBEANS-SPENT-TIME:22
6.481 -LAST-MODIFIED:20061007T102548Z
6.482 -RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.483 -DTSTAMP:20060618T192408Z
6.484 -END:VTODO
6.485 -BEGIN:VTODO
6.486 UID:nb1145736734171.295@timpc/127.0.0.1
6.487 CREATED:20060422T201214Z
6.488 SUMMARY:Since last commit
6.489 -PERCENT-COMPLETE:89
6.490 -X-NETBEANS-EFFORT:1265
6.491 -X-NETBEANS-SPENT-TIME:559
6.492 -LAST-MODIFIED:20061106T173549Z
6.493 +PERCENT-COMPLETE:60
6.494 +X-NETBEANS-EFFORT:3485
6.495 +X-NETBEANS-SPENT-TIME:2045
6.496 +LAST-MODIFIED:20061202T230123Z
6.497 RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.498 X-NETBEANS-PROGRESS-COMPUTED:yes
6.499 X-NETBEANS-EFFORT-COMPUTED:yes
6.500 X-NETBEANS-SPENT-TIME-COMPUTED:yes
6.501 COMPLETED:20060423T093054Z
6.502 DTSTAMP:20060422T201214Z
6.503 +X-NETBEANS-VALUES-COMPUTED:yes
6.504 +END:VTODO
6.505 +BEGIN:VTODO
6.506 +DTSTAMP:20061118T140615Z
6.507 +UID:nb1163858775555.227@timpc2/127.0.0.1
6.508 +CREATED:20061118T140615Z
6.509 +SUMMARY:Option to disable automatic saving
6.510 +PERCENT-COMPLETE:50
6.511 +X-NETBEANS-EFFORT:2400
6.512 +X-NETBEANS-SPENT-TIME:1376
6.513 +LAST-MODIFIED:20061202T230149Z
6.514 +RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.515 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061118T150626Z:148
6.516 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061119T110413Z:35
6.517 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061119T114014Z:8
6.518 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061119T114939Z:1
6.519 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061119T115207Z:11
6.520 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061119T120505Z:13
6.521 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061119T121943Z:94
6.522 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061119T135848Z:465
6.523 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061121T221556Z:65
6.524 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061122T231643Z:70
6.525 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061123T185913Z:7
6.526 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061123T200359Z:186
6.527 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061124T225355Z:18
6.528 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061126T225637Z:58
6.529 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061127T185504Z:7
6.530 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061202T132733Z:32
6.531 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061202T151109Z:70
6.532 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061202T223314Z:88
6.533 END:VTODO
6.534 BEGIN:VTODO
6.535 DTSTAMP:20061030T213236Z
6.536 UID:nb1162416885611.274@timpc2/127.0.0.1
6.537 CREATED:20061030T213236Z
6.538 -SUMMARY:Bugfix: schedule-unstable.ics cannot be open
6.539 +SUMMARY:Bugfix: schedule-unstable.ics cannot be open (ical4j 0.9.21 will
6.540 + solve this)
6.541 PERCENT-COMPLETE:0
6.542 X-NETBEANS-EFFORT:60
6.543 -X-NETBEANS-SPENT-TIME:21
6.544 -LAST-MODIFIED:20061101T215620Z
6.545 +X-NETBEANS-SPENT-TIME:96
6.546 +LAST-MODIFIED:20061117T192752Z
6.547 RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.548 URL:http://sourceforge.net/tracker/index.php?func=detail&aid=1588914&grou
6.549 p_id=107024&atid=646395
6.550 @@ -420,223 +680,305 @@
6.551 RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.552 END:VTODO
6.553 BEGIN:VTODO
6.554 -DTSTAMP:20061016T190333Z
6.555 -UID:nb1161025413928.242@timpc2/127.0.0.1
6.556 -CREATED:20061016T190333Z
6.557 -SUMMARY:Better time editor
6.558 +DTSTAMP:20061115T121312Z
6.559 +UID:nb1163592792465.313@timpc2/127.0.0.1
6.560 +CREATED:20061115T121312Z
6.561 +SUMMARY:arch.xml updated
6.562 PERCENT-COMPLETE:100
6.563 -X-NETBEANS-EFFORT:60
6.564 -X-NETBEANS-SPENT-TIME:40
6.565 -LAST-MODIFIED:20061101T211717Z
6.566 +X-NETBEANS-EFFORT:15
6.567 +X-NETBEANS-SPENT-TIME:0
6.568 +LAST-MODIFIED:20061115T121328Z
6.569 RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.570 -COMPLETED:20061101T211717Z
6.571 +COMPLETED:20061115T121328Z
6.572 END:VTODO
6.573 BEGIN:VTODO
6.574 -DTSTAMP:20061012T200545Z
6.575 -UID:nb1160683545205.255@timpc2/127.0.0.1
6.576 -CREATED:20061012T200545Z
6.577 -SUMMARY:Missing "New Subtask" action over the task list node
6.578 +DTSTAMP:20061114T162243Z
6.579 +UID:nb1163521363185.292@timpc2/127.0.0.1
6.580 +CREATED:20061114T162243Z
6.581 +SUMMARY:Integrate JCalendar 1.3.2
6.582 PERCENT-COMPLETE:100
6.583 -X-NETBEANS-EFFORT:5
6.584 +X-NETBEANS-EFFORT:10
6.585 X-NETBEANS-SPENT-TIME:0
6.586 -LAST-MODIFIED:20061012T200655Z
6.587 +LAST-MODIFIED:20061114T162255Z
6.588 RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.589 -COMPLETED:20061012T200655Z
6.590 +COMPLETED:20061114T162255Z
6.591 END:VTODO
6.592 BEGIN:VTODO
6.593 -DTSTAMP:20061009T211243Z
6.594 -UID:nb1160428363507.225@timpc2/127.0.0.1
6.595 -CREATED:20061009T211243Z
6.596 -SUMMARY:Remove "backup" option
6.597 +DTSTAMP:20061109T184022Z
6.598 +UID:nb1163097622331.284@timpc2/127.0.0.1
6.599 +CREATED:20061109T184022Z
6.600 +SUMMARY:Use the content of the current line as summary for tasks created
6.601 + from the editor
6.602 +PERCENT-COMPLETE:100
6.603 +X-NETBEANS-EFFORT:30
6.604 +X-NETBEANS-SPENT-TIME:0
6.605 +LAST-MODIFIED:20061113T122337Z
6.606 +RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.607 +COMPLETED:20061113T122334Z
6.608 +END:VTODO
6.609 +BEGIN:VTODO
6.610 +DTSTAMP:20061108T212952Z
6.611 +UID:nb1163021392930.276@timpc2/127.0.0.1
6.612 +CREATED:20061108T212952Z
6.613 +SUMMARY:#88730: The task Details text area should word wrap rather than s
6.614 + croll horizontally
6.615 PERCENT-COMPLETE:100
6.616 X-NETBEANS-EFFORT:5
6.617 X-NETBEANS-SPENT-TIME:2
6.618 -LAST-MODIFIED:20061009T211512Z
6.619 RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.620 -COMPLETED:20061009T211512Z
6.621 +LAST-MODIFIED:20061108T213251Z
6.622 +URL:http://www.netbeans.org/issues/show_bug.cgi?id=88730
6.623 +X-NETBEANS-LINE:1
6.624 +COMPLETED:20061108T213251Z
6.625 END:VTODO
6.626 BEGIN:VTODO
6.627 -DTSTAMP:20061008T204641Z
6.628 -UID:nb1160340401950.224@timpc2/127.0.0.1
6.629 -CREATED:20061008T204641Z
6.630 -SUMMARY:"Schedule" action
6.631 +DTSTAMP:20060315T173204Z
6.632 +UID:nb1163096666226.279@timpc2/127.0.0.1
6.633 +CREATED:20060315T173204Z
6.634 +SUMMARY:#73549: Support for history for last used folder in export action
6.635 +
6.636 PERCENT-COMPLETE:100
6.637 -X-NETBEANS-EFFORT:480
6.638 -X-NETBEANS-SPENT-TIME:61
6.639 -LAST-MODIFIED:20061012T200542Z
6.640 +X-NETBEANS-EFFORT:120
6.641 +X-NETBEANS-SPENT-TIME:87
6.642 +LAST-MODIFIED:20061109T183500Z
6.643 +URL:http://tasklist.netbeans.org/issues/show_bug.cgi?id=73549
6.644 +X-NETBEANS-LINE:1
6.645 +X-NETBEANS-OWNER:tim
6.646 RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.647 -COMPLETED:20061012T200542Z
6.648 +COMPLETED:20061109T183500Z
6.649 END:VTODO
6.650 BEGIN:VTODO
6.651 -UID:nb1160232278680.253@timpc2/127.0.0.1
6.652 -CREATED:20061007T144438Z
6.653 -SUMMARY:New simple export format
6.654 +DTSTAMP:20061102T192610Z
6.655 +UID:nb1163420459793.283@timpc2/127.0.0.1
6.656 +CREATED:20061102T192610Z
6.657 +SUMMARY:"Add User Task" from the editor should take the content of the li
6.658 + ne as summary
6.659 +PERCENT-COMPLETE:100
6.660 +X-NETBEANS-EFFORT:30
6.661 +X-NETBEANS-SPENT-TIME:0
6.662 +LAST-MODIFIED:20061113T122102Z
6.663 +RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.664 +COMPLETED:20061113T122102Z
6.665 +END:VTODO
6.666 +BEGIN:VTODO
6.667 +DTSTAMP:20061111T115558Z
6.668 +UID:nb1163420600553.441@timpc2/127.0.0.1
6.669 +CREATED:20061111T115558Z
6.670 +SUMMARY:Link instead of the button "Tell Me How to Add Task to Source..."
6.671 + in the "New Task" dialog
6.672 +PERCENT-COMPLETE:100
6.673 +X-NETBEANS-EFFORT:30
6.674 +X-NETBEANS-SPENT-TIME:58
6.675 +LAST-MODIFIED:20061113T132212Z
6.676 +RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.677 +COMPLETED:20061113T132212Z
6.678 +END:VTODO
6.679 +BEGIN:VTODO
6.680 +DTSTAMP:20060618T192408Z
6.681 +UID:nb1163452278908.283@timpc2/127.0.0.1
6.682 +CREATED:20060618T192408Z
6.683 +SUMMARY:JCalendar as a NB library module
6.684 PERCENT-COMPLETE:100
6.685 X-NETBEANS-EFFORT:60
6.686 -X-NETBEANS-SPENT-TIME:63
6.687 -LAST-MODIFIED:20061007T161802Z
6.688 +X-NETBEANS-SPENT-TIME:69
6.689 +LAST-MODIFIED:20061114T153151Z
6.690 RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.691 -DESCRIPTION:Exports tasks as <ul>/<li> combination
6.692 -COMPLETED:20061007T161802Z
6.693 -DTSTAMP:20061007T144438Z
6.694 +COMPLETED:20061114T153151Z
6.695 END:VTODO
6.696 BEGIN:VTODO
6.697 -DTSTAMP:20061015T122131Z
6.698 -UID:nb1160942674876.239@timpc2/127.0.0.1
6.699 -CREATED:20061015T122131Z
6.700 -SUMMARY:Prefs for working hours (start/end pause/working day)
6.701 +DTSTAMP:20060618T192512Z
6.702 +UID:nb1163452369430.285@timpc2/127.0.0.1
6.703 +CREATED:20060618T192512Z
6.704 +SUMMARY:ical4j as NB library module
6.705 PERCENT-COMPLETE:100
6.706 -X-NETBEANS-EFFORT:240
6.707 -X-NETBEANS-SPENT-TIME:240
6.708 -LAST-MODIFIED:20061106T173549Z
6.709 +X-NETBEANS-EFFORT:60
6.710 +X-NETBEANS-SPENT-TIME:8
6.711 +LAST-MODIFIED:20061114T153150Z
6.712 RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.713 -COMPLETED:20061106T173549Z
6.714 +COMPLETED:20061114T153150Z
6.715 END:VTODO
6.716 BEGIN:VTODO
6.717 -DTSTAMP:20061009T211526Z
6.718 -UID:nb1161513430852.246@timpc2/127.0.0.1
6.719 -CREATED:20061009T211526Z
6.720 -SUMMARY:Remove extended property editor for durations
6.721 +DTSTAMP:20061009T211556Z
6.722 +UID:nb1163519007919.290@timpc2/127.0.0.1
6.723 +CREATED:20061009T211556Z
6.724 +SUMMARY:Add combobox for the duration properties
6.725 PERCENT-COMPLETE:100
6.726 -X-NETBEANS-EFFORT:30
6.727 -X-NETBEANS-SPENT-TIME:28
6.728 -LAST-MODIFIED:20061022T110645Z
6.729 +X-NETBEANS-EFFORT:60
6.730 +X-NETBEANS-SPENT-TIME:13
6.731 +LAST-MODIFIED:20061114T165917Z
6.732 RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.733 -COMPLETED:20061022T110645Z
6.734 +COMPLETED:20061114T165917Z
6.735 END:VTODO
6.736 BEGIN:VTODO
6.737 -DTSTAMP:20061012T175532Z
6.738 -UID:nb1161516391585.251@timpc2/127.0.0.1
6.739 -CREATED:20061012T175532Z
6.740 -SUMMARY:Fix wrong sorting order
6.741 +DTSTAMP:20061114T162501Z
6.742 +UID:nb1163523569489.295@timpc2/127.0.0.1
6.743 +CREATED:20061114T162501Z
6.744 +SUMMARY:Inform user about detected inactivity
6.745 PERCENT-COMPLETE:100
6.746 -X-NETBEANS-EFFORT:60
6.747 -X-NETBEANS-SPENT-TIME:42
6.748 -LAST-MODIFIED:20061022T120849Z
6.749 +X-NETBEANS-EFFORT:20
6.750 +X-NETBEANS-SPENT-TIME:1
6.751 +LAST-MODIFIED:20061114T174442Z
6.752 RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.753 -COMPLETED:20061022T120849Z
6.754 +COMPLETED:20061114T174442Z
6.755 END:VTODO
6.756 BEGIN:VTODO
6.757 -DTSTAMP:20061015T104147Z
6.758 -UID:nb1161520810353.253@timpc2/127.0.0.1
6.759 -CREATED:20061015T104147Z
6.760 -SUMMARY:"Move up" does not scroll to the new task location
6.761 -PERCENT-COMPLETE:100
6.762 -X-NETBEANS-EFFORT:20
6.763 -X-NETBEANS-SPENT-TIME:3
6.764 -LAST-MODIFIED:20061022T124357Z
6.765 -RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.766 -COMPLETED:20061022T124357Z
6.767 -END:VTODO
6.768 -BEGIN:VTODO
6.769 -DTSTAMP:20061015T121802Z
6.770 -UID:nb1162049918742.266@timpc2/127.0.0.1
6.771 -CREATED:20061015T121802Z
6.772 -SUMMARY:Use NB pref API
6.773 -PERCENT-COMPLETE:100
6.774 -X-NETBEANS-PROGRESS-COMPUTED:yes
6.775 -X-NETBEANS-EFFORT:50
6.776 -X-NETBEANS-EFFORT-COMPUTED:yes
6.777 -X-NETBEANS-SPENT-TIME:52
6.778 -X-NETBEANS-SPENT-TIME-COMPUTED:yes
6.779 -LAST-MODIFIED:20061028T164116Z
6.780 -URL:http://www.netbeans.org/project/www/download/dev/javadoc/org-openide-
6.781 - util/org/openide/util/doc-files/preferences.html
6.782 -X-NETBEANS-LINE:1
6.783 -RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.784 -COMPLETED:20061030T213144Z
6.785 -END:VTODO
6.786 -BEGIN:VTODO
6.787 -DTSTAMP:20061028T153202Z
6.788 -UID:nb1162049918743.267@timpc2/127.0.0.1
6.789 -CREATED:20061028T153202Z
6.790 -SUMMARY:Remove dep on org.openide.options
6.791 -PERCENT-COMPLETE:100
6.792 -X-NETBEANS-EFFORT:5
6.793 -X-NETBEANS-SPENT-TIME:3
6.794 -LAST-MODIFIED:20061028T154811Z
6.795 -RELATED-TO:nb1162049918742.266@timpc2/127.0.0.1
6.796 -COMPLETED:20061028T154811Z
6.797 -END:VTODO
6.798 -BEGIN:VTODO
6.799 -DTSTAMP:20061028T153226Z
6.800 -UID:nb1162049918743.268@timpc2/127.0.0.1
6.801 -CREATED:20061028T153226Z
6.802 -SUMMARY:Remove .settings file
6.803 -PERCENT-COMPLETE:100
6.804 -X-NETBEANS-EFFORT:5
6.805 -X-NETBEANS-SPENT-TIME:0
6.806 -LAST-MODIFIED:20061028T161557Z
6.807 -RELATED-TO:nb1162049918742.266@timpc2/127.0.0.1
6.808 -COMPLETED:20061028T161557Z
6.809 -END:VTODO
6.810 -BEGIN:VTODO
6.811 -DTSTAMP:20061028T153251Z
6.812 -UID:nb1162049918743.269@timpc2/127.0.0.1
6.813 -CREATED:20061028T153251Z
6.814 -SUMMARY:Update mf-layer.xml
6.815 -PERCENT-COMPLETE:100
6.816 -X-NETBEANS-EFFORT:5
6.817 -X-NETBEANS-SPENT-TIME:1
6.818 -LAST-MODIFIED:20061028T154500Z
6.819 -RELATED-TO:nb1162049918742.266@timpc2/127.0.0.1
6.820 -COMPLETED:20061028T154500Z
6.821 -END:VTODO
6.822 -BEGIN:VTODO
6.823 -DTSTAMP:20061028T153333Z
6.824 -UID:nb1162049918743.270@timpc2/127.0.0.1
6.825 -CREATED:20061028T153333Z
6.826 -SUMMARY:Settings INSTANCE. Does not extend SystemOption
6.827 -DESCRIPTION:private static Preferences getPreferences() {\n retur
6.828 - n NbPreferences.forModule(Settings.class)\;\n }\npublic final class S
6.829 - ettings {\n private static final Settings INSTANCE = new Settings()\
6.830 - ;\n public boolean getSkipComments() {\n // XXX I did a spectac
6.831 - ularly poor job naming this method.\n return getPreferences().get
6.832 - Boolean(PROP_SCAN_SKIP\, false)\;\n }
6.833 -PERCENT-COMPLETE:100
6.834 -X-NETBEANS-EFFORT:20
6.835 -X-NETBEANS-SPENT-TIME:28
6.836 -LAST-MODIFIED:20061028T164116Z
6.837 -RELATED-TO:nb1162049918742.266@timpc2/127.0.0.1
6.838 -COMPLETED:20061028T164116Z
6.839 -END:VTODO
6.840 -BEGIN:VTODO
6.841 -DTSTAMP:20061028T160637Z
6.842 -UID:nb1162051597513.271@timpc2/127.0.0.1
6.843 -CREATED:20061028T160637Z
6.844 -SUMMARY:Document usage of options
6.845 -PERCENT-COMPLETE:100
6.846 -X-NETBEANS-EFFORT:15
6.847 -X-NETBEANS-SPENT-TIME:20
6.848 -LAST-MODIFIED:20061028T163631Z
6.849 -RELATED-TO:nb1162049918742.266@timpc2/127.0.0.1
6.850 -COMPLETED:20061028T163631Z
6.851 -END:VTODO
6.852 -BEGIN:VTODO
6.853 -DTSTAMP:20061028T161521Z
6.854 -UID:nb1162416036982.267@timpc2/127.0.0.1
6.855 -CREATED:20061028T161521Z
6.856 -SUMMARY:Bugfix: deleting a task does not stop it
6.857 +DTSTAMP:20061022T110102Z
6.858 +UID:nb1163526445340.297@timpc2/127.0.0.1
6.859 +CREATED:20061022T110102Z
6.860 +SUMMARY:Changing effort in the properties view does not refresh "remainin
6.861 + g effort" there
6.862 PERCENT-COMPLETE:100
6.863 X-NETBEANS-EFFORT:15
6.864 X-NETBEANS-SPENT-TIME:1
6.865 -LAST-MODIFIED:20061101T212109Z
6.866 +LAST-MODIFIED:20061114T174836Z
6.867 RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.868 -COMPLETED:20061101T212040Z
6.869 +COMPLETED:20061114T174836Z
6.870 END:VTODO
6.871 BEGIN:VTODO
6.872 -DTSTAMP:20061028T143830Z
6.873 -UID:nb1162416859468.272@timpc2/127.0.0.1
6.874 -CREATED:20061028T143830Z
6.875 -SUMMARY:#87939: Importing class hangs editor
6.876 +DTSTAMP:20061030T213201Z
6.877 +UID:nb1163526908687.299@timpc2/127.0.0.1
6.878 +CREATED:20061030T213201Z
6.879 +SUMMARY:Bugfix: Cut/Paste does not seem to work
6.880 PERCENT-COMPLETE:100
6.881 X-NETBEANS-EFFORT:60
6.882 -X-NETBEANS-SPENT-TIME:0
6.883 -LAST-MODIFIED:20061101T213421Z
6.884 -URL:http://www.netbeans.org/issues/show_bug.cgi?id=87939
6.885 +X-NETBEANS-SPENT-TIME:17
6.886 +LAST-MODIFIED:20061114T210502Z
6.887 +RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.888 +COMPLETED:20061114T210502Z
6.889 +END:VTODO
6.890 +BEGIN:VTODO
6.891 +DTSTAMP:20061022T111754Z
6.892 +UID:nb1163538557249.297@timpc2/127.0.0.1
6.893 +CREATED:20061022T111754Z
6.894 +SUMMARY:#87378: Filter on priority failure
6.895 +PERCENT-COMPLETE:100
6.896 +X-NETBEANS-EFFORT:60
6.897 +X-NETBEANS-SPENT-TIME:88
6.898 +LAST-MODIFIED:20061115T100243Z
6.899 +URL:http://tasklist.netbeans.org/issues/show_bug.cgi?id=87378
6.900 X-NETBEANS-LINE:1
6.901 RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.902 -COMPLETED:20061101T213421Z
6.903 +COMPLETED:20061115T100243Z
6.904 +END:VTODO
6.905 +BEGIN:VTODO
6.906 +DTSTAMP:20061016T170914Z
6.907 +UID:nb1163584971396.295@timpc2/127.0.0.1
6.908 +CREATED:20061016T170914Z
6.909 +SUMMARY:Export images for export formats
6.910 +PERCENT-COMPLETE:100
6.911 +X-NETBEANS-EFFORT:60
6.912 +X-NETBEANS-SPENT-TIME:49
6.913 +LAST-MODIFIED:20061115T112052Z
6.914 +RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.915 +COMPLETED:20061115T112052Z
6.916 +END:VTODO
6.917 +BEGIN:VTODO
6.918 +DTSTAMP:20061016T172526Z
6.919 +UID:nb1163590266721.299@timpc2/127.0.0.1
6.920 +CREATED:20061016T172526Z
6.921 +SUMMARY:Bugfix (not in IZ): GoToUserTask is not updated if the associated
6.922 + file is changed
6.923 +PERCENT-COMPLETE:100
6.924 +X-NETBEANS-EFFORT:60
6.925 +X-NETBEANS-SPENT-TIME:1
6.926 +LAST-MODIFIED:20061115T113049Z
6.927 +COMPLETED:20061115T113049Z
6.928 +RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.929 +END:VTODO
6.930 +BEGIN:VTODO
6.931 +DTSTAMP:20061114T161752Z
6.932 +UID:nb1163592866124.315@timpc2/127.0.0.1
6.933 +CREATED:20061114T161752Z
6.934 +SUMMARY:Only one checkbox "compute automatically" instead of three for ef
6.935 + fort\, progress and spent time
6.936 +PERCENT-COMPLETE:100
6.937 +X-NETBEANS-EFFORT:60
6.938 +X-NETBEANS-SPENT-TIME:145
6.939 +LAST-MODIFIED:20061115T200249Z
6.940 +RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.941 +COMPLETED:20061115T200249Z
6.942 +END:VTODO
6.943 +BEGIN:VTODO
6.944 +DTSTAMP:20061116T205337Z
6.945 +UID:nb1163792505402.302@timpc2/127.0.0.1
6.946 +CREATED:20061116T205337Z
6.947 +SUMMARY:IAE
6.948 +DESCRIPTION:java.lang.IllegalStateException: This must happen in the even
6.949 + t thread!\n at org.openide.awt.Actions$Bridge.propertyChange(Acti
6.950 + ons.java:509)\n at java.beans.PropertyChangeSupport.firePropertyC
6.951 + hange(PropertyChangeSupport.java:333)\n at java.beans.PropertyCha
6.952 + ngeSupport.firePropertyChange(PropertyChangeSupport.java:270)\n a
6.953 + t org.openide.util.SharedClassObject.firePropertyChange(SharedClassObjec
6.954 + t.java:432)\n at org.openide.util.SharedClassObject.putProperty(S
6.955 + haredClassObject.java:307)\n at org.openide.util.actions.SystemAc
6.956 + tion.setEnabled(SystemAction.java:125)\n at org.openide.util.acti
6.957 + ons.CallbackSystemAction.updateEnabled(CallbackSystemAction.java:133)\n
6.958 + at org.openide.util.actions.CallbackSystemAction.access$300(Callb
6.959 + ackSystemAction.java:52)\n at org.openide.util.actions.CallbackSy
6.960 + stemAction$ActionDelegateListener.propertyChange(CallbackSystemAction.ja
6.961 + va:492)\n at java.beans.PropertyChangeSupport.firePropertyChange(
6.962 + PropertyChangeSupport.java:333)\n at java.beans.PropertyChangeSup
6.963 + port.firePropertyChange(PropertyChangeSupport.java:270)\n at java
6.964 + x.swing.AbstractAction.firePropertyChange(AbstractAction.java:178)\n
6.965 + at javax.swing.AbstractAction.setEnabled(AbstractAction.java:138)\n
6.966 + at org.netbeans.modules.tasklist.usertasks.actions.UTPasteAction.
6.967 + valueChanged(UTPasteAction.java:51)\n at javax.swing.DefaultListS
6.968 + electionModel.fireValueChanged(DefaultListSelectionModel.java:187)\n
6.969 + at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultLis
6.970 + tSelectionModel.java:167)\n at javax.swing.DefaultListSelectionMo
6.971 + del.fireValueChanged(DefaultListSelectionModel.java:214)\n at jav
6.972 + ax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionM
6.973 + odel.java:408)\n at javax.swing.DefaultListSelectionModel.changeS
6.974 + election(DefaultListSelectionModel.java:417)\n at javax.swing.Def
6.975 + aultListSelectionModel.setSelectionInterval(DefaultListSelectionModel.ja
6.976 + va:441)\n at org.netbeans.modules.tasklist.usertasks.treetable.Tr
6.977 + eeTable.select(TreeTable.java:313)\n at org.netbeans.modules.task
6.978 + list.usertasks.actions.UTDeleteAction.actionPerformed(UTDeleteAction.jav
6.979 + a:138)\n at org.openide.util.actions.CallbackSystemAction$Delegat
6.980 + eAction$1.run(CallbackSystemAction.java:545)\n at org.netbeans.mo
6.981 + dules.openide.util.ActionsBridge$ActionRunnable.actionPerformed(ActionsB
6.982 + ridge.java:89)\n at org.netbeans.core.ModuleActions.invokeAction(
6.983 + ModuleActions.java:82)\n at org.netbeans.modules.openide.actions.
6.984 + ActionsBridgeImpl.invokeAction(ActionsBridgeImpl.java:30)\n at or
6.985 + g.netbeans.modules.openide.util.ActionsBridge$ActionRunnable.doRun(Actio
6.986 + nsBridge.java:80)\n at org.netbeans.modules.openide.util.ActionsB
6.987 + ridge$1.run(ActionsBridge.java:49)\n at org.openide.util.RequestP
6.988 + rocessor$Task.run(RequestProcessor.java:541)\n at org.openide.uti
6.989 + l.RequestProcessor$Processor.run(RequestProcessor.java:963)\n16.11.2006
6.990 + 21:53:00 org.netbeans.modules.tasklist.usertasks.model.UserTaskList read
6.991 + Document
6.992 +PERCENT-COMPLETE:100
6.993 +X-NETBEANS-EFFORT:60
6.994 +X-NETBEANS-SPENT-TIME:5
6.995 +LAST-MODIFIED:20061117T194145Z
6.996 +COMPLETED:20061117T194142Z
6.997 +RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.998 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061117T203551Z:5
6.999 +END:VTODO
6.1000 +BEGIN:VTODO
6.1001 +DTSTAMP:20061119T120309Z
6.1002 +UID:nb1163940859983.291@timpc2/127.0.0.1
6.1003 +CREATED:20061119T120309Z
6.1004 +SUMMARY:eliminate e.printStackTrace() calls
6.1005 +PERCENT-COMPLETE:100
6.1006 +X-NETBEANS-EFFORT:30
6.1007 +X-NETBEANS-SPENT-TIME:3
6.1008 +LAST-MODIFIED:20061119T125800Z
6.1009 +RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.1010 +COMPLETED:20061119T125755Z
6.1011 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061119T135421Z:3
6.1012 +END:VTODO
6.1013 +BEGIN:VTODO
6.1014 +DTSTAMP:20061119T112928Z
6.1015 +UID:nb1164307380980.294@timpc2/127.0.0.1
6.1016 +CREATED:20061119T112928Z
6.1017 +SUMMARY:"Clear URL" button for the "New Task" dialog
6.1018 +PERCENT-COMPLETE:0
6.1019 +X-NETBEANS-EFFORT:60
6.1020 +X-NETBEANS-SPENT-TIME:20
6.1021 +LAST-MODIFIED:20061123T190359Z
6.1022 +RELATED-TO:nb1145736734171.295@timpc/127.0.0.1
6.1023 +X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20061123T194302Z:20
6.1024 END:VTODO
6.1025 BEGIN:VTODO
6.1026 UID:nb1145292710486.268@timpc/127.0.0.1
6.1027 @@ -780,21 +1122,6 @@
6.1028 DTSTAMP:20060319T193903Z
6.1029 END:VTODO
6.1030 BEGIN:VTODO
6.1031 -UID:nb1142443924884.72@timpc/127.0.0.1
6.1032 -CREATED:20060315T173204Z
6.1033 -SUMMARY:Enhancement #73549: Support for history for last used folder in e
6.1034 - xport action
6.1035 -PERCENT-COMPLETE:65
6.1036 -X-NETBEANS-EFFORT:120
6.1037 -X-NETBEANS-SPENT-TIME:77
6.1038 -LAST-MODIFIED:20060704T221124Z
6.1039 -URL:http://tasklist.netbeans.org/issues/show_bug.cgi?id=73549
6.1040 -X-NETBEANS-LINE:1
6.1041 -RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.1042 -X-NETBEANS-OWNER:tim
6.1043 -DTSTAMP:20060315T173204Z
6.1044 -END:VTODO
6.1045 -BEGIN:VTODO
6.1046 UID:nb1140955666906.71@timpc/127.0.0.1
6.1047 CREATED:20060226T120746Z
6.1048 SUMMARY:Views will not be repainted after changing the number of working
6.1049 @@ -856,6 +1183,8 @@
6.1050 X-NETBEANS-EFFORT-COMPUTED:yes
6.1051 X-NETBEANS-SPENT-TIME-COMPUTED:yes
6.1052 DTSTAMP:20060121T142106Z
6.1053 +COMPLETED:20061118T130219Z
6.1054 +X-NETBEANS-VALUES-COMPUTED:yes
6.1055 PRIORITY:2
6.1056 END:VTODO
6.1057 BEGIN:VTODO
6.1058 @@ -910,6 +1239,7 @@
6.1059 URL:http://openide.netbeans.org/tutorial/reviews/opinions_71871.html
6.1060 X-NETBEANS-LINE:1
6.1061 DTSTAMP:20060130T201406Z
6.1062 +X-NETBEANS-VALUES-COMPUTED:yes
6.1063 END:VTODO
6.1064 BEGIN:VTODO
6.1065 UID:nb1138652062224.39@timpc/127.0.0.1
6.1066 @@ -1196,15 +1526,223 @@
6.1067 DTSTAMP:20061003T102757Z
6.1068 END:VTODO
6.1069 BEGIN:VTODO
6.1070 -DTSTAMP:20061016T172526Z
6.1071 -UID:nb1161548374689.254@timpc2/127.0.0.1
6.1072 -CREATED:20061016T172526Z
6.1073 -SUMMARY:Bug: GoToUserTask is not updated if the associated file is change
6.1074 - d
6.1075 -PERCENT-COMPLETE:0
6.1076 +DTSTAMP:20061016T190333Z
6.1077 +UID:nb1162835088965.310@timpc2/127.0.0.1
6.1078 +CREATED:20061016T190333Z
6.1079 +SUMMARY:Better time editor
6.1080 +PERCENT-COMPLETE:100
6.1081 +X-NETBEANS-EFFORT:60
6.1082 +X-NETBEANS-SPENT-TIME:40
6.1083 +LAST-MODIFIED:20061101T211717Z
6.1084 +COMPLETED:20061101T211717Z
6.1085 +RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.1086 +END:VTODO
6.1087 +BEGIN:VTODO
6.1088 +DTSTAMP:20061012T200545Z
6.1089 +UID:nb1162835088966.311@timpc2/127.0.0.1
6.1090 +CREATED:20061012T200545Z
6.1091 +SUMMARY:Missing "New Subtask" action over the task list node
6.1092 +PERCENT-COMPLETE:100
6.1093 +X-NETBEANS-EFFORT:5
6.1094 +X-NETBEANS-SPENT-TIME:0
6.1095 +LAST-MODIFIED:20061012T200655Z
6.1096 +COMPLETED:20061012T200655Z
6.1097 +RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.1098 +END:VTODO
6.1099 +BEGIN:VTODO
6.1100 +DTSTAMP:20061009T211243Z
6.1101 +UID:nb1162835088966.312@timpc2/127.0.0.1
6.1102 +CREATED:20061009T211243Z
6.1103 +SUMMARY:Remove "backup" option
6.1104 +PERCENT-COMPLETE:100
6.1105 +X-NETBEANS-EFFORT:5
6.1106 +X-NETBEANS-SPENT-TIME:2
6.1107 +LAST-MODIFIED:20061009T211512Z
6.1108 +COMPLETED:20061009T211512Z
6.1109 +RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.1110 +END:VTODO
6.1111 +BEGIN:VTODO
6.1112 +DTSTAMP:20061008T204641Z
6.1113 +UID:nb1162835088966.313@timpc2/127.0.0.1
6.1114 +CREATED:20061008T204641Z
6.1115 +SUMMARY:"Schedule" action
6.1116 +PERCENT-COMPLETE:100
6.1117 +X-NETBEANS-EFFORT:480
6.1118 +X-NETBEANS-SPENT-TIME:61
6.1119 +LAST-MODIFIED:20061012T200542Z
6.1120 +COMPLETED:20061012T200542Z
6.1121 +RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.1122 +END:VTODO
6.1123 +BEGIN:VTODO
6.1124 +DTSTAMP:20061007T144438Z
6.1125 +UID:nb1162835088966.314@timpc2/127.0.0.1
6.1126 +CREATED:20061007T144438Z
6.1127 +SUMMARY:New simple export format
6.1128 +DESCRIPTION:Exports tasks as <ul>/<li> combination
6.1129 +PERCENT-COMPLETE:100
6.1130 +X-NETBEANS-EFFORT:60
6.1131 +X-NETBEANS-SPENT-TIME:63
6.1132 +LAST-MODIFIED:20061007T161802Z
6.1133 +COMPLETED:20061007T161802Z
6.1134 +RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.1135 +END:VTODO
6.1136 +BEGIN:VTODO
6.1137 +DTSTAMP:20061015T122131Z
6.1138 +UID:nb1162835088967.315@timpc2/127.0.0.1
6.1139 +CREATED:20061015T122131Z
6.1140 +SUMMARY:Prefs for working hours (start/end pause/working day)
6.1141 +PERCENT-COMPLETE:100
6.1142 +X-NETBEANS-EFFORT:240
6.1143 +X-NETBEANS-SPENT-TIME:240
6.1144 +LAST-MODIFIED:20061106T173549Z
6.1145 +COMPLETED:20061106T173549Z
6.1146 +RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.1147 +END:VTODO
6.1148 +BEGIN:VTODO
6.1149 +DTSTAMP:20061009T211526Z
6.1150 +UID:nb1162835088967.316@timpc2/127.0.0.1
6.1151 +CREATED:20061009T211526Z
6.1152 +SUMMARY:Remove extended property editor for durations
6.1153 +PERCENT-COMPLETE:100
6.1154 +X-NETBEANS-EFFORT:30
6.1155 +X-NETBEANS-SPENT-TIME:28
6.1156 +LAST-MODIFIED:20061022T110645Z
6.1157 +COMPLETED:20061022T110645Z
6.1158 +RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.1159 +END:VTODO
6.1160 +BEGIN:VTODO
6.1161 +DTSTAMP:20061012T175532Z
6.1162 +UID:nb1162835088967.317@timpc2/127.0.0.1
6.1163 +CREATED:20061012T175532Z
6.1164 +SUMMARY:Fix wrong sorting order
6.1165 +PERCENT-COMPLETE:100
6.1166 +X-NETBEANS-EFFORT:60
6.1167 +X-NETBEANS-SPENT-TIME:42
6.1168 +LAST-MODIFIED:20061022T120849Z
6.1169 +COMPLETED:20061022T120849Z
6.1170 +RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.1171 +END:VTODO
6.1172 +BEGIN:VTODO
6.1173 +DTSTAMP:20061015T104147Z
6.1174 +UID:nb1162835088968.318@timpc2/127.0.0.1
6.1175 +CREATED:20061015T104147Z
6.1176 +SUMMARY:"Move up" does not scroll to the new task location
6.1177 +PERCENT-COMPLETE:100
6.1178 +X-NETBEANS-EFFORT:20
6.1179 +X-NETBEANS-SPENT-TIME:3
6.1180 +LAST-MODIFIED:20061022T124357Z
6.1181 +COMPLETED:20061022T124357Z
6.1182 +RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.1183 +END:VTODO
6.1184 +BEGIN:VTODO
6.1185 +DTSTAMP:20061015T121802Z
6.1186 +UID:nb1162835088968.319@timpc2/127.0.0.1
6.1187 +CREATED:20061015T121802Z
6.1188 +SUMMARY:Use NB pref API
6.1189 +PERCENT-COMPLETE:100
6.1190 +X-NETBEANS-PROGRESS-COMPUTED:yes
6.1191 +X-NETBEANS-EFFORT:50
6.1192 +X-NETBEANS-EFFORT-COMPUTED:yes
6.1193 +X-NETBEANS-SPENT-TIME:52
6.1194 +X-NETBEANS-SPENT-TIME-COMPUTED:yes
6.1195 +LAST-MODIFIED:20061028T164116Z
6.1196 +COMPLETED:20061030T213144Z
6.1197 +URL:http://www.netbeans.org/project/www/download/dev/javadoc/org-openide-
6.1198 + util/org/openide/util/doc-files/preferences.html
6.1199 +X-NETBEANS-LINE:1
6.1200 +RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.1201 +X-NETBEANS-VALUES-COMPUTED:yes
6.1202 +END:VTODO
6.1203 +BEGIN:VTODO
6.1204 +DTSTAMP:20061028T153202Z
6.1205 +UID:nb1162835088968.320@timpc2/127.0.0.1
6.1206 +CREATED:20061028T153202Z
6.1207 +SUMMARY:Remove dep on org.openide.options
6.1208 +PERCENT-COMPLETE:100
6.1209 +X-NETBEANS-EFFORT:5
6.1210 +X-NETBEANS-SPENT-TIME:3
6.1211 +LAST-MODIFIED:20061028T154811Z
6.1212 +COMPLETED:20061028T154811Z
6.1213 +RELATED-TO:nb1162835088968.319@timpc2/127.0.0.1
6.1214 +END:VTODO
6.1215 +BEGIN:VTODO
6.1216 +DTSTAMP:20061028T153226Z
6.1217 +UID:nb1162835088968.321@timpc2/127.0.0.1
6.1218 +CREATED:20061028T153226Z
6.1219 +SUMMARY:Remove .settings file
6.1220 +PERCENT-COMPLETE:100
6.1221 +X-NETBEANS-EFFORT:5
6.1222 +X-NETBEANS-SPENT-TIME:0
6.1223 +LAST-MODIFIED:20061028T161557Z
6.1224 +COMPLETED:20061028T161557Z
6.1225 +RELATED-TO:nb1162835088968.319@timpc2/127.0.0.1
6.1226 +END:VTODO
6.1227 +BEGIN:VTODO
6.1228 +DTSTAMP:20061028T153251Z
6.1229 +UID:nb1162835088969.322@timpc2/127.0.0.1
6.1230 +CREATED:20061028T153251Z
6.1231 +SUMMARY:Update mf-layer.xml
6.1232 +PERCENT-COMPLETE:100
6.1233 +X-NETBEANS-EFFORT:5
6.1234 +X-NETBEANS-SPENT-TIME:1
6.1235 +LAST-MODIFIED:20061028T154500Z
6.1236 +COMPLETED:20061028T154500Z
6.1237 +RELATED-TO:nb1162835088968.319@timpc2/127.0.0.1
6.1238 +END:VTODO
6.1239 +BEGIN:VTODO
6.1240 +DTSTAMP:20061028T153333Z
6.1241 +UID:nb1162835088969.323@timpc2/127.0.0.1
6.1242 +CREATED:20061028T153333Z
6.1243 +SUMMARY:Settings INSTANCE. Does not extend SystemOption
6.1244 +DESCRIPTION:private static Preferences getPreferences() {\n retur
6.1245 + n NbPreferences.forModule(Settings.class)\;\n }\npublic final class S
6.1246 + ettings {\n private static final Settings INSTANCE = new Settings()\
6.1247 + ;\n public boolean getSkipComments() {\n // XXX I did a spectac
6.1248 + ularly poor job naming this method.\n return getPreferences().get
6.1249 + Boolean(PROP_SCAN_SKIP\, false)\;\n }
6.1250 +PERCENT-COMPLETE:100
6.1251 +X-NETBEANS-EFFORT:20
6.1252 +X-NETBEANS-SPENT-TIME:28
6.1253 +LAST-MODIFIED:20061028T164116Z
6.1254 +COMPLETED:20061028T164116Z
6.1255 +RELATED-TO:nb1162835088968.319@timpc2/127.0.0.1
6.1256 +END:VTODO
6.1257 +BEGIN:VTODO
6.1258 +DTSTAMP:20061028T160637Z
6.1259 +UID:nb1162835088969.324@timpc2/127.0.0.1
6.1260 +CREATED:20061028T160637Z
6.1261 +SUMMARY:Document usage of options
6.1262 +PERCENT-COMPLETE:100
6.1263 +X-NETBEANS-EFFORT:15
6.1264 +X-NETBEANS-SPENT-TIME:20
6.1265 +LAST-MODIFIED:20061028T163631Z
6.1266 +COMPLETED:20061028T163631Z
6.1267 +RELATED-TO:nb1162835088968.319@timpc2/127.0.0.1
6.1268 +END:VTODO
6.1269 +BEGIN:VTODO
6.1270 +DTSTAMP:20061028T161521Z
6.1271 +UID:nb1162835088969.325@timpc2/127.0.0.1
6.1272 +CREATED:20061028T161521Z
6.1273 +SUMMARY:Bugfix: deleting a task does not stop it
6.1274 +PERCENT-COMPLETE:100
6.1275 +X-NETBEANS-EFFORT:15
6.1276 +X-NETBEANS-SPENT-TIME:1
6.1277 +LAST-MODIFIED:20061101T212109Z
6.1278 +COMPLETED:20061101T212040Z
6.1279 +RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.1280 +END:VTODO
6.1281 +BEGIN:VTODO
6.1282 +DTSTAMP:20061028T143830Z
6.1283 +UID:nb1162835088970.326@timpc2/127.0.0.1
6.1284 +CREATED:20061028T143830Z
6.1285 +SUMMARY:#87939: Importing class hangs editor
6.1286 +PERCENT-COMPLETE:100
6.1287 X-NETBEANS-EFFORT:60
6.1288 X-NETBEANS-SPENT-TIME:0
6.1289 -LAST-MODIFIED:20061028T161548Z
6.1290 +LAST-MODIFIED:20061101T213421Z
6.1291 +COMPLETED:20061101T213421Z
6.1292 +URL:http://www.netbeans.org/issues/show_bug.cgi?id=87939
6.1293 +X-NETBEANS-LINE:1
6.1294 RELATED-TO:nb1137857799682.30@timpc/127.0.0.1
6.1295 END:VTODO
6.1296 BEGIN:VTODO
6.1297 @@ -1220,6 +1758,7 @@
6.1298 LAST-MODIFIED:20060704T221124Z
6.1299 COMPLETED:20060411T212344Z
6.1300 DTSTAMP:20060410T195328Z
6.1301 +X-NETBEANS-VALUES-COMPUTED:yes
6.1302 END:VTODO
6.1303 BEGIN:VTODO
6.1304 UID:nb1144698808218.600@timpc/127.0.0.1
6.1305 @@ -1632,6 +2171,7 @@
6.1306 LAST-MODIFIED:20060704T221124Z
6.1307 COMPLETED:20060411T212344Z
6.1308 DTSTAMP:20060410T195139Z
6.1309 +X-NETBEANS-VALUES-COMPUTED:yes
6.1310 END:VTODO
6.1311 BEGIN:VTODO
6.1312 UID:nb1144698699210.499@timpc/127.0.0.1
6.1313 @@ -2077,6 +2617,7 @@
6.1314 LAST-MODIFIED:20060704T221124Z
6.1315 COMPLETED:20060411T212344Z
6.1316 DTSTAMP:20060410T194825Z
6.1317 +X-NETBEANS-VALUES-COMPUTED:yes
6.1318 END:VTODO
6.1319 BEGIN:VTODO
6.1320 UID:nb1144698505726.399@timpc/127.0.0.1
6.1321 @@ -2459,6 +3000,7 @@
6.1322 X-NETBEANS-SPENT-TIME-COMPUTED:yes
6.1323 COMPLETED:20060411T212344Z
6.1324 DTSTAMP:20060410T183427Z
6.1325 +X-NETBEANS-VALUES-COMPUTED:yes
6.1326 END:VTODO
6.1327 BEGIN:VTODO
6.1328 UID:nb1144694096767.176@timpc/127.0.0.1
6.1329 @@ -2508,16 +3050,4 @@
6.1330 COMPLETED:20060410T195524Z
6.1331 DTSTAMP:20060410T183451Z
6.1332 END:VTODO
6.1333 -BEGIN:VTODO
6.1334 -UID:nb1139007604353.62@timpc/127.0.0.1
6.1335 -CREATED:20060121T141928Z
6.1336 -SUMMARY:(not User Tasks) #65594: Allow batch export of tasklists
6.1337 -PERCENT-COMPLETE:0
6.1338 -X-NETBEANS-EFFORT:480
6.1339 -X-NETBEANS-SPENT-TIME:220
6.1340 -LAST-MODIFIED:20060704T221124Z
6.1341 -URL:http://tasklist.netbeans.org/issues/show_bug.cgi?id=65594
6.1342 -X-NETBEANS-LINE:1
6.1343 -DTSTAMP:20060121T141928Z
6.1344 -END:VTODO
6.1345 END:VCALENDAR
7.1 --- a/tasklist.usertasks/doc/processes.ics Mon Dec 04 21:57:00 2006 +0000
7.2 +++ b/tasklist.usertasks/doc/processes.ics Mon Dec 04 21:59:57 2006 +0000
7.3 @@ -7,84 +7,86 @@
7.4 SUMMARY:Adding a field to UserTask
7.5 DESCRIPTION:Steps that should be accomplished to add a new field to the U
7.6 serTask class that is visible to the user
7.7 -PERCENT-COMPLETE:13
7.8 +PERCENT-COMPLETE:0
7.9 X-NETBEANS-PROGRESS-COMPUTED:yes
7.10 X-NETBEANS-EFFORT:150
7.11 X-NETBEANS-EFFORT-COMPUTED:yes
7.12 X-NETBEANS-SPENT-TIME:5
7.13 X-NETBEANS-SPENT-TIME-COMPUTED:yes
7.14 -LAST-MODIFIED:20060427T183028Z
7.15 +LAST-MODIFIED:20061115T194841Z
7.16 +DTSTAMP:20040909T181638Z
7.17 END:VTODO
7.18 BEGIN:VTODO
7.19 UID:nb1099827812695.413@timpc/145.254.144.151
7.20 CREATED:20041107T114332Z
7.21 SUMMARY:UserTask
7.22 -PERCENT-COMPLETE:100
7.23 +PERCENT-COMPLETE:0
7.24 X-NETBEANS-PROGRESS-COMPUTED:yes
7.25 X-NETBEANS-EFFORT:20
7.26 X-NETBEANS-EFFORT-COMPUTED:yes
7.27 X-NETBEANS-SPENT-TIME:3
7.28 X-NETBEANS-SPENT-TIME-COMPUTED:yes
7.29 -LAST-MODIFIED:20060427T183028Z
7.30 +LAST-MODIFIED:20061115T194841Z
7.31 RELATED-TO:nb1094753798137.164@timpc/145.254.152.118
7.32 COMPLETED:20051104T183420Z
7.33 +DTSTAMP:20041107T114332Z
7.34 END:VTODO
7.35 BEGIN:VTODO
7.36 UID:nb1116157827968.450@timpc/169.254.180.13
7.37 CREATED:20050515T115027Z
7.38 SUMMARY:create PROP_... field
7.39 -PERCENT-COMPLETE:100
7.40 +PERCENT-COMPLETE:0
7.41 X-NETBEANS-EFFORT:5
7.42 X-NETBEANS-SPENT-TIME:0
7.43 -LAST-MODIFIED:20060427T183028Z
7.44 -URL:file:/home/tim/netbeans/trunk/tasklist/usertasks/src/org/netbeans/mod
7.45 - ules/tasklist/usertasks/model/UserTask.java
7.46 +LAST-MODIFIED:20061115T194841Z
7.47 +URL:file:/home/tim/projects/netbeans/trunk/tasklist/usertasks/src/org/net
7.48 + beans/modules/tasklist/usertasks/model/UserTask.java
7.49 X-NETBEANS-LINE:237
7.50 RELATED-TO:nb1099827812695.413@timpc/145.254.144.151
7.51 -COMPLETED:20060423T112759Z
7.52 +DTSTAMP:20050515T115027Z
7.53 END:VTODO
7.54 BEGIN:VTODO
7.55 UID:nb1099827822640.415@timpc/145.254.144.151
7.56 CREATED:20040909T181651Z
7.57 SUMMARY:create the field. Don't forget initial values
7.58 -PERCENT-COMPLETE:100
7.59 +PERCENT-COMPLETE:0
7.60 X-NETBEANS-EFFORT:5
7.61 X-NETBEANS-SPENT-TIME:3
7.62 -LAST-MODIFIED:20060427T183028Z
7.63 -URL:file:/C:/tasklist/trunk/tasklist/usertasks/src/org/netbeans/modules/t
7.64 - asklist/usertasks/model/UserTask.java
7.65 +LAST-MODIFIED:20061115T194955Z
7.66 +URL:file:/home/tim/projects/netbeans/trunk/tasklist/usertasks/src/org/net
7.67 + beans/modules/tasklist/usertasks/model/UserTask.java
7.68 X-NETBEANS-LINE:300
7.69 X-NETBEANS-OWNER:tim
7.70 RELATED-TO:nb1099827812695.413@timpc/145.254.144.151
7.71 -COMPLETED:20060423T112800Z
7.72 +DTSTAMP:20040909T181651Z
7.73 END:VTODO
7.74 BEGIN:VTODO
7.75 UID:nb1099827827116.417@timpc/145.254.144.151
7.76 CREATED:20040909T182007Z
7.77 SUMMARY:create UserTask.get.. and set. firePropertyChange() in set...
7.78 -PERCENT-COMPLETE:100
7.79 +PERCENT-COMPLETE:0
7.80 X-NETBEANS-EFFORT:5
7.81 X-NETBEANS-SPENT-TIME:0
7.82 -LAST-MODIFIED:20060427T183028Z
7.83 -URL:file:/C:/tasklist/trunk/tasklist/usertasks/src/org/netbeans/modules/t
7.84 - asklist/usertasks/model/UserTask.java
7.85 +LAST-MODIFIED:20061115T195035Z
7.86 +URL:file:/home/tim/projects/netbeans/trunk/tasklist/usertasks/src/org/net
7.87 + beans/modules/tasklist/usertasks/model/UserTask.java
7.88 X-NETBEANS-LINE:300
7.89 RELATED-TO:nb1099827812695.413@timpc/145.254.144.151
7.90 -COMPLETED:20060423T112928Z
7.91 +DTSTAMP:20040909T182007Z
7.92 END:VTODO
7.93 BEGIN:VTODO
7.94 UID:nb1099827831092.419@timpc/145.254.144.151
7.95 CREATED:20040909T181702Z
7.96 SUMMARY:update UserTask.copyFrom()
7.97 -PERCENT-COMPLETE:100
7.98 +PERCENT-COMPLETE:0
7.99 X-NETBEANS-EFFORT:5
7.100 X-NETBEANS-SPENT-TIME:0
7.101 -LAST-MODIFIED:20060427T183028Z
7.102 -URL:file:/home/tim/netbeans/trunk/tasklist/usertasks/src/org/netbeans/mod
7.103 - ules/tasklist/usertasks/model/UserTask.java
7.104 +LAST-MODIFIED:20061115T195101Z
7.105 +URL:file:/home/tim/projects/netbeans/trunk/tasklist/usertasks/src/org/net
7.106 + beans/modules/tasklist/usertasks/model/UserTask.java
7.107 RELATED-TO:nb1099827812695.413@timpc/145.254.144.151
7.108 X-NETBEANS-LINE:1349
7.109 -COMPLETED:20060423T113048Z
7.110 +DTSTAMP:20040909T181702Z
7.111 END:VTODO
7.112 BEGIN:VTODO
7.113 UID:nb1105268256075.77@timpc/127.0.0.1
7.114 @@ -103,6 +105,7 @@
7.115 X-NETBEANS-OWNER:tim
7.116 RELATED-TO:nb1094753798137.164@timpc/145.254.152.118
7.117 COMPLETED:20051104T183420Z
7.118 +DTSTAMP:20050109T105736Z
7.119 END:VTODO
7.120 BEGIN:VTODO
7.121 UID:nb1116157696319.447@timpc/169.254.180.13
7.122 @@ -111,11 +114,12 @@
7.123 PERCENT-COMPLETE:0
7.124 X-NETBEANS-EFFORT:5
7.125 X-NETBEANS-SPENT-TIME:0
7.126 -LAST-MODIFIED:20060427T184135Z
7.127 -URL:file:/home/tim/netbeans/trunk/tasklist/usertasks/src/org/netbeans/mod
7.128 - ules/tasklist/usertasks/UserTaskTreeTableNode.java
7.129 +LAST-MODIFIED:20061115T195122Z
7.130 +URL:file:/home/tim/projects/netbeans/trunk/tasklist/usertasks/src/org/net
7.131 + beans/modules/tasklist/usertasks/UserTaskTreeTableNode.java
7.132 RELATED-TO:nb1105268256075.77@timpc/127.0.0.1
7.133 X-NETBEANS-LINE:175
7.134 +DTSTAMP:20050109T120945Z
7.135 END:VTODO
7.136 BEGIN:VTODO
7.137 UID:nb1116157713233.449@timpc/169.254.180.13
7.138 @@ -129,6 +133,7 @@
7.139 asklist/usertasks/UserTaskTreeTableNode.java
7.140 X-NETBEANS-LINE:203
7.141 RELATED-TO:nb1105268256075.77@timpc/127.0.0.1
7.142 +DTSTAMP:20050109T120945Z
7.143 END:VTODO
7.144 BEGIN:VTODO
7.145 UID:nb1094753880034.181@timpc/145.254.152.118
7.146 @@ -143,6 +148,7 @@
7.147 LAST-MODIFIED:20060427T183028Z
7.148 RELATED-TO:nb1094753798137.164@timpc/145.254.152.118
7.149 COMPLETED:20051104T183420Z
7.150 +DTSTAMP:20040909T181800Z
7.151 END:VTODO
7.152 BEGIN:VTODO
7.153 UID:nb1094753930397.182@timpc/145.254.152.118
7.154 @@ -151,11 +157,12 @@
7.155 PERCENT-COMPLETE:0
7.156 X-NETBEANS-EFFORT:5
7.157 X-NETBEANS-SPENT-TIME:0
7.158 -LAST-MODIFIED:20060427T183028Z
7.159 -URL:file:/C:/tasklist/trunk/tasklist/usertasks/src/org/netbeans/modules/t
7.160 - asklist/usertasks/EditTaskPanel.java
7.161 +LAST-MODIFIED:20061115T195208Z
7.162 +URL:file:/home/tim/projects/netbeans/trunk/tasklist/usertasks/src/org/net
7.163 + beans/modules/tasklist/usertasks/EditTaskPanel.java
7.164 X-NETBEANS-LINE:237
7.165 RELATED-TO:nb1094753880034.181@timpc/145.254.152.118
7.166 +DTSTAMP:20040909T181850Z
7.167 END:VTODO
7.168 BEGIN:VTODO
7.169 UID:nb1094753953831.183@timpc/145.254.152.118
7.170 @@ -164,11 +171,12 @@
7.171 PERCENT-COMPLETE:0
7.172 X-NETBEANS-EFFORT:5
7.173 X-NETBEANS-SPENT-TIME:0
7.174 -LAST-MODIFIED:20060427T183028Z
7.175 -URL:file:/C:/tasklist/trunk/tasklist/usertasks/src/org/netbeans/modules/t
7.176 - asklist/usertasks/EditTaskPanel.java
7.177 -X-NETBEANS-LINE:342
7.178 +LAST-MODIFIED:20061115T195325Z
7.179 +URL:file:/home/tim/projects/netbeans/trunk/tasklist/usertasks/src/org/net
7.180 + beans/modules/tasklist/usertasks/EditTaskPanel.java
7.181 +X-NETBEANS-LINE:341
7.182 RELATED-TO:nb1094753880034.181@timpc/145.254.152.118
7.183 +DTSTAMP:20040909T181913Z
7.184 END:VTODO
7.185 BEGIN:VTODO
7.186 UID:nb1094755062895.197@timpc/145.254.152.118
7.187 @@ -183,6 +191,7 @@
7.188 X-NETBEANS-LINE:407
7.189 X-NETBEANS-OWNER:tim
7.190 RELATED-TO:nb1094753798137.164@timpc/145.254.152.118
7.191 +DTSTAMP:20040909T183742Z
7.192 X-NETBEANS-WORK-PERIOD;X-NETBEANS-START=20050405T020000Z:1
7.193 END:VTODO
7.194 BEGIN:VTODO
7.195 @@ -198,6 +207,7 @@
7.196 LAST-MODIFIED:20060427T183028Z
7.197 RELATED-TO:nb1094753798137.164@timpc/145.254.152.118
7.198 COMPLETED:20051104T183420Z
7.199 +DTSTAMP:20041107T114253Z
7.200 PRIORITY:1
7.201 END:VTODO
7.202 BEGIN:VTODO
7.203 @@ -212,6 +222,7 @@
7.204 asklist/usertasks/filter/UserTaskProperties.java
7.205 X-NETBEANS-LINE:35
7.206 RELATED-TO:nb1099827773790.406@timpc/145.254.144.151
7.207 +DTSTAMP:20040909T184007Z
7.208 END:VTODO
7.209 BEGIN:VTODO
7.210 UID:nb1099827797393.410@timpc/145.254.144.151
7.211 @@ -225,6 +236,7 @@
7.212 asklist/usertasks/filter/UserTaskProperties.java
7.213 X-NETBEANS-LINE:143
7.214 RELATED-TO:nb1099827773790.406@timpc/145.254.144.151
7.215 +DTSTAMP:20041107T114120Z
7.216 END:VTODO
7.217 BEGIN:VTODO
7.218 UID:nb1099827803452.412@timpc/145.254.144.151
7.219 @@ -238,6 +250,7 @@
7.220 asklist/usertasks/filter/UserTaskProperties.java
7.221 X-NETBEANS-LINE:194
7.222 RELATED-TO:nb1099827773790.406@timpc/145.254.144.151
7.223 +DTSTAMP:20041107T114154Z
7.224 END:VTODO
7.225 BEGIN:VTODO
7.226 UID:nb1099828582442.437@timpc/145.254.144.151
7.227 @@ -251,6 +264,7 @@
7.228 asklist/usertasks/filter/UserTaskFilter.java
7.229 X-NETBEANS-LINE:48
7.230 RELATED-TO:nb1099827773790.406@timpc/145.254.144.151
7.231 +DTSTAMP:20041107T115515Z
7.232 END:VTODO
7.233 BEGIN:VTODO
7.234 UID:nb1099828639584.438@timpc/145.254.144.151
7.235 @@ -264,6 +278,7 @@
7.236 asklist/usertasks/filter/UserTaskFilter.java
7.237 X-NETBEANS-LINE:107
7.238 RELATED-TO:nb1099827773790.406@timpc/145.254.144.151
7.239 +DTSTAMP:20041107T115719Z
7.240 END:VTODO
7.241 BEGIN:VTODO
7.242 UID:nb1099828927859.439@timpc/145.254.144.151
7.243 @@ -277,6 +292,7 @@
7.244 asklist/usertasks/filter/Bundle.properties
7.245 X-NETBEANS-LINE:63
7.246 RELATED-TO:nb1099827773790.406@timpc/145.254.144.151
7.247 +DTSTAMP:20041107T120207Z
7.248 END:VTODO
7.249 BEGIN:VTODO
7.250 UID:nb1099827852262.422@timpc/145.254.144.151
7.251 @@ -291,6 +307,7 @@
7.252 LAST-MODIFIED:20060427T183028Z
7.253 RELATED-TO:nb1094753798137.164@timpc/145.254.152.118
7.254 COMPLETED:20051104T183420Z
7.255 +DTSTAMP:20041107T114412Z
7.256 END:VTODO
7.257 BEGIN:VTODO
7.258 UID:nb1116157325396.447@timpc/169.254.180.13
7.259 @@ -304,6 +321,7 @@
7.260 asklist/usertasks/UserTasksTreeTableModel.java
7.261 X-NETBEANS-LINE:57
7.262 RELATED-TO:nb1099827852262.422@timpc/145.254.144.151
7.263 +DTSTAMP:20040909T183923Z
7.264 END:VTODO
7.265 BEGIN:VTODO
7.266 UID:nb1099827887363.424@timpc/145.254.144.151
7.267 @@ -318,6 +336,7 @@
7.268 X-NETBEANS-LINE:163
7.269 X-NETBEANS-OWNER:tim
7.270 RELATED-TO:nb1099827852262.422@timpc/145.254.144.151
7.271 +DTSTAMP:20041107T114447Z
7.272 END:VTODO
7.273 BEGIN:VTODO
7.274 UID:nb1099827869227.423@timpc/145.254.144.151
7.275 @@ -331,6 +350,7 @@
7.276 asklist/usertasks/UserTasksTreeTableModel.java
7.277 X-NETBEANS-LINE:139
7.278 RELATED-TO:nb1099827852262.422@timpc/145.254.144.151
7.279 +DTSTAMP:20041107T114429Z
7.280 END:VTODO
7.281 BEGIN:VTODO
7.282 UID:nb1099827901693.425@timpc/145.254.144.151
7.283 @@ -344,6 +364,7 @@
7.284 asklist/usertasks/UserTasksTreeTableModel.java
7.285 X-NETBEANS-LINE:188
7.286 RELATED-TO:nb1099827852262.422@timpc/145.254.144.151
7.287 +DTSTAMP:20041107T114501Z
7.288 END:VTODO
7.289 BEGIN:VTODO
7.290 UID:nb1099827914342.426@timpc/145.254.144.151
7.291 @@ -357,6 +378,7 @@
7.292 asklist/usertasks/UserTasksTreeTableModel.java
7.293 X-NETBEANS-LINE:210
7.294 RELATED-TO:nb1099827852262.422@timpc/145.254.144.151
7.295 +DTSTAMP:20041107T114514Z
7.296 END:VTODO
7.297 BEGIN:VTODO
7.298 UID:nb1099827975650.427@timpc/145.254.144.151
7.299 @@ -371,6 +393,7 @@
7.300 X-NETBEANS-LINE:234
7.301 X-NETBEANS-OWNER:tim
7.302 RELATED-TO:nb1094753798137.164@timpc/145.254.152.118
7.303 +DTSTAMP:20041107T114615Z
7.304 END:VTODO
7.305 BEGIN:VTODO
7.306 UID:nb1099828031770.428@timpc/145.254.144.151
7.307 @@ -381,6 +404,7 @@
7.308 X-NETBEANS-SPENT-TIME:0
7.309 LAST-MODIFIED:20060427T183028Z
7.310 RELATED-TO:nb1094753798137.164@timpc/145.254.152.118
7.311 +DTSTAMP:20041107T114711Z
7.312 END:VTODO
7.313 BEGIN:VTODO
7.314 UID:nb1099828053311.429@timpc/145.254.144.151
7.315 @@ -395,6 +419,7 @@
7.316 LAST-MODIFIED:20060427T183028Z
7.317 RELATED-TO:nb1094753798137.164@timpc/145.254.152.118
7.318 COMPLETED:20051104T183420Z
7.319 +DTSTAMP:20041107T114733Z
7.320 END:VTODO
7.321 BEGIN:VTODO
7.322 UID:nb1099828065699.430@timpc/145.254.144.151
7.323 @@ -408,6 +433,7 @@
7.324 asklist/usertasks/translators/ICalExportFormat.java
7.325 X-NETBEANS-LINE:336
7.326 RELATED-TO:nb1099828053311.429@timpc/145.254.144.151
7.327 +DTSTAMP:20041107T114745Z
7.328 END:VTODO
7.329 BEGIN:VTODO
7.330 UID:nb1099828085728.431@timpc/145.254.144.151
7.331 @@ -421,6 +447,7 @@
7.332 asklist/usertasks/translators/ICalImportFormat.java
7.333 X-NETBEANS-LINE:513
7.334 RELATED-TO:nb1099828053311.429@timpc/145.254.144.151
7.335 +DTSTAMP:20041107T114805Z
7.336 END:VTODO
7.337 BEGIN:VTODO
7.338 UID:nb1099828115992.432@timpc/145.254.144.151
7.339 @@ -434,6 +461,7 @@
7.340 asklist/usertasks/translators/XmlExportFormat.java
7.341 X-NETBEANS-LINE:233
7.342 RELATED-TO:nb1099828053311.429@timpc/145.254.144.151
7.343 +DTSTAMP:20041107T114835Z
7.344 END:VTODO
7.345 BEGIN:VTODO
7.346 UID:nb1099828158613.434@timpc/145.254.144.151
7.347 @@ -447,6 +475,7 @@
7.348 asklist/usertasks/translators/usertasks-1_2.dtd
7.349 X-NETBEANS-LINE:1
7.350 RELATED-TO:nb1099828053311.429@timpc/145.254.144.151
7.351 +DTSTAMP:20041107T114918Z
7.352 END:VTODO
7.353 BEGIN:VTODO
7.354 UID:nb1125424947017.57@timpc/169.254.249.33
7.355 @@ -460,5 +489,6 @@
7.356 asklist/usertasks/Bundle.properties
7.357 X-NETBEANS-LINE:214
7.358 RELATED-TO:nb1094753798137.164@timpc/145.254.152.118
7.359 +DTSTAMP:20050830T180227Z
7.360 END:VTODO
7.361 END:VCALENDAR
8.1 --- a/tasklist.usertasks/javahelp/org/netbeans/modules/tasklist/usertasks/docs/content/addTask.html Mon Dec 04 21:57:00 2006 +0000
8.2 +++ b/tasklist.usertasks/javahelp/org/netbeans/modules/tasklist/usertasks/docs/content/addTask.html Mon Dec 04 21:59:57 2006 +0000
8.3 @@ -2,17 +2,21 @@
8.4 <html>
8.5 <head>
8.6
8.7 +
8.8 +
8.9 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
8.10 +
8.11 +
8.12 <title>How to add a task to the source</title>
8.13 -
8.14 -
8.15 </head>
8.16
8.17
8.18 <body>
8.19
8.20 +
8.21 <h2>How to Add a Task to the Source</h2>
8.22
8.23 +
8.24 You can associate
8.25 a line in a file with a
8.26 task. The task selected in the table will also be highlighted in the
8.27 @@ -20,16 +24,22 @@
8.28 yellow
8.29 background:<br>
8.30
8.31 +
8.32 <br>
8.33
8.34 +
8.35 <img src="images/editor.gif" alt="Selected task in the editor" style="width: 686px; height: 92px;"><br>
8.36
8.37 +
8.38 <br>
8.39
8.40 +
8.41 There are 2 possibilities to add a task to the source:<br>
8.42
8.43 +
8.44 <ol>
8.45
8.46 +
8.47 <li>Just place the cursor at the desired position in the
8.48 editor, open
8.49 a task list and press the "New Task..." button from the local toolbar.
8.50 @@ -37,34 +47,47 @@
8.51 source file. You can also enter multiple tasks at once. Just
8.52 press "Add Another" button instead of "OK".<br>
8.53
8.54 - <br>
8.55 -
8.56 - <img src="images/newTaskDialog.jpg" title="" alt="New task dialog" style="width: 608px; height: 585px;"><br>
8.57
8.58 <br>
8.59
8.60 +
8.61 + <img src="images/newTaskDialog.jpg" alt="New task dialog" style="width: 606px; height: 577px;"><br>
8.62 +
8.63 +
8.64 + <br>
8.65 +
8.66 +
8.67 </li>
8.68
8.69 +
8.70 <li>There is a special bridge module between the User Tasks
8.71 module
8.72 and the editor: Task List Editor Support. Install it and open the local
8.73 menu over the left editor margin:<br>
8.74
8.75 +
8.76 <br>
8.77
8.78 +
8.79 <img src="images/editorSupport.gif" title="" alt="Adding a task from the editor" style="height: 206px; width: 363px;"><br>
8.80
8.81 +
8.82 <br>
8.83
8.84 +
8.85 </li>
8.86
8.87 +
8.88 </ol>
8.89
8.90 +
8.91 <hr>Comments & requests to <a href="mailto:dev@tasklist.netbeans.org"><code>dev@tasklist.netbeans.org</code></a>.
8.92 Further information at <a href="http://tasklist.netbeans.org/"><code>http://tasklist.netbeans.org</code></a>.
8.93 <ol>
8.94
8.95 +
8.96 </ol>
8.97
8.98 +
8.99 </body>
8.100 </html>
9.1 --- a/tasklist.usertasks/javahelp/org/netbeans/modules/tasklist/usertasks/docs/content/newTaskDialog.html Mon Dec 04 21:57:00 2006 +0000
9.2 +++ b/tasklist.usertasks/javahelp/org/netbeans/modules/tasklist/usertasks/docs/content/newTaskDialog.html Mon Dec 04 21:59:57 2006 +0000
9.3 @@ -3,9 +3,13 @@
9.4 <head>
9.5
9.6
9.7 +
9.8 +
9.9
9.10 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
9.11
9.12 +
9.13 +
9.14
9.15 <title>How to add a task to the source</title>
9.16 </head>
9.17 @@ -14,12 +18,15 @@
9.18 <body>
9.19
9.20
9.21 +
9.22 <h2>"New Task" Dialog</h2>
9.23
9.24
9.25 +
9.26 <br>
9.27
9.28
9.29 +
9.30 The "General" tab contains some common properties of a task like
9.31 summary, details, priority, category and owner. A file can be <a href="addTask.html">associated</a> with a task. The
9.32 category and owner
9.33 @@ -27,58 +34,63 @@
9.34 same task list.<br>
9.35
9.36
9.37 -<br>
9.38 -
9.39 -
9.40 -<img src="images/newTaskDialog.jpg" title="" alt="General Tab" style="width: 608px; height: 585px;"> <br>
9.41 -
9.42
9.43 <br>
9.44
9.45
9.46 -The second tab contains some time related properties. Due field
9.47 -contains a date when the task should be completed.
9.48 -Effort, progress and spent time could be computed automatically. <br>
9.49 +
9.50 +<img src="images/newTaskDialog.jpg" alt="General Tab" style="width: 606px; height: 577px;"> <br>
9.51 +
9.52
9.53
9.54 <br>
9.55
9.56
9.57 -<img src="images/timeRelated.jpeg" alt="Time Related Tab" style="width: 608px; height: 576px;"><br>
9.58 +
9.59 +The second tab contains some time related properties. Due field
9.60 +contains a date when the task should be completed.
9.61 +Effort, progress and spent time could be computed automatically.
9.62 +
9.63 +
9.64 +This tab also lists time periods spent working on the task. "<a href="options.html">Collect Work Periods</a>" option
9.65 +should be
9.66 +activated to use this.<br>
9.67 +
9.68
9.69
9.70 <br>
9.71
9.72
9.73 -On the third tab you can define dependencies for the task.<br>
9.74 +
9.75 +<img src="images/timeRelated.jpeg" alt="Time Related Tab" style="width: 610px; height: 580px;"><br>
9.76 +
9.77
9.78
9.79 <br>
9.80
9.81
9.82 -<img src="images/dependencies.jpeg" title="" alt="Dependencies Tab" style="width: 608px; height: 576px;"><br>
9.83 +
9.84 +On the third tab you can define dependencies for the task.<br>
9.85 +
9.86
9.87
9.88 <br>
9.89
9.90
9.91 -The fourth tab lists time periods spent working on the task. "<a href="options.html">Collect Work Periods</a>" option
9.92 -should be
9.93 -activated to use this.<br>
9.94 +
9.95 +<img src="images/dependencies.jpeg" alt="Dependencies Tab" style="width: 610px; height: 580px;"><br>
9.96 +
9.97
9.98
9.99 <br>
9.100 +<br>
9.101
9.102
9.103 -<img src="images/workPeriods.jpeg" title="" alt="Work Periods Tab" style="width: 608px; height: 576px;"><br>
9.104 -
9.105 -
9.106 -<br>
9.107 -
9.108
9.109 <hr>Comments & requests to <a href="mailto:dev@tasklist.netbeans.org"><code>dev@tasklist.netbeans.org</code></a>.
9.110 Further information at <a href="http://tasklist.netbeans.org/"><code>http://tasklist.netbeans.org</code></a>.<br>
9.111
9.112
9.113 +
9.114 </body>
9.115 </html>
10.1 --- a/tasklist.usertasks/javahelp/org/netbeans/modules/tasklist/usertasks/docs/content/options.html Mon Dec 04 21:57:00 2006 +0000
10.2 +++ b/tasklist.usertasks/javahelp/org/netbeans/modules/tasklist/usertasks/docs/content/options.html Mon Dec 04 21:59:57 2006 +0000
10.3 @@ -20,12 +20,15 @@
10.4
10.5
10.6
10.7 +
10.8
10.9
10.10
10.11
10.12
10.13
10.14 +
10.15 +
10.16 <title>Task List Options</title>
10.17 <link rel="StyleSheet" href="ide.css" type="text/css">
10.18 </head>
10.19 @@ -35,10 +38,12 @@
10.20
10.21
10.22
10.23 +
10.24 <h2>User Task List Options </h2>
10.25
10.26
10.27
10.28 +
10.29 <p>
10.30 To customize options related to the User Tasks view,
10.31 open the Options dialog (Tools > Options),
10.32 @@ -46,7 +51,9 @@
10.33
10.34
10.35
10.36 -<p><img style="width: 827px; height: 662px;" alt="User Tasks Options" src="images/options.jpg"><br>
10.37 +
10.38 +<p><img style="width: 846px; height: 635px;" alt="User Tasks Options" src="images/options.jpg"><br>
10.39 +
10.40
10.41
10.42
10.43 @@ -54,15 +61,18 @@
10.44
10.45
10.46
10.47 +
10.48 <p>The following settings are available:
10.49 </p>
10.50
10.51
10.52
10.53 +
10.54 <ul>
10.55
10.56
10.57
10.58 +
10.59 <li> <b>Append instead of Prepend</b>: Instead of
10.60 prepending tasks
10.61 to the list, append them to the end. Default: False. This is handy if
10.62 @@ -72,6 +82,7 @@
10.63
10.64
10.65
10.66 +
10.67
10.68
10.69
10.70 @@ -81,6 +92,7 @@
10.71
10.72
10.73
10.74 +
10.75 <li><span style="font-weight: bold;">Detect
10.76 Inactivity:</span> if
10.77 this option is on, a running task will be suspended after 10 minutes
10.78 @@ -89,7 +101,9 @@
10.79
10.80
10.81
10.82 +
10.83 </li>
10.84 +
10.85 <li><b>Automatically Switch "Spent Time", "Effort" and
10.86 "Percent
10.87 Complete" to "Computed" if a subtask is added:</b> if you create
10.88 @@ -99,22 +113,27 @@
10.89
10.90
10.91
10.92 +
10.93 </li>
10.94
10.95
10.96
10.97 +
10.98 <li><b>Default User Tasks File</b>: Name of file
10.99 where the tasks are
10.100 stored.
10.101 Default: {userdir}/tasklist.ics.</li>
10.102 +
10.103 <li><span style="font-weight: bold;">Start Working Day/Start Pause/End Pause/End Working Day/Working Days:</span> these settings define periods of work.</li>
10.104
10.105
10.106
10.107 +
10.108 </ul>
10.109
10.110
10.111
10.112 +
10.113 <hr>Comments & requests to <a href="mailto:dev@tasklist.netbeans.org"><code>dev@tasklist.netbeans.org</code></a>.
10.114 Further information at <a href="http://tasklist.netbeans.org/"><code>http://tasklist.netbeans.org</code></a>.
10.115 </body>
11.1 --- a/tasklist.usertasks/javahelp/org/netbeans/modules/tasklist/usertasks/docs/content/translators.html Mon Dec 04 21:57:00 2006 +0000
11.2 +++ b/tasklist.usertasks/javahelp/org/netbeans/modules/tasklist/usertasks/docs/content/translators.html Mon Dec 04 21:59:57 2006 +0000
11.3 @@ -3,9 +3,13 @@
11.4 <head>
11.5
11.6
11.7 +
11.8 +
11.9
11.10 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
11.11
11.12 +
11.13 +
11.14
11.15 <title>Export and Import Wizards</title>
11.16 </head>
11.17 @@ -14,107 +18,142 @@
11.18 <body>
11.19
11.20
11.21 +
11.22 <h2>Export and Import Wizards</h2>
11.23
11.24
11.25 +
11.26 <br>
11.27
11.28
11.29 +
11.30 <ul>
11.31
11.32
11.33 +
11.34 <li>Import of an iCalendar file. Just choose the source file
11.35 and
11.36 press "Finish". All the tasks in the current task list will be replaced
11.37 by imported ones.<br>
11.38
11.39
11.40 +
11.41 <br>
11.42
11.43
11.44 +
11.45 <img src="images/importICal.gif" title="" alt="Import iCalendar" style="width: 826px; height: 548px;"><br>
11.46
11.47
11.48 +
11.49 <br>
11.50
11.51
11.52 +
11.53 </li>
11.54
11.55
11.56 +
11.57 <li>Export in HTML. Choose the destination file. Press "Next".<br>
11.58
11.59
11.60 +
11.61 <br>
11.62
11.63
11.64 +
11.65 <img src="images/exportHtml.gif" title="" alt="Export HTML" style="width: 710px; height: 450px;"><br>
11.66
11.67
11.68 +
11.69 <br>
11.70
11.71
11.72 +
11.73 Choose the layout of the HTML file from the combobox and press
11.74 "Finish". You can also preview the exported file by selecting the
11.75 checkbox "Open the resulting HTML file in browser".<br>
11.76
11.77
11.78 +
11.79 <br>
11.80
11.81
11.82 +
11.83 <img src="images/exportHtmlLayout.gif" title="" alt="Export HTML-Choose Layout" style="width: 710px; height: 450px;"><br>
11.84
11.85
11.86 +
11.87 <br>
11.88
11.89
11.90 +
11.91 </li>
11.92
11.93
11.94 +
11.95 <li>Export to XML or iCalendar. Just choose the destination
11.96 file and
11.97 press
11.98 "Finish".<br>
11.99
11.100
11.101 +
11.102 <br>
11.103
11.104
11.105 +
11.106 <img src="images/exportXml.gif" title="" alt="Export XML" style="width: 706px; height: 450px;"><br>
11.107
11.108
11.109 +
11.110 <br>
11.111
11.112
11.113 +
11.114 </li>
11.115
11.116
11.117 +
11.118 <li>Export as plain text. You can preview the exported file by
11.119 selecting the
11.120 checkbox "Open Exported File".<br>
11.121
11.122
11.123 +
11.124 <br>
11.125
11.126
11.127 +
11.128 <img alt="Export as Plain Text" src="images/exportText.gif" style="width: 610px; height: 445px;"><br>
11.129 + <br>
11.130 +
11.131 </li>
11.132 +
11.133 <li>Export Spent Times. On the first page you can specify a time
11.134 period, grouping options and minumum duration for exported tasks. You
11.135 can preview the exported file by
11.136 selecting the
11.137 checkbox "Open Exported File" on the second page.<br>
11.138 +
11.139 <br>
11.140 +
11.141 <img style="width: 834px; height: 472px;" alt="Export Options" src="images/exportSpentTimes.gif"><br>
11.142 +
11.143 <br>
11.144 +
11.145 <img style="width: 834px; height: 472px;" alt="Choose Destination" src="images/exportSpentTimes2.gif"></li>
11.146
11.147
11.148 +
11.149 </ul>
11.150
11.151
11.152 +
11.153 <hr>Comments & requests to <a href="mailto:dev@tasklist.netbeans.org"><code>dev@tasklist.netbeans.org</code></a>.
11.154 Further information at <a href="http://tasklist.netbeans.org/"><code>http://tasklist.netbeans.org</code></a>.<br>
11.155
11.156
11.157 +
11.158 </body>
11.159 </html>
12.1 --- a/tasklist.usertasks/manifest.mf Mon Dec 04 21:57:00 2006 +0000
12.2 +++ b/tasklist.usertasks/manifest.mf Mon Dec 04 21:59:57 2006 +0000
12.3 @@ -1,6 +1,6 @@
12.4 Manifest-Version: 1.0
12.5 OpenIDE-Module: org.netbeans.modules.tasklist.usertasks/2
12.6 -OpenIDE-Module-Implementation-Version: 64
12.7 +OpenIDE-Module-Implementation-Version: 65
12.8 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/tasklist/usertasks/Bundle.properties
12.9 OpenIDE-Module-Layer: org/netbeans/modules/tasklist/usertasks/mf-layer.xml
12.10
13.1 --- a/tasklist.usertasks/nbproject/project.properties Mon Dec 04 21:57:00 2006 +0000
13.2 +++ b/tasklist.usertasks/nbproject/project.properties Mon Dec 04 21:59:57 2006 +0000
13.3 @@ -19,4 +19,3 @@
13.4 javadoc.arch=${basedir}/arch.xml
13.5 spec.version.base=1.29.0
13.6 nbm.homepage=http://tasklist.netbeans.org/updates/tasklist-usertasks.html
13.7 -extra.module.files=modules/ext/jcalendar-1.3.0.jar,modules/ext/ical4j-0.9.20.jar
14.1 --- a/tasklist.usertasks/nbproject/project.xml Mon Dec 04 21:57:00 2006 +0000
14.2 +++ b/tasklist.usertasks/nbproject/project.xml Mon Dec 04 21:59:57 2006 +0000
14.3 @@ -33,12 +33,21 @@
14.4 </run-dependency>
14.5 </dependency>
14.6 <dependency>
14.7 - <code-name-base>org.netbeans.libs.commons_logging</code-name-base>
14.8 + <code-name-base>org.netbeans.libs.ical4j</code-name-base>
14.9 <build-prerequisite/>
14.10 <compile-dependency/>
14.11 <run-dependency>
14.12 <release-version>1</release-version>
14.13 - <specification-version>1.2</specification-version>
14.14 + <implementation-version/>
14.15 + </run-dependency>
14.16 + </dependency>
14.17 + <dependency>
14.18 + <code-name-base>org.netbeans.libs.jcalendar</code-name-base>
14.19 + <build-prerequisite/>
14.20 + <compile-dependency/>
14.21 + <run-dependency>
14.22 + <release-version>1</release-version>
14.23 + <implementation-version/>
14.24 </run-dependency>
14.25 </dependency>
14.26 <dependency>
14.27 @@ -157,14 +166,6 @@
14.28 </dependency>
14.29 </module-dependencies>
14.30 <public-packages/>
14.31 - <class-path-extension>
14.32 - <runtime-relative-path>ext/jcalendar-1.3.0.jar</runtime-relative-path>
14.33 - <binary-origin>../external/jcalendar-1.3.0.jar</binary-origin>
14.34 - </class-path-extension>
14.35 - <class-path-extension>
14.36 - <runtime-relative-path>ext/ical4j-0.9.20.jar</runtime-relative-path>
14.37 - <binary-origin>../external/ical4j-0.9.20.jar</binary-origin>
14.38 - </class-path-extension>
14.39 </data>
14.40 </configuration>
14.41 </project>
15.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
15.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/AutoSaver.java Mon Dec 04 21:59:57 2006 +0000
15.3 @@ -0,0 +1,266 @@
15.4 +/*
15.5 + * The contents of this file are subject to the terms of the Common Development
15.6 + * and Distribution License (the License). You may not use this file except in
15.7 + * compliance with the License.
15.8 + *
15.9 + * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
15.10 + * or http://www.netbeans.org/cddl.txt.
15.11 + *
15.12 + * When distributing Covered Code, include this CDDL Header Notice in each file
15.13 + * and include the License file at http://www.netbeans.org/cddl.txt.
15.14 + * If applicable, add the following below the CDDL Header, with the fields
15.15 + * enclosed by brackets [] replaced by your own identifying information:
15.16 + * "Portions Copyrighted [year] [name of copyright owner]"
15.17 + *
15.18 + * The Original Software is NetBeans. The Initial Developer of the Original
15.19 + * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
15.20 + * Microsystems, Inc. All Rights Reserved.
15.21 + */
15.22 +
15.23 +package org.netbeans.modules.tasklist.usertasks;
15.24 +
15.25 +import java.awt.event.ActionListener;
15.26 +import java.awt.event.ActionEvent;
15.27 +import java.io.BufferedOutputStream;
15.28 +import java.io.File;
15.29 +import java.io.IOException;
15.30 +import java.io.OutputStreamWriter;
15.31 +import java.io.Writer;
15.32 +import java.net.URISyntaxException;
15.33 +import java.text.ParseException;
15.34 +import java.util.logging.Level;
15.35 +import javax.swing.Timer;
15.36 +import javax.swing.event.ChangeEvent;
15.37 +import javax.swing.event.ChangeListener;
15.38 +import javax.swing.event.EventListenerList;
15.39 +import net.fortuna.ical4j.model.ValidationException;
15.40 +import org.netbeans.modules.tasklist.usertasks.model.UserTaskList;
15.41 +import org.netbeans.modules.tasklist.usertasks.translators.ICalExportFormat;
15.42 +import org.netbeans.modules.tasklist.usertasks.util.UTUtils;
15.43 +import org.openide.DialogDisplayer;
15.44 +import org.openide.NotifyDescriptor;
15.45 +import org.openide.NotifyDescriptor.Message;
15.46 +import org.openide.filesystems.FileLock;
15.47 +import org.openide.filesystems.FileObject;
15.48 +import org.openide.filesystems.FileUtil;
15.49 +import org.openide.loaders.DataObject;
15.50 +import org.openide.loaders.DataObjectNotFoundException;
15.51 +
15.52 +/**
15.53 + * Automatic saving for .ics files.
15.54 + *
15.55 + * @author Tor Norbye
15.56 + * @author tl
15.57 + */
15.58 +public class AutoSaver {
15.59 + private UserTaskList utl;
15.60 + private EventListenerList listeners = new EventListenerList();
15.61 +
15.62 + /**
15.63 + * Has the options set changed such that we need to save
15.64 + */
15.65 + private boolean modified = false;
15.66 +
15.67 + /** File being shown in this tasklist */
15.68 + private FileObject file = null;
15.69 +
15.70 + /**
15.71 + * Timer which keeps track of outstanding save requests - that way
15.72 + * deleting multiple items for example will not cause multiple saves.
15.73 + */
15.74 + private Timer runTimer = null;
15.75 +
15.76 + private boolean enabled = false;
15.77 + private DataObject do_;
15.78 +
15.79 + /**
15.80 + * Creates a new instance of AutoSaver.
15.81 + *
15.82 + * @param utl a task list
15.83 + * @param file target file
15.84 + */
15.85 + public AutoSaver(UserTaskList utl, FileObject file) {
15.86 + try {
15.87 + this.do_ = DataObject.find(file);
15.88 + } catch (DataObjectNotFoundException e) {
15.89 + UTUtils.LOGGER.log(Level.SEVERE, e.getMessage(), e);
15.90 + }
15.91 + this.utl = utl;
15.92 + this.file = file;
15.93 + this.utl.addChangeListener(new ChangeListener() {
15.94 + public void stateChanged(ChangeEvent ev) {
15.95 + if (modified != true) {
15.96 + UTUtils.LOGGER.fine("modified = true"); // NOI18N
15.97 + modified = true;
15.98 + do_.setModified(true);
15.99 + fireChange();
15.100 + }
15.101 + if (enabled)
15.102 + scheduleWrite();
15.103 + }
15.104 + });
15.105 + }
15.106 +
15.107 + /**
15.108 + * Is automatic saving enabled?
15.109 + *
15.110 + * @return true = yes
15.111 + */
15.112 + public boolean isEnabled() {
15.113 + return enabled;
15.114 + }
15.115 +
15.116 + /**
15.117 + * Enable/disable automatic saving.
15.118 + *
15.119 + * @param enabled true = save automatically
15.120 + */
15.121 + public void setEnabled(boolean enabled) {
15.122 + this.enabled = enabled;
15.123 + }
15.124 +
15.125 + /**
15.126 + * Location of the tasklist
15.127 + */
15.128 + public FileObject getFile() {
15.129 + return file;
15.130 + }
15.131 +
15.132 + /**
15.133 + * Schedule a document save
15.134 + */
15.135 + private void scheduleWrite() {
15.136 + // Stop our current timer; the previous node has not
15.137 + // yet been scanned; too brief an interval
15.138 + if (runTimer != null) {
15.139 + runTimer.stop();
15.140 + runTimer = null;
15.141 + }
15.142 + ActionListener al = new ActionListener() {
15.143 + public void actionPerformed(ActionEvent evt) {
15.144 + runTimer = null;
15.145 + try {
15.146 + save();
15.147 + } catch (IOException ioe) {
15.148 + DialogDisplayer.getDefault().notify(new Message(ioe,
15.149 + NotifyDescriptor.ERROR_MESSAGE));
15.150 + }
15.151 + }
15.152 + };
15.153 + // 0.3 second delay
15.154 + runTimer = new Timer(300, al);
15.155 + runTimer.setRepeats(false);
15.156 + runTimer.setCoalesce(true);
15.157 + runTimer.start();
15.158 + }
15.159 +
15.160 + /**
15.161 + * Was the task list modified since last saving?
15.162 + *
15.163 + * @return true = modified
15.164 + */
15.165 + public boolean isModified() {
15.166 + return modified;
15.167 + }
15.168 +
15.169 + /**
15.170 + * Write the list to iCal.
15.171 + */
15.172 + public void save() throws IOException {
15.173 + ICalExportFormat io = new ICalExportFormat();
15.174 +
15.175 + FileLock lock = this.file.lock();
15.176 + try {
15.177 + Writer w = new OutputStreamWriter(new BufferedOutputStream(
15.178 + file.getOutputStream(lock)), "UTF-8");;
15.179 + try {
15.180 + io.writeList(utl, w, false);
15.181 + } catch (ParseException e) {
15.182 + throw new IOException(e.getMessage());
15.183 + } catch (URISyntaxException e) {
15.184 + throw new IOException(e.getMessage());
15.185 + } catch (ValidationException e) {
15.186 + throw new IOException(e.getMessage());
15.187 + } finally {
15.188 + try {
15.189 + w.close();
15.190 + } catch (IOException e) {
15.191 + UTUtils.LOGGER.log(Level.WARNING,
15.192 + "failed closing file", e);
15.193 + }
15.194 + }
15.195 + } finally {
15.196 + lock.releaseLock();
15.197 + }
15.198 +
15.199 + // Remove permissions for others on the file when on Unix
15.200 + // varieties
15.201 + if (new File("/bin/chmod").exists()) { // NOI18N
15.202 + try {
15.203 + Runtime.getRuntime().exec(
15.204 + new String[] {"/bin/chmod", "go-rwx", // NOI18N
15.205 + FileUtil.toFile(this.file).getAbsolutePath()});
15.206 + } catch (Exception e) {
15.207 + // Silently accept
15.208 + UTUtils.LOGGER.log(Level.INFO,
15.209 + "chmod call failed", e); // NOI18N
15.210 + }
15.211 + }
15.212 +
15.213 + if (modified != false) {
15.214 + modified = false;
15.215 + do_.setModified(false);
15.216 + UTUtils.LOGGER.fine("modified = true"); // NOI18N
15.217 + fireChange();
15.218 + }
15.219 + }
15.220 +
15.221 + /**
15.222 + * Returns the task list associated with this AutoSaver.
15.223 + *
15.224 + * @return task list
15.225 + */
15.226 + public UserTaskList getUserTaskList() {
15.227 + return utl;
15.228 + }
15.229 +
15.230 +
15.231 + /**
15.232 + * Adds a change listener. The listener will be notified whenever the
15.233 + * modified flag changes.
15.234 + *
15.235 + * @param l a listener
15.236 + */
15.237 + public void addChangeListener(ChangeListener l) {
15.238 + listeners.add(ChangeListener.class, l);
15.239 + }
15.240 +
15.241 + /**
15.242 + * Removes a change listener.
15.243 + *
15.244 + * @param l a listener.
15.245 + */
15.246 + public void removeChangeListener(ChangeListener l) {
15.247 + listeners.remove(ChangeListener.class, l);
15.248 + }
15.249 +
15.250 + /**
15.251 + * Fires a ChangeEvent
15.252 + */
15.253 + void fireChange() {
15.254 + // Guaranteed to return a non-null array
15.255 + Object[] list = listeners.getListenerList();
15.256 +
15.257 + // Process the listeners last to first, notifying
15.258 + // those that are interested in this event
15.259 + ChangeEvent changeEvent = null;
15.260 + for (int i = list.length - 2; i >= 0; i -= 2) {
15.261 + if (list[i] == ChangeListener.class) {
15.262 + // Lazily create the event:
15.263 + if (changeEvent == null)
15.264 + changeEvent = new ChangeEvent(this);
15.265 + ((ChangeListener) list[i+1]).stateChanged(changeEvent);
15.266 + }
15.267 + }
15.268 + }
15.269 +}
16.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/Bundle.properties Mon Dec 04 21:57:00 2006 +0000
16.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/Bundle.properties Mon Dec 04 21:59:57 2006 +0000
16.3 @@ -66,20 +66,19 @@
16.4 Effort=Effort
16.5 General=General
16.6 TimeRelated=Time Related
16.7 -UseThisValue=Use This Value:
16.8 -Progress=Progress
16.9 -ComputeEffortAutomatically=Compute automatically as a sum of the subtask values
16.10 -ComputeProgressAutomatically=Compute automatically as a weighted sum of the subtask values
16.11 DueDateCb=D&ue:
16.12 Brief_Description=&Summary:
16.13 AssociatedFile=Associated &File:
16.14 -ComputeSpentTkme=Compute automatically as a sum of the subtask values
16.15 LBL_DependenciesTab=Dependencies
16.16 OwnerLabel=&Owner\:
16.17 Completed=Completed\:
16.18 -WordPeriods=Work Periods
16.19 SpentTimeToday=Spent time today\:
16.20 LBL_Start=&Start\:
16.21 +ComputeAll=Compute Effort, Spent Time and Progress &Automatically
16.22 +Effort_=&Effort\:
16.23 +Progress_=&Progress\:
16.24 +SpentTime_=Spent &Time\:
16.25 +HistoryOfSpentTimes=H&istory of Spent Times\:
16.26
16.27 ## UserTaskNode
16.28 LBL_detailsProperty=Description
16.29 @@ -112,12 +111,8 @@
16.30 HNT_spentTimeTodayProperty=Time spent for this task today
16.31 LBL_effortProperty=Effort
16.32 HNT_effortProperty=Effort
16.33 -LBL_computeProgress=Compute Progress
16.34 -HNT_progressComputed=Should the progress be computed automatically
16.35 -LBL_computeEffort=Compute Effort
16.36 -HNT_effortComputed=Should the effort be computed automatically
16.37 -LBL_spentTimeComputed=Compute Spent Time
16.38 -HNT_spentTimeComputed=Should the spent time be computed automatically
16.39 +LBL_valuesComputed=Compute Values
16.40 +HNT_valuesComputed=Should the progress, spent time and effort be computed automatically
16.41 LBL_ownerProperty=Owner
16.42 HNT_ownerProperty=A person that owns this task
16.43 LBL_completedDateProperty=Completed
16.44 @@ -155,3 +150,4 @@
16.45 ## TaskListDataObject
16.46 ErrorReadingFile=Error reading file: {0}
16.47
16.48 +
17.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
17.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/DueTasksNotifier.java Mon Dec 04 21:59:57 2006 +0000
17.3 @@ -0,0 +1,152 @@
17.4 +/*
17.5 + * The contents of this file are subject to the terms of the Common Development
17.6 + * and Distribution License (the License). You may not use this file except in
17.7 + * compliance with the License.
17.8 + *
17.9 + * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
17.10 + * or http://www.netbeans.org/cddl.txt.
17.11 + *
17.12 + * When distributing Covered Code, include this CDDL Header Notice in each file
17.13 + * and include the License file at http://www.netbeans.org/cddl.txt.
17.14 + * If applicable, add the following below the CDDL Header, with the fields
17.15 + * enclosed by brackets [] replaced by your own identifying information:
17.16 + * "Portions Copyrighted [year] [name of copyright owner]"
17.17 + *
17.18 + * The Original Software is NetBeans. The Initial Developer of the Original
17.19 + * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17.20 + * Microsystems, Inc. All Rights Reserved.
17.21 + */
17.22 +
17.23 +package org.netbeans.modules.tasklist.usertasks;
17.24 +
17.25 +import javax.swing.SwingUtilities;
17.26 +import javax.swing.event.ChangeEvent;
17.27 +import javax.swing.event.ChangeListener;
17.28 +import org.netbeans.modules.tasklist.usertasks.model.*;
17.29 +import org.netbeans.modules.tasklist.usertasks.model.UserTaskList.UserTaskProcessor;
17.30 +import org.openide.DialogDisplayer;
17.31 +import org.openide.DialogDescriptor;
17.32 +import org.openide.NotifyDescriptor;
17.33 +import org.openide.util.NbBundle;
17.34 +
17.35 +/**
17.36 + * Notifies the user about due tasks.
17.37 + *
17.38 + * @author tl
17.39 + */
17.40 +public class DueTasksNotifier implements Timeout {
17.41 + /**
17.42 + * Callback for finding the next timeout
17.43 + */
17.44 + private static class FindNextTimeoutUserTaskProcessor implements
17.45 + UserTaskProcessor {
17.46 + private long nextTimeout = Long.MAX_VALUE;
17.47 +
17.48 + /** Task for the next timeout */
17.49 + public UserTask ref = null;
17.50 +
17.51 + public void process(UserTask t) {
17.52 + long n = t.getDueTime();
17.53 + if (n != Long.MAX_VALUE && !t.isDueAlarmSent() && !t.isDone() &&
17.54 + n > System.currentTimeMillis() && n < nextTimeout) {
17.55 + nextTimeout = n;
17.56 + ref = t;
17.57 + }
17.58 + }
17.59 + }
17.60 +
17.61 + private static class ShowExpiredUserTaskProcessor implements
17.62 + UserTaskProcessor {
17.63 + public void process(UserTask t) {
17.64 + long n = t.getDueTime();
17.65 + if (n != Long.MAX_VALUE && !t.isDueAlarmSent() &&
17.66 + !t.isDone() &&
17.67 + n <= System.currentTimeMillis()) {
17.68 + showExpiredTask(t);
17.69 + }
17.70 + }
17.71 +
17.72 + /**
17.73 + * Present the user with a dialog that shows information of the task that
17.74 + * expired...
17.75 + *
17.76 + * @param task the task to show
17.77 + */
17.78 + private void showExpiredTask(UserTask task) {
17.79 + task.setDueAlarmSent(true);
17.80 +
17.81 + final UserTask t = task;
17.82 + SwingUtilities.invokeLater(new Runnable() {
17.83 + public void run() {
17.84 + UserTaskDuePanel panel = new UserTaskDuePanel(t);
17.85 +
17.86 + String title = NbBundle.getMessage(UserTaskList.class, "TaskDueLabel"); // NOI18N
17.87 + DialogDescriptor d = new DialogDescriptor(panel, title);
17.88 + d.setModal(true);
17.89 + d.setMessageType(NotifyDescriptor.PLAIN_MESSAGE);
17.90 + d.setOptions(new Object[] {DialogDescriptor.OK_OPTION});
17.91 + java.awt.Dialog dlg = DialogDisplayer.getDefault().createDialog(d);
17.92 + dlg.pack();
17.93 + dlg.setVisible(true);
17.94 + }
17.95 + });
17.96 + }
17.97 + }
17.98 +
17.99 + /** The current timeout */
17.100 + private long currentTimeout;
17.101 +
17.102 + private UserTaskList utl;
17.103 +
17.104 + /**
17.105 + * Creates a new instance of DueTasksNotifier
17.106 + *
17.107 + * @param utl a task list
17.108 + */
17.109 + public DueTasksNotifier(UserTaskList utl) {
17.110 + this.utl = utl;
17.111 + currentTimeout = Long.MAX_VALUE;
17.112 + utl.addChangeListener(new ChangeListener() {
17.113 + public void stateChanged(ChangeEvent e) {
17.114 + orderNextTimeout();
17.115 + }
17.116 + });
17.117 + }
17.118 +
17.119 + /**
17.120 + * Order a timeout for the next due date
17.121 + */
17.122 + public void orderNextTimeout() {
17.123 + ShowExpiredUserTaskProcessor se =
17.124 + new ShowExpiredUserTaskProcessor();
17.125 + utl.processDepthFirst(se, utl.getSubtasks());
17.126 +
17.127 + FindNextTimeoutUserTaskProcessor p =
17.128 + new FindNextTimeoutUserTaskProcessor();
17.129 + utl.processDepthFirst(p, utl.getSubtasks());
17.130 +
17.131 + if (p.ref != null && p.ref.getDueTime() != Long.MAX_VALUE &&
17.132 + !p.ref.isDueAlarmSent() && !p.ref.isDone() &&
17.133 + p.ref.getDueTime() != currentTimeout) {
17.134 + // cancel the previous ordered timeout, and add the new one
17.135 + if (currentTimeout != Long.MAX_VALUE) {
17.136 + TimeoutProvider.getInstance().cancel(this, null);
17.137 + }
17.138 + TimeoutProvider.getInstance().add(this, p.ref, p.ref.getDueTime());
17.139 + currentTimeout = p.ref.getDueTime();
17.140 + }
17.141 + }
17.142 +
17.143 + /**
17.144 + * Callback function for the TimeoutProvider to call when the timeout
17.145 + * expired. This function will block the TimeoutProviders thread, so
17.146 + * it should be used for a timeconsuming task (one should probably
17.147 + * reschedule oneself with the SwingUtilities.invokeLater() ???)
17.148 + * @param o the object provided as a user reference
17.149 + */
17.150 + public void timeoutExpired(Object o) {
17.151 + // order the next timeout for this list
17.152 + orderNextTimeout();
17.153 + }
17.154 +
17.155 +}
18.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/DurationPanel.java Mon Dec 04 21:57:00 2006 +0000
18.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/DurationPanel.java Mon Dec 04 21:59:57 2006 +0000
18.3 @@ -19,14 +19,15 @@
18.4
18.5 package org.netbeans.modules.tasklist.usertasks;
18.6
18.7 -import java.beans.PropertyEditor;
18.8 -import java.text.MessageFormat;
18.9 +import java.awt.Component;
18.10 +import java.awt.event.ActionListener;
18.11 import java.text.ParseException;
18.12 -import javax.swing.JSpinner;
18.13 -import javax.swing.SpinnerNumberModel;
18.14 -import javax.swing.event.ChangeListener;
18.15 -import javax.swing.event.DocumentEvent;
18.16 -import javax.swing.event.DocumentListener;
18.17 +import javax.swing.ComboBoxEditor;
18.18 +import javax.swing.DefaultComboBoxModel;
18.19 +import javax.swing.DefaultListCellRenderer;
18.20 +import javax.swing.JComboBox;
18.21 +import javax.swing.JList;
18.22 +import javax.swing.text.JTextComponent;
18.23
18.24 import org.netbeans.modules.tasklist.usertasks.model.Duration;
18.25 import org.netbeans.modules.tasklist.usertasks.options.Settings;
18.26 @@ -37,11 +38,34 @@
18.27 *
18.28 * @author tl
18.29 */
18.30 -public class DurationPanel extends javax.swing.JPanel implements
18.31 - ChangeListener {
18.32 +public class DurationPanel extends JComboBox {
18.33 private static final long serialVersionUID = 1;
18.34
18.35 - private PropertyEditor pe;
18.36 + /**
18.37 + * This array must be sorted.
18.38 + */
18.39 + private static final int[] DURATIONS = new int[] {
18.40 + 0,
18.41 + 5,
18.42 + 10,
18.43 + 15,
18.44 + 20,
18.45 + 30,
18.46 + 45,
18.47 + 60,
18.48 + 90,
18.49 + 120,
18.50 + 150,
18.51 + 180,
18.52 + 240,
18.53 + 300,
18.54 + 360,
18.55 + 420,
18.56 + 480,
18.57 + 12 * 60,
18.58 + 8 * 60 * 2
18.59 + };
18.60 +
18.61 private DurationFormat short_ = new DurationFormat(
18.62 DurationFormat.Type.SHORT);
18.63 private DurationFormat long_ = new DurationFormat(DurationFormat.Type.LONG);
18.64 @@ -51,37 +75,76 @@
18.65 * Creates new form DurationPanel
18.66 */
18.67 public DurationPanel() {
18.68 - initComponents();
18.69 - setOpaque(false);
18.70 - jTextField.getDocument().addDocumentListener(new DocumentListener() {
18.71 - public void changedUpdate(DocumentEvent e) {
18.72 - stateChanged(null);
18.73 + final ComboBoxEditor def = getEditor();
18.74 + setEditor(new ComboBoxEditor() {
18.75 + public void addActionListener(ActionListener l) {
18.76 + def.addActionListener(l);
18.77 }
18.78 - public void insertUpdate(DocumentEvent e) {
18.79 - stateChanged(null);
18.80 + public Component getEditorComponent() {
18.81 + return def.getEditorComponent();
18.82 }
18.83 - public void removeUpdate(DocumentEvent e) {
18.84 - stateChanged(null);
18.85 + public Object getItem() {
18.86 + String text = ((JTextComponent) getEditorComponent()).getText();
18.87 + Duration d = null;
18.88 + try {
18.89 + d = short_.parse(text);
18.90 + } catch (ParseException ex) {
18.91 + // ignore
18.92 + }
18.93 + if (d == null) {
18.94 + try {
18.95 + d = long_.parse(text);
18.96 + } catch (ParseException ex) {
18.97 + // ignore
18.98 + }
18.99 + }
18.100 + if (d == null)
18.101 + d = dur;
18.102 + if (d == null)
18.103 + return 0;
18.104 +
18.105 + return d.toMinutes(Settings.getDefault().getMinutesPerDay(),
18.106 + Settings.getDefault().getDaysPerWeek(), true);
18.107 + }
18.108 + public void removeActionListener(ActionListener l) {
18.109 + def.removeActionListener(l);
18.110 + }
18.111 + public void selectAll() {
18.112 + def.selectAll();
18.113 + }
18.114 + public void setItem(Object anObject) {
18.115 + String text = "";
18.116 + if (anObject != null) {
18.117 + int m = ((Integer) anObject).intValue();
18.118 + int mpd = Settings.getDefault().getMinutesPerDay();
18.119 + int dpw = Settings.getDefault().getDaysPerWeek();
18.120 + Duration d = new Duration(m, mpd, dpw, true);
18.121 + text = long_.format(d);
18.122 + }
18.123 + ((JTextComponent) getEditorComponent()).setText(text);
18.124 }
18.125 });
18.126 - }
18.127 -
18.128 - public void setEnabled(boolean b) {
18.129 - super.setEnabled(b);
18.130 - jTextField.setEnabled(b);
18.131 - }
18.132 -
18.133 - /**
18.134 - * Sets new property editor.
18.135 - *
18.136 - * @param pe a property editor or null
18.137 - */
18.138 - public void setPropertyEditor(PropertyEditor pe) {
18.139 - this.pe = pe;
18.140 - if (pe != null) {
18.141 - Integer v = (Integer) pe.getValue();
18.142 - setDuration(v == null ? 0 : v.intValue());
18.143 + setEditable(true);
18.144 + DefaultComboBoxModel m = new DefaultComboBoxModel();
18.145 + for (int d: DURATIONS) {
18.146 + m.addElement(d);
18.147 }
18.148 + setModel(m);
18.149 + setRenderer(new DefaultListCellRenderer() {
18.150 + public Component getListCellRendererComponent(
18.151 + JList list, Object value, int index, boolean isSelected,
18.152 + boolean cellHasFocus) {
18.153 + super.getListCellRendererComponent(list, value, index,
18.154 + isSelected, cellHasFocus);
18.155 + int m = ((Integer) value).intValue();
18.156 + int mpd = Settings.getDefault().getMinutesPerDay();
18.157 + int dpw = Settings.getDefault().getDaysPerWeek();
18.158 + // UTUtils.LOGGER.fine("mpd=" + mpd + ", dpw=" + dpw);
18.159 + Duration d = new Duration(m, mpd, dpw, true);
18.160 + setText(long_.format(d));
18.161 + return this;
18.162 + }
18.163 + });
18.164 }
18.165
18.166 /**
18.167 @@ -90,11 +153,22 @@
18.168 * @param minutes new duration in minutes
18.169 */
18.170 public void setDuration(int minutes) {
18.171 - dur = new Duration(minutes,
18.172 - Settings.getDefault().getMinutesPerDay(),
18.173 - Settings.getDefault().getDaysPerWeek(), true);
18.174 -
18.175 - jTextField.setText(short_.format(dur));
18.176 + int index = getModel().getSize();
18.177 + for (int i = getModel().getSize() - 1; i >= 0; i--) {
18.178 + int dur = ((Integer) getModel().getElementAt(i)).intValue();
18.179 + if (minutes > dur) {
18.180 + index = i + 1;
18.181 + break;
18.182 + }
18.183 + }
18.184 + int dur = ((Integer) getModel().getElementAt(index - 1)).intValue();
18.185 + if (dur == minutes) {
18.186 + setSelectedIndex(index - 1);
18.187 + } else {
18.188 + ((DefaultComboBoxModel) getModel()).insertElementAt(minutes,
18.189 + index);
18.190 + setSelectedIndex(index);
18.191 + }
18.192 }
18.193
18.194 /**
18.195 @@ -103,54 +177,6 @@
18.196 * @return duration in minutes
18.197 */
18.198 public int getDuration() {
18.199 - Duration d = null;
18.200 - try {
18.201 - d = short_.parse(jTextField.getText());
18.202 - } catch (ParseException ex) {
18.203 - // ignore
18.204 - }
18.205 - if (d == null) {
18.206 - try {
18.207 - d = long_.parse(jTextField.getText());
18.208 - } catch (ParseException ex) {
18.209 - // ignore
18.210 - }
18.211 - }
18.212 - if (d == null)
18.213 - d = dur;
18.214 - if (d == null)
18.215 - return 0;
18.216 -
18.217 - return d.toMinutes(Settings.getDefault().getMinutesPerDay(),
18.218 - Settings.getDefault().getDaysPerWeek(), true);
18.219 + return ((Integer) getSelectedItem()).intValue();
18.220 }
18.221 -
18.222 - public void stateChanged(javax.swing.event.ChangeEvent e) {
18.223 - if (pe != null) {
18.224 - pe.setValue(new Integer(getDuration()));
18.225 - }
18.226 - }
18.227 -
18.228 - /** This method is called from within the constructor to
18.229 - * initialize the form.
18.230 - * WARNING: Do NOT modify this code. The content of this method is
18.231 - * always regenerated by the Form Editor.
18.232 - */
18.233 - // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
18.234 - private void initComponents() {
18.235 - java.awt.GridBagConstraints gridBagConstraints;
18.236 -
18.237 - jTextField = new javax.swing.JTextField();
18.238 -
18.239 - setLayout(new java.awt.BorderLayout());
18.240 -
18.241 - jTextField.setColumns(10);
18.242 - add(jTextField, java.awt.BorderLayout.CENTER);
18.243 - }// </editor-fold>//GEN-END:initComponents
18.244 -
18.245 -
18.246 - // Variables declaration - do not modify//GEN-BEGIN:variables
18.247 - private javax.swing.JTextField jTextField;
18.248 - // End of variables declaration//GEN-END:variables
18.249 -
18.250 }
19.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/EditTaskPanel.form Mon Dec 04 21:57:00 2006 +0000
19.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/EditTaskPanel.form Mon Dec 04 21:59:57 2006 +0000
19.3 @@ -1,6 +1,6 @@
19.4 <?xml version="1.0" encoding="UTF-8" ?>
19.5
19.6 -<Form version="1.0" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
19.7 +<Form version="1.3" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
19.8 <NonVisualComponents>
19.9 <Component class="javax.swing.ButtonGroup" name="addButtonGroup">
19.10 </Component>
19.11 @@ -19,10 +19,11 @@
19.12 <AuxValues>
19.13 <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
19.14 <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
19.15 + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/>
19.16 <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
19.17 <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
19.18 <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
19.19 - <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,7,0,0,2,-109"/>
19.20 + <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,2,-57,0,0,2,115"/>
19.21 </AuxValues>
19.22
19.23 <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
19.24 @@ -95,7 +96,9 @@
19.25 <SubComponents>
19.26 <Component class="javax.swing.JTextArea" name="detailsTextArea">
19.27 <Properties>
19.28 + <Property name="lineWrap" type="boolean" value="true"/>
19.29 <Property name="rows" type="int" value="5"/>
19.30 + <Property name="wrapStyleWord" type="boolean" value="true"/>
19.31 </Properties>
19.32 </Component>
19.33 </SubComponents>
19.34 @@ -108,7 +111,7 @@
19.35 </Properties>
19.36 <Constraints>
19.37 <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.38 - <GridBagConstraints gridX="0" gridY="6" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.39 + <GridBagConstraints gridX="0" gridY="7" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.40 </Constraint>
19.41 </Constraints>
19.42 </Component>
19.43 @@ -126,7 +129,7 @@
19.44 </AuxValues>
19.45 <Constraints>
19.46 <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.47 - <GridBagConstraints gridX="1" gridY="6" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.48 + <GridBagConstraints gridX="1" gridY="7" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.49 </Constraint>
19.50 </Constraints>
19.51 </Component>
19.52 @@ -159,7 +162,7 @@
19.53 </AuxValues>
19.54 <Constraints>
19.55 <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.56 - <GridBagConstraints gridX="1" gridY="7" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.57 + <GridBagConstraints gridX="1" gridY="8" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.58 </Constraint>
19.59 </Constraints>
19.60 </Component>
19.61 @@ -271,18 +274,6 @@
19.62 </Component>
19.63 </SubComponents>
19.64 </Container>
19.65 - <Component class="javax.swing.JButton" name="addSourceButton">
19.66 - <Properties>
19.67 - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor" preCode="/*" postCode="*/">
19.68 - <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="AddToSource" replaceFormat="NbBundle.getMessage(EditTaskPanel.class, "{key}")); // NOI18N("/>
19.69 - </Property>
19.70 - </Properties>
19.71 - <Constraints>
19.72 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.73 - <GridBagConstraints gridX="1" gridY="8" gridWidth="2" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="12" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="1.0" weightY="0.0"/>
19.74 - </Constraint>
19.75 - </Constraints>
19.76 - </Component>
19.77 <Component class="javax.swing.JLabel" name="prioLabel">
19.78 <Properties>
19.79 <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
19.80 @@ -323,6 +314,22 @@
19.81 </Constraint>
19.82 </Constraints>
19.83 </Component>
19.84 + <Component class="org.netbeans.modules.tasklist.usertasks.util.JLinkButton" name="jLinkButtonAddToSource">
19.85 + <Properties>
19.86 + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.87 + <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="AddToSource" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.88 + </Property>
19.89 + <Property name="horizontalAlignment" type="int" value="2"/>
19.90 + </Properties>
19.91 + <Events>
19.92 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jLinkButtonAddToSourceActionPerformed"/>
19.93 + </Events>
19.94 + <Constraints>
19.95 + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.96 + <GridBagConstraints gridX="1" gridY="6" gridWidth="3" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
19.97 + </Constraint>
19.98 + </Constraints>
19.99 + </Component>
19.100 </SubComponents>
19.101 </Container>
19.102 <Container class="javax.swing.JPanel" name="jPanel3">
19.103 @@ -343,364 +350,295 @@
19.104 </Constraint>
19.105 </Constraints>
19.106
19.107 - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
19.108 + <Layout>
19.109 + <DimensionLayout dim="0">
19.110 + <Group type="103" groupAlignment="0" attributes="0">
19.111 + <Group type="102" attributes="0">
19.112 + <Group type="103" groupAlignment="0" attributes="0">
19.113 + <Component id="jLabel6" min="-2" max="-2" attributes="0"/>
19.114 + <Component id="jLabel5" min="-2" max="-2" attributes="0"/>
19.115 + <Component id="jLabel2" alignment="0" min="-2" max="-2" attributes="0"/>
19.116 + </Group>
19.117 + <EmptySpace max="-2" attributes="0"/>
19.118 + <Group type="103" groupAlignment="0" attributes="0">
19.119 + <Component id="jLabelLastEdited" alignment="0" min="-2" max="-2" attributes="0"/>
19.120 + <Component id="jLabelCompleted" alignment="0" min="-2" max="-2" attributes="0"/>
19.121 + <Component id="jLabelCreated" alignment="0" min="-2" max="-2" attributes="0"/>
19.122 + </Group>
19.123 + <EmptySpace pref="521" max="32767" attributes="0"/>
19.124 + </Group>
19.125 + <Component id="jLabel8" alignment="0" pref="599" max="32767" attributes="1"/>
19.126 + <Group type="102" alignment="0" attributes="0">
19.127 + <Component id="jLabel12" min="-2" max="-2" attributes="0"/>
19.128 + <EmptySpace pref="453" max="32767" attributes="0"/>
19.129 + </Group>
19.130 + <Group type="102" alignment="0" attributes="0">
19.131 + <Component id="jLabel3" min="-2" max="-2" attributes="0"/>
19.132 + <EmptySpace max="-2" attributes="0"/>
19.133 + <Component id="jLabelSpentTimeToday" min="-2" max="-2" attributes="0"/>
19.134 + <EmptySpace pref="484" max="32767" attributes="0"/>
19.135 + </Group>
19.136 + <Group type="102" alignment="0" attributes="0">
19.137 + <Component id="jCheckBoxCompute" min="-2" max="-2" attributes="1"/>
19.138 + <EmptySpace pref="234" max="32767" attributes="0"/>
19.139 + </Group>
19.140 + <Group type="102" attributes="0">
19.141 + <EmptySpace max="-2" attributes="0"/>
19.142 + <Group type="103" groupAlignment="0" attributes="0">
19.143 + <Component id="jLabel10" alignment="0" min="-2" max="-2" attributes="0"/>
19.144 + <Component id="jLabel11" alignment="0" min="-2" max="-2" attributes="0"/>
19.145 + <Component id="jLabel9" alignment="0" min="-2" max="-2" attributes="0"/>
19.146 + </Group>
19.147 + <EmptySpace max="-2" attributes="0"/>
19.148 + <Group type="103" groupAlignment="0" attributes="0">
19.149 + <Component id="durationPanelEffort" alignment="0" min="-2" max="-2" attributes="0"/>
19.150 + <Component id="jComboBoxProgress" alignment="0" min="-2" max="-2" attributes="0"/>
19.151 + <Component id="durationPanelSpent" alignment="0" min="-2" max="-2" attributes="0"/>
19.152 + </Group>
19.153 + <EmptySpace min="350" pref="350" max="350" attributes="0"/>
19.154 + </Group>
19.155 + <Group type="102" alignment="0" attributes="0">
19.156 + <Group type="103" groupAlignment="0" attributes="0">
19.157 + <Component id="jLabel7" alignment="0" min="-2" max="-2" attributes="0"/>
19.158 + <Component id="jLabel4" alignment="0" min="-2" max="-2" attributes="0"/>
19.159 + </Group>
19.160 + <EmptySpace max="-2" attributes="0"/>
19.161 + <Group type="103" groupAlignment="0" max="-2" attributes="0">
19.162 + <Component id="jDateChooserDue" max="32767" attributes="1"/>
19.163 + <Component id="jDateChooserStart" alignment="0" pref="148" max="32767" attributes="1"/>
19.164 + </Group>
19.165 + <EmptySpace pref="407" max="32767" attributes="0"/>
19.166 + </Group>
19.167 + <Component id="jScrollPane1" alignment="0" pref="599" max="32767" attributes="2"/>
19.168 + </Group>
19.169 + </DimensionLayout>
19.170 + <DimensionLayout dim="1">
19.171 + <Group type="103" groupAlignment="0" attributes="0">
19.172 + <Group type="102" alignment="0" attributes="0">
19.173 + <EmptySpace min="-2" max="-2" attributes="0"/>
19.174 + <Group type="103" groupAlignment="1" attributes="0">
19.175 + <Component id="jLabel7" min="-2" max="-2" attributes="0"/>
19.176 + <Component id="jDateChooserStart" min="-2" max="-2" attributes="0"/>
19.177 + </Group>
19.178 + <EmptySpace min="-2" max="-2" attributes="0"/>
19.179 + <Group type="103" groupAlignment="1" attributes="0">
19.180 + <Component id="jLabel4" min="-2" max="-2" attributes="0"/>
19.181 + <Component id="jDateChooserDue" min="-2" max="-2" attributes="0"/>
19.182 + </Group>
19.183 + <EmptySpace min="-2" pref="12" max="-2" attributes="0"/>
19.184 + <Component id="jCheckBoxCompute" min="-2" max="-2" attributes="0"/>
19.185 + <EmptySpace min="-2" max="-2" attributes="0"/>
19.186 + <Component id="jLabel8" pref="30" max="32767" attributes="0"/>
19.187 + <EmptySpace min="-2" max="-2" attributes="0"/>
19.188 + <Group type="103" groupAlignment="3" attributes="0">
19.189 + <Component id="jLabel9" alignment="3" min="-2" max="-2" attributes="0"/>
19.190 + <Component id="durationPanelEffort" alignment="3" min="-2" max="-2" attributes="0"/>
19.191 + </Group>
19.192 + <EmptySpace min="-2" max="-2" attributes="0"/>
19.193 + <Group type="103" groupAlignment="3" attributes="0">
19.194 + <Component id="jLabel11" alignment="3" min="-2" max="-2" attributes="0"/>
19.195 + <Component id="jComboBoxProgress" alignment="3" min="-2" max="-2" attributes="0"/>
19.196 + </Group>
19.197 + <EmptySpace min="-2" max="-2" attributes="0"/>
19.198 + <Group type="103" groupAlignment="3" attributes="0">
19.199 + <Component id="jLabel10" alignment="3" min="-2" max="-2" attributes="0"/>
19.200 + <Component id="durationPanelSpent" alignment="3" min="-2" max="-2" attributes="0"/>
19.201 + </Group>
19.202 + <EmptySpace min="-2" max="-2" attributes="0"/>
19.203 + <Group type="103" groupAlignment="3" attributes="0">
19.204 + <Component id="jLabel6" alignment="3" min="-2" max="-2" attributes="0"/>
19.205 + <Component id="jLabelLastEdited" alignment="3" pref="15" max="32767" attributes="0"/>
19.206 + </Group>
19.207 + <EmptySpace min="-2" max="-2" attributes="0"/>
19.208 + <Group type="103" groupAlignment="3" attributes="0">
19.209 + <Component id="jLabel5" alignment="3" min="-2" max="-2" attributes="0"/>
19.210 + <Component id="jLabelCreated" alignment="3" pref="15" max="32767" attributes="0"/>
19.211 + </Group>
19.212 + <EmptySpace min="-2" max="-2" attributes="0"/>
19.213 + <Group type="103" groupAlignment="3" attributes="0">
19.214 + <Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
19.215 + <Component id="jLabelCompleted" alignment="3" pref="15" max="32767" attributes="0"/>
19.216 + </Group>
19.217 + <EmptySpace min="-2" max="-2" attributes="0"/>
19.218 + <Group type="103" groupAlignment="3" attributes="0">
19.219 + <Component id="jLabel3" alignment="3" min="-2" max="-2" attributes="0"/>
19.220 + <Component id="jLabelSpentTimeToday" alignment="3" min="-2" max="-2" attributes="0"/>
19.221 + </Group>
19.222 + <EmptySpace min="-2" max="-2" attributes="0"/>
19.223 + <Component id="jLabel12" min="-2" max="-2" attributes="0"/>
19.224 + <EmptySpace min="-2" max="-2" attributes="0"/>
19.225 + <Component id="jScrollPane1" pref="341" max="32767" attributes="0"/>
19.226 + </Group>
19.227 + </Group>
19.228 + </DimensionLayout>
19.229 + </Layout>
19.230 <SubComponents>
19.231 - <Container class="javax.swing.JPanel" name="jPanel1">
19.232 - <Constraints>
19.233 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.234 - <GridBagConstraints gridX="3" gridY="6" gridWidth="0" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="1.0" weightY="1.0"/>
19.235 - </Constraint>
19.236 - </Constraints>
19.237 + <Component class="javax.swing.JLabel" name="jLabelLastEdited">
19.238 + </Component>
19.239 + <Container class="javax.swing.JScrollPane" name="jScrollPane1">
19.240
19.241 - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
19.242 - </Container>
19.243 - <Container class="javax.swing.JPanel" name="jPanel4">
19.244 - <Properties>
19.245 - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
19.246 - <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
19.247 - <TitledBorder title="Effort">
19.248 - <ResourceString PropertyName="titleX" bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="Effort" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.249 - </TitledBorder>
19.250 - </Border>
19.251 - </Property>
19.252 - </Properties>
19.253 - <Constraints>
19.254 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.255 - <GridBagConstraints gridX="0" gridY="2" gridWidth="3" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.256 - </Constraint>
19.257 - </Constraints>
19.258 -
19.259 - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
19.260 + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
19.261 <SubComponents>
19.262 - <Component class="javax.swing.JRadioButton" name="jRadioButtonComputeEffort">
19.263 - <Properties>
19.264 - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
19.265 - <ComponentRef name="effortButtonGroup"/>
19.266 - </Property>
19.267 - <Property name="selected" type="boolean" value="true"/>
19.268 - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.269 - <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="ComputeEffortAutomatically" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.270 - </Property>
19.271 - </Properties>
19.272 - <AuxValues>
19.273 - <AuxValue name="generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
19.274 - </AuxValues>
19.275 - <Constraints>
19.276 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.277 - <GridBagConstraints gridX="-1" gridY="-1" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
19.278 - </Constraint>
19.279 - </Constraints>
19.280 - </Component>
19.281 - <Component class="javax.swing.JRadioButton" name="jRadioButtonEffort">
19.282 - <Properties>
19.283 - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
19.284 - <ComponentRef name="effortButtonGroup"/>
19.285 - </Property>
19.286 - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.287 - <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="UseThisValue" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.288 - </Property>
19.289 - </Properties>
19.290 - <Events>
19.291 - <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="jRadioButtonEffortItemStateChanged"/>
19.292 - </Events>
19.293 - <AuxValues>
19.294 - <AuxValue name="generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
19.295 - </AuxValues>
19.296 - <Constraints>
19.297 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.298 - <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="18" weightX="0.0" weightY="0.0"/>
19.299 - </Constraint>
19.300 - </Constraints>
19.301 - </Component>
19.302 - <Container class="javax.swing.JPanel" name="jPanelEffort">
19.303 - <Constraints>
19.304 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.305 - <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="1.0" weightY="0.0"/>
19.306 - </Constraint>
19.307 - </Constraints>
19.308 -
19.309 - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
19.310 - </Container>
19.311 - </SubComponents>
19.312 - </Container>
19.313 - <Container class="javax.swing.JPanel" name="jPanel5">
19.314 - <Properties>
19.315 - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
19.316 - <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
19.317 - <TitledBorder title="Progress">
19.318 - <ResourceString PropertyName="titleX" bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="Progress" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.319 - </TitledBorder>
19.320 - </Border>
19.321 - </Property>
19.322 - </Properties>
19.323 - <Constraints>
19.324 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.325 - <GridBagConstraints gridX="0" gridY="3" gridWidth="3" gridHeight="1" fill="2" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.326 - </Constraint>
19.327 - </Constraints>
19.328 -
19.329 - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
19.330 - <SubComponents>
19.331 - <Component class="javax.swing.JComboBox" name="jComboBoxProgress">
19.332 - <Properties>
19.333 - <Property name="editable" type="boolean" value="true"/>
19.334 - <Property name="inputVerifier" type="javax.swing.InputVerifier" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
19.335 - <Connection code="new PercentsInputVerifier()" type="code"/>
19.336 - </Property>
19.337 - </Properties>
19.338 - <Constraints>
19.339 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.340 - <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
19.341 - </Constraint>
19.342 - </Constraints>
19.343 - </Component>
19.344 - <Component class="javax.swing.JRadioButton" name="jRadioButtonComputeProgress">
19.345 - <Properties>
19.346 - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
19.347 - <ComponentRef name="buttonGroupProgress"/>
19.348 - </Property>
19.349 - <Property name="selected" type="boolean" value="true"/>
19.350 - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.351 - <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="ComputeProgressAutomatically" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.352 - </Property>
19.353 - </Properties>
19.354 - <AuxValues>
19.355 - <AuxValue name="generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
19.356 - </AuxValues>
19.357 - <Constraints>
19.358 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.359 - <GridBagConstraints gridX="-1" gridY="-1" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
19.360 - </Constraint>
19.361 - </Constraints>
19.362 - </Component>
19.363 - <Component class="javax.swing.JRadioButton" name="jRadioButtonProgress">
19.364 - <Properties>
19.365 - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
19.366 - <ComponentRef name="buttonGroupProgress"/>
19.367 - </Property>
19.368 - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.369 - <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="UseThisValue" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.370 - </Property>
19.371 - </Properties>
19.372 - <Events>
19.373 - <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="jRadioButtonProgressItemStateChanged"/>
19.374 - </Events>
19.375 - <AuxValues>
19.376 - <AuxValue name="generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
19.377 - </AuxValues>
19.378 - <Constraints>
19.379 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.380 - <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.381 - </Constraint>
19.382 - </Constraints>
19.383 - </Component>
19.384 - <Container class="javax.swing.JPanel" name="jPanel6">
19.385 - <Properties>
19.386 - <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
19.387 - <Dimension value="[0, 0]"/>
19.388 - </Property>
19.389 - </Properties>
19.390 - <Constraints>
19.391 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.392 - <GridBagConstraints gridX="2" gridY="2" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="1.0" weightY="1.0"/>
19.393 - </Constraint>
19.394 - </Constraints>
19.395 -
19.396 - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
19.397 - </Container>
19.398 - </SubComponents>
19.399 - </Container>
19.400 - <Container class="javax.swing.JPanel" name="jPanel7">
19.401 - <Properties>
19.402 - <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
19.403 - <Border info="org.netbeans.modules.form.compat2.border.TitledBorderInfo">
19.404 - <TitledBorder title="Spent time"/>
19.405 - </Border>
19.406 - </Property>
19.407 - </Properties>
19.408 - <Constraints>
19.409 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.410 - <GridBagConstraints gridX="0" gridY="4" gridWidth="3" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="10" weightX="0.0" weightY="0.0"/>
19.411 - </Constraint>
19.412 - </Constraints>
19.413 -
19.414 - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
19.415 - <SubComponents>
19.416 - <Component class="javax.swing.JRadioButton" name="jRadioButtonComputeSpent">
19.417 - <Properties>
19.418 - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
19.419 - <ComponentRef name="buttonGroupSpent"/>
19.420 - </Property>
19.421 - <Property name="selected" type="boolean" value="true"/>
19.422 - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.423 - <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="ComputeSpentTkme" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.424 - </Property>
19.425 - </Properties>
19.426 - <AuxValues>
19.427 - <AuxValue name="generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
19.428 - </AuxValues>
19.429 - <Constraints>
19.430 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.431 - <GridBagConstraints gridX="-1" gridY="-1" gridWidth="2" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
19.432 - </Constraint>
19.433 - </Constraints>
19.434 - </Component>
19.435 - <Component class="javax.swing.JRadioButton" name="jRadioButtonSpent">
19.436 - <Properties>
19.437 - <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
19.438 - <ComponentRef name="buttonGroupSpent"/>
19.439 - </Property>
19.440 - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.441 - <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="UseThisValue" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.442 - </Property>
19.443 - </Properties>
19.444 - <Events>
19.445 - <EventHandler event="itemStateChanged" listener="java.awt.event.ItemListener" parameters="java.awt.event.ItemEvent" handler="jRadioButtonSpentItemStateChanged"/>
19.446 - </Events>
19.447 - <AuxValues>
19.448 - <AuxValue name="generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
19.449 - </AuxValues>
19.450 - <Constraints>
19.451 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.452 - <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="18" weightX="0.0" weightY="0.0"/>
19.453 - </Constraint>
19.454 - </Constraints>
19.455 - </Component>
19.456 - <Component class="org.netbeans.modules.tasklist.usertasks.DurationPanel" name="durationPanelSpent">
19.457 - <Properties>
19.458 - <Property name="enabled" type="boolean" value="false"/>
19.459 - </Properties>
19.460 - <Constraints>
19.461 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.462 - <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="1.0" weightY="0.0"/>
19.463 - </Constraint>
19.464 - </Constraints>
19.465 + <Component class="javax.swing.JList" name="jListWorkPeriods">
19.466 </Component>
19.467 </SubComponents>
19.468 </Container>
19.469 - <Container class="javax.swing.JPanel" name="jPanel9">
19.470 - <Constraints>
19.471 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.472 - <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="18" weightX="0.0" weightY="0.0"/>
19.473 - </Constraint>
19.474 - </Constraints>
19.475 -
19.476 - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
19.477 - <SubComponents>
19.478 - <Component class="com.toedter.calendar.JDateChooser" name="jDateChooserDue">
19.479 - <Constraints>
19.480 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.481 - <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
19.482 - </Constraint>
19.483 - </Constraints>
19.484 - </Component>
19.485 - <Component class="com.toedter.calendar.JDateChooser" name="jDateChooserStart">
19.486 - <Constraints>
19.487 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.488 - <GridBagConstraints gridX="1" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
19.489 - </Constraint>
19.490 - </Constraints>
19.491 - </Component>
19.492 - <Component class="javax.swing.JLabel" name="jLabel4">
19.493 - <Properties>
19.494 - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.495 - <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="DueDateCb" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.496 - </Property>
19.497 - </Properties>
19.498 - <Constraints>
19.499 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.500 - <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.501 - </Constraint>
19.502 - </Constraints>
19.503 - </Component>
19.504 - <Component class="javax.swing.JLabel" name="jLabel7">
19.505 - <Properties>
19.506 - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.507 - <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="LBL_Start" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.508 - </Property>
19.509 - </Properties>
19.510 - <Constraints>
19.511 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.512 - <GridBagConstraints gridX="0" gridY="0" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.513 - </Constraint>
19.514 - </Constraints>
19.515 - </Component>
19.516 - </SubComponents>
19.517 - </Container>
19.518 - <Container class="javax.swing.JPanel" name="jPanel10">
19.519 - <Constraints>
19.520 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.521 - <GridBagConstraints gridX="0" gridY="5" gridWidth="3" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="18" weightX="0.0" weightY="0.0"/>
19.522 - </Constraint>
19.523 - </Constraints>
19.524 -
19.525 - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
19.526 - <SubComponents>
19.527 - <Component class="javax.swing.JLabel" name="jLabelCreated">
19.528 - <Constraints>
19.529 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.530 - <GridBagConstraints gridX="1" gridY="6" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.531 - </Constraint>
19.532 - </Constraints>
19.533 - </Component>
19.534 - <Component class="javax.swing.JLabel" name="jLabel5">
19.535 - <Properties>
19.536 - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.537 - <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="CreatedLabel" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")); // NOI18N"/>
19.538 - </Property>
19.539 - </Properties>
19.540 - <Constraints>
19.541 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.542 - <GridBagConstraints gridX="0" gridY="6" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.543 - </Constraint>
19.544 - </Constraints>
19.545 - </Component>
19.546 - <Component class="javax.swing.JLabel" name="jLabelCompleted">
19.547 - <AuxValues>
19.548 - <AuxValue name="generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
19.549 - </AuxValues>
19.550 - <Constraints>
19.551 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.552 - <GridBagConstraints gridX="1" gridY="7" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.553 - </Constraint>
19.554 - </Constraints>
19.555 - </Component>
19.556 - <Component class="javax.swing.JLabel" name="jLabelLastEdited">
19.557 - <Constraints>
19.558 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.559 - <GridBagConstraints gridX="1" gridY="5" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.560 - </Constraint>
19.561 - </Constraints>
19.562 - </Component>
19.563 - <Component class="javax.swing.JLabel" name="jLabel2">
19.564 - <Properties>
19.565 - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.566 - <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="Completed" replaceFormat="org.openide.util.NbBundle.getBundle({sourceFileName}.class).getString("{key}")"/>
19.567 - </Property>
19.568 - </Properties>
19.569 - <AuxValues>
19.570 - <AuxValue name="generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
19.571 - </AuxValues>
19.572 - <Constraints>
19.573 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.574 - <GridBagConstraints gridX="0" gridY="7" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.575 - </Constraint>
19.576 - </Constraints>
19.577 - </Component>
19.578 - <Component class="javax.swing.JLabel" name="jLabel6">
19.579 - <Properties>
19.580 - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.581 - <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="LastEditedLabel" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")); // NOI18N"/>
19.582 - </Property>
19.583 - </Properties>
19.584 - <Constraints>
19.585 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.586 - <GridBagConstraints gridX="0" gridY="5" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="0" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.587 - </Constraint>
19.588 - </Constraints>
19.589 - </Component>
19.590 - </SubComponents>
19.591 - </Container>
19.592 + <Component class="javax.swing.JLabel" name="jLabelCompleted">
19.593 + <AuxValues>
19.594 + <AuxValue name="generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
19.595 + </AuxValues>
19.596 + </Component>
19.597 + <Component class="javax.swing.JLabel" name="jLabelCreated">
19.598 + </Component>
19.599 + <Component class="javax.swing.JCheckBox" name="jCheckBoxCompute">
19.600 + <Properties>
19.601 + <Property name="selected" type="boolean" value="true"/>
19.602 + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.603 + <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="ComputeAll" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.604 + </Property>
19.605 + <Property name="border" type="javax.swing.border.Border" editor="org.netbeans.modules.form.editors2.BorderEditor">
19.606 + <Border info="org.netbeans.modules.form.compat2.border.EmptyBorderInfo">
19.607 + <EmptyBorder bottom="0" left="0" right="0" top="0"/>
19.608 + </Border>
19.609 + </Property>
19.610 + <Property name="margin" type="java.awt.Insets" editor="org.netbeans.beaninfo.editors.InsetsEditor">
19.611 + <Insets value="[0, 0, 0, 0]"/>
19.612 + </Property>
19.613 + </Properties>
19.614 + <Events>
19.615 + <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jCheckBoxComputeActionPerformed"/>
19.616 + </Events>
19.617 + </Component>
19.618 + <Component class="javax.swing.JLabel" name="jLabel8">
19.619 + <Properties>
19.620 + <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
19.621 + <ComponentRef name="jCheckBoxCompute"/>
19.622 + </Property>
19.623 + <Property name="text" type="java.lang.String" value="<html>Effort and spent time will be computed as a sum of the subtask values. Progress will be computed as a weighted sum of the subtask values.</html>"/>
19.624 + </Properties>
19.625 + </Component>
19.626 + <Component class="javax.swing.JLabel" name="jLabel9">
19.627 + <Properties>
19.628 + <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
19.629 + <ComponentRef name="durationPanelEffort"/>
19.630 + </Property>
19.631 + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.632 + <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="Effort_" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.633 + </Property>
19.634 + </Properties>
19.635 + </Component>
19.636 + <Component class="org.netbeans.modules.tasklist.usertasks.DurationPanel" name="durationPanelSpent">
19.637 + <Properties>
19.638 + <Property name="enabled" type="boolean" value="false"/>
19.639 + </Properties>
19.640 + </Component>
19.641 + <Component class="javax.swing.JLabel" name="jLabel10">
19.642 + <Properties>
19.643 + <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
19.644 + <ComponentRef name="durationPanelSpent"/>
19.645 + </Property>
19.646 + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.647 + <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="SpentTime_" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.648 + </Property>
19.649 + </Properties>
19.650 + </Component>
19.651 + <Component class="javax.swing.JComboBox" name="jComboBoxProgress">
19.652 + <Properties>
19.653 + <Property name="editable" type="boolean" value="true"/>
19.654 + <Property name="enabled" type="boolean" value="false"/>
19.655 + <Property name="inputVerifier" type="javax.swing.InputVerifier" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
19.656 + <Connection code="new PercentsInputVerifier()" type="code"/>
19.657 + </Property>
19.658 + </Properties>
19.659 + </Component>
19.660 + <Component class="javax.swing.JLabel" name="jLabel11">
19.661 + <Properties>
19.662 + <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
19.663 + <ComponentRef name="jComboBoxProgress"/>
19.664 + </Property>
19.665 + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.666 + <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="Progress_" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.667 + </Property>
19.668 + </Properties>
19.669 + </Component>
19.670 + <Component class="javax.swing.JLabel" name="jLabel6">
19.671 + <Properties>
19.672 + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.673 + <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="LastEditedLabel" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")); // NOI18N"/>
19.674 + </Property>
19.675 + </Properties>
19.676 + </Component>
19.677 + <Component class="javax.swing.JLabel" name="jLabel5">
19.678 + <Properties>
19.679 + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.680 + <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="CreatedLabel" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")); // NOI18N"/>
19.681 + </Property>
19.682 + </Properties>
19.683 + </Component>
19.684 + <Component class="javax.swing.JLabel" name="jLabel2">
19.685 + <Properties>
19.686 + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.687 + <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="Completed" replaceFormat="org.openide.util.NbBundle.getBundle({sourceFileName}.class).getString("{key}")"/>
19.688 + </Property>
19.689 + </Properties>
19.690 + <AuxValues>
19.691 + <AuxValue name="generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
19.692 + </AuxValues>
19.693 + </Component>
19.694 + <Component class="org.netbeans.modules.tasklist.usertasks.DurationPanel" name="durationPanelEffort">
19.695 + <Properties>
19.696 + <Property name="enabled" type="boolean" value="false"/>
19.697 + </Properties>
19.698 + </Component>
19.699 + <Component class="com.toedter.calendar.JDateChooser" name="jDateChooserDue">
19.700 + </Component>
19.701 + <Component class="com.toedter.calendar.JDateChooser" name="jDateChooserStart">
19.702 + </Component>
19.703 + <Component class="javax.swing.JLabel" name="jLabel7">
19.704 + <Properties>
19.705 + <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
19.706 + <ComponentRef name="jDateChooserStart"/>
19.707 + </Property>
19.708 + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.709 + <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="LBL_Start" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.710 + </Property>
19.711 + </Properties>
19.712 + </Component>
19.713 + <Component class="javax.swing.JLabel" name="jLabel4">
19.714 + <Properties>
19.715 + <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
19.716 + <ComponentRef name="jDateChooserDue"/>
19.717 + </Property>
19.718 + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.719 + <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="DueDateCb" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.720 + </Property>
19.721 + </Properties>
19.722 + </Component>
19.723 + <Component class="javax.swing.JLabel" name="jLabel3">
19.724 + <Properties>
19.725 + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.726 + <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="SpentTimeToday" replaceFormat="org.openide.util.NbBundle.getBundle({sourceFileName}.class).getString("{key}")"/>
19.727 + </Property>
19.728 + </Properties>
19.729 + <AuxValues>
19.730 + <AuxValue name="generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
19.731 + </AuxValues>
19.732 + </Component>
19.733 + <Component class="javax.swing.JLabel" name="jLabelSpentTimeToday">
19.734 + <AuxValues>
19.735 + <AuxValue name="generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
19.736 + </AuxValues>
19.737 + </Component>
19.738 + <Component class="javax.swing.JLabel" name="jLabel12">
19.739 + <Properties>
19.740 + <Property name="labelFor" type="java.awt.Component" editor="org.netbeans.modules.form.ComponentChooserEditor">
19.741 + <ComponentRef name="jListWorkPeriods"/>
19.742 + </Property>
19.743 + <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.744 + <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="HistoryOfSpentTimes" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
19.745 + </Property>
19.746 + </Properties>
19.747 + </Component>
19.748 </SubComponents>
19.749 </Container>
19.750 <Container class="javax.swing.JPanel" name="jPanelDependencies">
19.751 @@ -716,62 +654,6 @@
19.752
19.753 <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
19.754 </Container>
19.755 - <Container class="javax.swing.JPanel" name="jPanel8">
19.756 - <Constraints>
19.757 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
19.758 - <JTabbedPaneConstraints tabName="Work Periods">
19.759 - <Property name="tabTitle" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.760 - <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="WordPeriods" replaceFormat="org.openide.util.NbBundle.getBundle({sourceFileName}.class).getString("{key}")"/>
19.761 - </Property>
19.762 - </JTabbedPaneConstraints>
19.763 - </Constraint>
19.764 - </Constraints>
19.765 -
19.766 - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout"/>
19.767 - <SubComponents>
19.768 - <Container class="javax.swing.JScrollPane" name="jScrollPane1">
19.769 - <Constraints>
19.770 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.771 - <GridBagConstraints gridX="-1" gridY="-1" gridWidth="2" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="11" insetsBottom="0" insetsRight="12" anchor="10" weightX="1.0" weightY="1.0"/>
19.772 - </Constraint>
19.773 - </Constraints>
19.774 -
19.775 - <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/>
19.776 - <SubComponents>
19.777 - <Component class="javax.swing.JList" name="jListWorkPeriods">
19.778 - </Component>
19.779 - </SubComponents>
19.780 - </Container>
19.781 - <Component class="javax.swing.JLabel" name="jLabel3">
19.782 - <Properties>
19.783 - <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
19.784 - <ResourceString bundle="org/netbeans/modules/tasklist/usertasks/Bundle.properties" key="SpentTimeToday" replaceFormat="org.openide.util.NbBundle.getBundle({sourceFileName}.class).getString("{key}")"/>
19.785 - </Property>
19.786 - </Properties>
19.787 - <AuxValues>
19.788 - <AuxValue name="generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
19.789 - </AuxValues>
19.790 - <Constraints>
19.791 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.792 - <GridBagConstraints gridX="0" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="11" insetsBottom="12" insetsRight="11" anchor="18" weightX="0.0" weightY="0.0"/>
19.793 - </Constraint>
19.794 - </Constraints>
19.795 - </Component>
19.796 - <Component class="javax.swing.JLabel" name="jLabelSpentTimeToday">
19.797 - <Properties>
19.798 - <Property name="text" type="java.lang.String" value=""""/>
19.799 - </Properties>
19.800 - <AuxValues>
19.801 - <AuxValue name="generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
19.802 - </AuxValues>
19.803 - <Constraints>
19.804 - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
19.805 - <GridBagConstraints gridX="1" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="11" insetsLeft="0" insetsBottom="12" insetsRight="12" anchor="17" weightX="0.0" weightY="0.0"/>
19.806 - </Constraint>
19.807 - </Constraints>
19.808 - </Component>
19.809 - </SubComponents>
19.810 - </Container>
19.811 </SubComponents>
19.812 </Container>
19.813 </SubComponents>
20.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/EditTaskPanel.java Mon Dec 04 21:57:00 2006 +0000
20.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/EditTaskPanel.java Mon Dec 04 21:59:57 2006 +0000
20.3 @@ -22,15 +22,13 @@
20.4 import java.awt.BorderLayout;
20.5 import java.awt.Dimension;
20.6 import java.awt.Toolkit;
20.7 -import java.awt.event.ActionEvent;
20.8 -import java.awt.event.ActionListener;
20.9 -import java.awt.event.ItemEvent;
20.10 import java.net.MalformedURLException;
20.11 import java.net.URL;
20.12 import java.text.DateFormat;
20.13 import java.text.SimpleDateFormat;
20.14 import java.util.Calendar;
20.15 import java.util.Date;
20.16 +import java.util.logging.Level;
20.17
20.18 import javax.swing.ComboBoxModel;
20.19 import javax.swing.DefaultComboBoxModel;
20.20 @@ -63,7 +61,7 @@
20.21 * @author Tor Norbye
20.22 * @author tl
20.23 */
20.24 -public class EditTaskPanel extends JPanel implements ActionListener {
20.25 +public class EditTaskPanel extends JPanel {
20.26
20.27 private static final long serialVersionUID = 1;
20.28
20.29 @@ -130,29 +128,25 @@
20.30 new Integer(UserTask.LOW),
20.31 });
20.32 private ListCellRenderer priorityRenderer = new PriorityListCellRenderer();
20.33 - private DurationPanel durationPanel = new DurationPanel();
20.34 private DependenciesPanel dp;
20.35
20.36 /**
20.37 - * Creates new form NewTodoItemPanel.
20.38 + * Creates new form.
20.39 *
20.40 * @param editing true = no append/prepend options
20.41 */
20.42 public EditTaskPanel(boolean editing) {
20.43 initComponents();
20.44 initA11y();
20.45 -
20.46 priorityComboBox.setSelectedIndex(2);
20.47
20.48 format = new SimpleDateFormat();
20.49
20.50 - addSourceButton.addActionListener(this);
20.51 -
20.52 if (editing) {
20.53 jPanelGeneral.remove(addLabel);
20.54 jPanelGeneral.remove(beginningToggle);
20.55 jPanelGeneral.remove(endToggle);
20.56 - jPanelGeneral.remove(addSourceButton);
20.57 + jPanelGeneral.remove(jLinkButtonAddToSource);
20.58 } else {
20.59 boolean append = appendDefault;
20.60 if (append) {
20.61 @@ -166,8 +160,6 @@
20.62 ((JComponent) jComboBoxProgress.getEditor().getEditorComponent()).
20.63 setInputVerifier(new EditTaskPanel.PercentsInputVerifier());
20.64
20.65 - jPanelEffort.add(durationPanel, BorderLayout.CENTER);
20.66 -
20.67 dp = new DependenciesPanel();
20.68 dp.setBorder(new EmptyBorder(11, 11, 12, 12));
20.69 jPanelDependencies.add(dp, BorderLayout.CENTER);
20.70 @@ -229,18 +221,10 @@
20.71 categoryCombo.setSelectedItem(item.getCategory());
20.72
20.73 jComboBoxProgress.setSelectedItem(item.getPercentComplete() + "%"); // NOI18N
20.74 - if (item.isProgressComputed())
20.75 - jRadioButtonComputeProgress.setSelected(true);
20.76 - else
20.77 - jRadioButtonProgress.setSelected(true);
20.78 - jRadioButtonProgressItemStateChanged(null);
20.79 + jCheckBoxCompute.setSelected(item.isValuesComputed());
20.80 + jCheckBoxComputeActionPerformed(null);
20.81
20.82 - durationPanel.setDuration(item.getEffort());
20.83 - if (item.isEffortComputed())
20.84 - jRadioButtonComputeEffort.setSelected(true);
20.85 - else
20.86 - jRadioButtonEffort.setSelected(true);
20.87 - jRadioButtonEffortItemStateChanged(null);
20.88 + durationPanelEffort.setDuration(item.getEffort());
20.89
20.90 DateFormat df = DateFormat.getDateTimeInstance(
20.91 DateFormat.LONG, DateFormat.LONG);
20.92 @@ -248,11 +232,7 @@
20.93 jLabelLastEdited.setText(df.format(new Date(item.getLastEditedDate())));
20.94
20.95 durationPanelSpent.setDuration(item.getSpentTime());
20.96 - if (item.isSpentTimeComputed())
20.97 - jRadioButtonComputeSpent.setSelected(true);
20.98 - else
20.99 - jRadioButtonSpent.setSelected(true);
20.100 -
20.101 +
20.102 dp.fillPanel(item);
20.103
20.104 String[] owners = item.getList().getOwners();
20.105 @@ -261,7 +241,7 @@
20.106 jComboBoxOwner.setModel(model);
20.107 }
20.108 jComboBoxOwner.setSelectedItem(item.getOwner());
20.109 -
20.110 +
20.111 if (item.getCompletedDate() != 0)
20.112 jLabelCompleted.setText(df.format(new Date(item.getCompletedDate())));
20.113 else
20.114 @@ -315,11 +295,11 @@
20.115 ; // TODO: validation
20.116 } catch (NumberFormatException e) {
20.117 // TODO validation
20.118 - e.printStackTrace();
20.119 + UTUtils.LOGGER.log(Level.INFO, "", e);
20.120 }
20.121 } catch (MalformedURLException e) {
20.122 // TODO: validation
20.123 - e.printStackTrace();
20.124 + UTUtils.LOGGER.log(Level.INFO, "", e);
20.125 }
20.126 } else {
20.127 task.setLine(null);
20.128 @@ -327,32 +307,29 @@
20.129
20.130 task.setDueDate(getDueDate());
20.131 task.setStart(getStart());
20.132 - task.setProgressComputed(jRadioButtonComputeProgress.isSelected());
20.133 - if (!task.isProgressComputed()) {
20.134 +
20.135 + task.setValuesComputed(jCheckBoxCompute.isSelected());
20.136 + if (!task.isValuesComputed()) {
20.137 task.setPercentComplete(
20.138 parsePercents((String) jComboBoxProgress.getSelectedItem()));
20.139 - }
20.140 -
20.141 - task.setEffortComputed(jRadioButtonComputeEffort.isSelected());
20.142 - if (!task.isEffortComputed()) {
20.143 - task.setEffort(durationPanel.getDuration());
20.144 + task.setEffort(durationPanelEffort.getDuration());
20.145 }
20.146
20.147 - boolean spentTimeComputed = jRadioButtonComputeSpent.isSelected();
20.148 + boolean valuesComputed = jCheckBoxCompute.isSelected();
20.149 int spentTime = durationPanelSpent.getDuration();
20.150 if (spentTime != task.getSpentTime() ||
20.151 - spentTimeComputed != task.isSpentTimeComputed()) {
20.152 + valuesComputed != task.isValuesComputed()) {
20.153 boolean started = task.isStarted();
20.154 if (started)
20.155 task.stop();
20.156 - task.setSpentTimeComputed(spentTimeComputed);
20.157 - if (!task.isSpentTimeComputed()) {
20.158 + task.setValuesComputed(valuesComputed);
20.159 + if (!task.isValuesComputed()) {
20.160 task.setSpentTime(spentTime);
20.161 }
20.162 - if (started && !spentTimeComputed)
20.163 + if (started && !valuesComputed)
20.164 task.start();
20.165 }
20.166 -
20.167 +
20.168 dp.fillObject();
20.169
20.170 if (jComboBoxOwner.getSelectedItem() == null)
20.171 @@ -459,24 +436,6 @@
20.172 fileCheckBox.setSelected(set);
20.173 }
20.174
20.175 - public void actionPerformed(ActionEvent actionEvent) {
20.176 - Object source = actionEvent.getSource();
20.177 - if (source == addSourceButton) {
20.178 - HelpCtx help = new HelpCtx(
20.179 - "org.netbeans.modules.tasklist.usertasks.AddTask"); // NOI18N
20.180 -
20.181 - Help h = (Help) Lookup.getDefault().lookup(Help.class);
20.182 -
20.183 - if (h != null) {
20.184 - h.showHelp(help);
20.185 - return;
20.186 - } else {
20.187 - // Did not work.
20.188 - Toolkit.getDefaultToolkit().beep();
20.189 - }
20.190 - }
20.191 - }
20.192 -
20.193 /** This method is called from within the constructor to
20.194 * initialize the form.
20.195 * WARNING: Do NOT modify this code. The content of this method is
20.196 @@ -508,43 +467,35 @@
20.197 fileTextField = new javax.swing.JTextField();
20.198 lineTextField = new javax.swing.JTextField();
20.199 lineLabel = new javax.swing.JLabel();
20.200 - addSourceButton = new javax.swing.JButton();
20.201 prioLabel = new javax.swing.JLabel();
20.202 jLabel1 = new javax.swing.JLabel();
20.203 jComboBoxOwner = new javax.swing.JComboBox();
20.204 + jLinkButtonAddToSource = new org.netbeans.modules.tasklist.usertasks.util.JLinkButton();
20.205 jPanel3 = new javax.swing.JPanel();
20.206 - jPanel1 = new javax.swing.JPanel();
20.207 - jPanel4 = new javax.swing.JPanel();
20.208 - jRadioButtonComputeEffort = new javax.swing.JRadioButton();
20.209 - jRadioButtonEffort = new javax.swing.JRadioButton();
20.210 - jPanelEffort = new javax.swing.JPanel();
20.211 - jPanel5 = new javax.swing.JPanel();
20.212 + jLabelLastEdited = new javax.swing.JLabel();
20.213 + jScrollPane1 = new javax.swing.JScrollPane();
20.214 + jListWorkPeriods = new javax.swing.JList();
20.215 + jLabelCompleted = new javax.swing.JLabel();
20.216 + jLabelCreated = new javax.swing.JLabel();
20.217 + jCheckBoxCompute = new javax.swing.JCheckBox();
20.218 + jLabel8 = new javax.swing.JLabel();
20.219 + jLabel9 = new javax.swing.JLabel();
20.220 + durationPanelSpent = new org.netbeans.modules.tasklist.usertasks.DurationPanel();
20.221 + jLabel10 = new javax.swing.JLabel();
20.222 jComboBoxProgress = new javax.swing.JComboBox();
20.223 - jRadioButtonComputeProgress = new javax.swing.JRadioButton();
20.224 - jRadioButtonProgress = new javax.swing.JRadioButton();
20.225 - jPanel6 = new javax.swing.JPanel();
20.226 - jPanel7 = new javax.swing.JPanel();
20.227 - jRadioButtonComputeSpent = new javax.swing.JRadioButton();
20.228 - jRadioButtonSpent = new javax.swing.JRadioButton();
20.229 - durationPanelSpent = new org.netbeans.modules.tasklist.usertasks.DurationPanel();
20.230 - jPanel9 = new javax.swing.JPanel();
20.231 + jLabel11 = new javax.swing.JLabel();
20.232 + jLabel6 = new javax.swing.JLabel();
20.233 + jLabel5 = new javax.swing.JLabel();
20.234 + jLabel2 = new javax.swing.JLabel();
20.235 + durationPanelEffort = new org.netbeans.modules.tasklist.usertasks.DurationPanel();
20.236 jDateChooserDue = new com.toedter.calendar.JDateChooser();
20.237 jDateChooserStart = new com.toedter.calendar.JDateChooser();
20.238 + jLabel7 = new javax.swing.JLabel();
20.239 jLabel4 = new javax.swing.JLabel();
20.240 - jLabel7 = new javax.swing.JLabel();
20.241 - jPanel10 = new javax.swing.JPanel();
20.242 - jLabelCreated = new javax.swing.JLabel();
20.243 - jLabel5 = new javax.swing.JLabel();
20.244 - jLabelCompleted = new javax.swing.JLabel();
20.245 - jLabelLastEdited = new javax.swing.JLabel();
20.246 - jLabel2 = new javax.swing.JLabel();
20.247 - jLabel6 = new javax.swing.JLabel();
20.248 - jPanelDependencies = new javax.swing.JPanel();
20.249 - jPanel8 = new javax.swing.JPanel();
20.250 - jScrollPane1 = new javax.swing.JScrollPane();
20.251 - jListWorkPeriods = new javax.swing.JList();
20.252 jLabel3 = new javax.swing.JLabel();
20.253 jLabelSpentTimeToday = new javax.swing.JLabel();
20.254 + jLabel12 = new javax.swing.JLabel();
20.255 + jPanelDependencies = new javax.swing.JPanel();
20.256
20.257 setPreferredSize(new java.awt.Dimension(400, 300));
20.258 setLayout(new java.awt.BorderLayout());
20.259 @@ -571,7 +522,9 @@
20.260 gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 0);
20.261 jPanelGeneral.add(categoryCombo, gridBagConstraints);
20.262
20.263 + detailsTextArea.setLineWrap(true);
20.264 detailsTextArea.setRows(5);
20.265 + detailsTextArea.setWrapStyleWord(true);
20.266 detailsScrollPane.setViewportView(detailsTextArea);
20.267
20.268 gridBagConstraints = new java.awt.GridBagConstraints();
20.269 @@ -586,7 +539,7 @@
20.270 org.openide.awt.Mnemonics.setLocalizedText(addLabel, NbBundle.getMessage(EditTaskPanel.class, "AddTo")); // NOI18N(); // NOI18N
20.271 gridBagConstraints = new java.awt.GridBagConstraints();
20.272 gridBagConstraints.gridx = 0;
20.273 - gridBagConstraints.gridy = 6;
20.274 + gridBagConstraints.gridy = 7;
20.275 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.276 gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 12);
20.277 jPanelGeneral.add(addLabel, gridBagConstraints);
20.278 @@ -597,7 +550,7 @@
20.279 */
20.280 gridBagConstraints = new java.awt.GridBagConstraints();
20.281 gridBagConstraints.gridx = 1;
20.282 - gridBagConstraints.gridy = 6;
20.283 + gridBagConstraints.gridy = 7;
20.284 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.285 gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 12);
20.286 jPanelGeneral.add(beginningToggle, gridBagConstraints);
20.287 @@ -619,7 +572,7 @@
20.288 */
20.289 gridBagConstraints = new java.awt.GridBagConstraints();
20.290 gridBagConstraints.gridx = 1;
20.291 - gridBagConstraints.gridy = 7;
20.292 + gridBagConstraints.gridy = 8;
20.293 gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.294 gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 12);
20.295 jPanelGeneral.add(endToggle, gridBagConstraints);
20.296 @@ -716,19 +669,6 @@
20.297 gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 12);
20.298 jPanelGeneral.add(jPanel2, gridBagConstraints);
20.299
20.300 - /*
20.301 - org.openide.awt.Mnemonics.setLocalizedText(addSourceButton, NbBundle.getMessage(EditTaskPanel.class, "AddToSource")); // NOI18N(); // NOI18N
20.302 - */
20.303 - gridBagConstraints = new java.awt.GridBagConstraints();
20.304 - gridBagConstraints.gridx = 1;
20.305 - gridBagConstraints.gridy = 8;
20.306 - gridBagConstraints.gridwidth = 2;
20.307 - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
20.308 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.309 - gridBagConstraints.weightx = 1.0;
20.310 - gridBagConstraints.insets = new java.awt.Insets(12, 0, 0, 0);
20.311 - jPanelGeneral.add(addSourceButton, gridBagConstraints);
20.312 -
20.313 prioLabel.setLabelFor(priorityComboBox);
20.314 /*
20.315 org.openide.awt.Mnemonics.setLocalizedText(prioLabel, NbBundle.getMessage(EditTaskPanel.class, "PriorityLabel")); // NOI18N); // NOI18N
20.316 @@ -756,289 +696,202 @@
20.317 gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 0);
20.318 jPanelGeneral.add(jComboBoxOwner, gridBagConstraints);
20.319
20.320 + org.openide.awt.Mnemonics.setLocalizedText(jLinkButtonAddToSource, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "AddToSource")); // NOI18N
20.321 + jLinkButtonAddToSource.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
20.322 + jLinkButtonAddToSource.addActionListener(new java.awt.event.ActionListener() {
20.323 + public void actionPerformed(java.awt.event.ActionEvent evt) {
20.324 + jLinkButtonAddToSourceActionPerformed(evt);
20.325 + }
20.326 + });
20.327 + gridBagConstraints = new java.awt.GridBagConstraints();
20.328 + gridBagConstraints.gridx = 1;
20.329 + gridBagConstraints.gridy = 6;
20.330 + gridBagConstraints.gridwidth = 3;
20.331 + gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.332 + gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 0);
20.333 + jPanelGeneral.add(jLinkButtonAddToSource, gridBagConstraints);
20.334 +
20.335 jTabbedPane.addTab(org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "General"), jPanelGeneral); // NOI18N
20.336
20.337 jPanel3.setBorder(javax.swing.BorderFactory.createEmptyBorder(11, 11, 12, 12));
20.338 - jPanel3.setLayout(new java.awt.GridBagLayout());
20.339 - gridBagConstraints = new java.awt.GridBagConstraints();
20.340 - gridBagConstraints.gridx = 3;
20.341 - gridBagConstraints.gridy = 6;
20.342 - gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER;
20.343 - gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
20.344 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.345 - gridBagConstraints.weightx = 1.0;
20.346 - gridBagConstraints.weighty = 1.0;
20.347 - jPanel3.add(jPanel1, gridBagConstraints);
20.348
20.349 - jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "Effort"))); // NOI18N
20.350 - jPanel4.setLayout(new java.awt.GridBagLayout());
20.351 + jScrollPane1.setViewportView(jListWorkPeriods);
20.352
20.353 - effortButtonGroup.add(jRadioButtonComputeEffort);
20.354 - jRadioButtonComputeEffort.setSelected(true);
20.355 - org.openide.awt.Mnemonics.setLocalizedText(jRadioButtonComputeEffort, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "ComputeEffortAutomatically")); // NOI18N
20.356 - gridBagConstraints = new java.awt.GridBagConstraints();
20.357 - gridBagConstraints.gridwidth = 2;
20.358 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.359 - jPanel4.add(jRadioButtonComputeEffort, gridBagConstraints);
20.360 -
20.361 - effortButtonGroup.add(jRadioButtonEffort);
20.362 - org.openide.awt.Mnemonics.setLocalizedText(jRadioButtonEffort, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "UseThisValue")); // NOI18N
20.363 - jRadioButtonEffort.addItemListener(new java.awt.event.ItemListener() {
20.364 - public void itemStateChanged(java.awt.event.ItemEvent evt) {
20.365 - jRadioButtonEffortItemStateChanged(evt);
20.366 + jCheckBoxCompute.setSelected(true);
20.367 + org.openide.awt.Mnemonics.setLocalizedText(jCheckBoxCompute, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "ComputeAll")); // NOI18N
20.368 + jCheckBoxCompute.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
20.369 + jCheckBoxCompute.setMargin(new java.awt.Insets(0, 0, 0, 0));
20.370 + jCheckBoxCompute.addActionListener(new java.awt.event.ActionListener() {
20.371 + public void actionPerformed(java.awt.event.ActionEvent evt) {
20.372 + jCheckBoxComputeActionPerformed(evt);
20.373 }
20.374 });
20.375 - gridBagConstraints = new java.awt.GridBagConstraints();
20.376 - gridBagConstraints.gridx = 0;
20.377 - gridBagConstraints.gridy = 1;
20.378 - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
20.379 - gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 12);
20.380 - jPanel4.add(jRadioButtonEffort, gridBagConstraints);
20.381
20.382 - jPanelEffort.setLayout(new java.awt.BorderLayout());
20.383 - gridBagConstraints = new java.awt.GridBagConstraints();
20.384 - gridBagConstraints.gridx = 1;
20.385 - gridBagConstraints.gridy = 1;
20.386 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.387 - gridBagConstraints.weightx = 1.0;
20.388 - jPanel4.add(jPanelEffort, gridBagConstraints);
20.389 + jLabel8.setLabelFor(jCheckBoxCompute);
20.390 + org.openide.awt.Mnemonics.setLocalizedText(jLabel8, "<html>Effort and spent time will be computed as a sum of the subtask values. Progress will be computed as a weighted sum of the subtask values.</html>");
20.391
20.392 - gridBagConstraints = new java.awt.GridBagConstraints();
20.393 - gridBagConstraints.gridx = 0;
20.394 - gridBagConstraints.gridy = 2;
20.395 - gridBagConstraints.gridwidth = 3;
20.396 - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
20.397 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.398 - gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 12);
20.399 - jPanel3.add(jPanel4, gridBagConstraints);
20.400 + jLabel9.setLabelFor(durationPanelEffort);
20.401 + org.openide.awt.Mnemonics.setLocalizedText(jLabel9, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "Effort_")); // NOI18N
20.402
20.403 - jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "Progress"))); // NOI18N
20.404 - jPanel5.setLayout(new java.awt.GridBagLayout());
20.405 + durationPanelSpent.setEnabled(false);
20.406 +
20.407 + jLabel10.setLabelFor(durationPanelSpent);
20.408 + org.openide.awt.Mnemonics.setLocalizedText(jLabel10, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "SpentTime_")); // NOI18N
20.409
20.410 jComboBoxProgress.setEditable(true);
20.411 + jComboBoxProgress.setEnabled(false);
20.412 jComboBoxProgress.setInputVerifier(new PercentsInputVerifier());
20.413 - gridBagConstraints = new java.awt.GridBagConstraints();
20.414 - gridBagConstraints.gridx = 1;
20.415 - gridBagConstraints.gridy = 1;
20.416 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.417 - jPanel5.add(jComboBoxProgress, gridBagConstraints);
20.418
20.419 - buttonGroupProgress.add(jRadioButtonComputeProgress);
20.420 - jRadioButtonComputeProgress.setSelected(true);
20.421 - org.openide.awt.Mnemonics.setLocalizedText(jRadioButtonComputeProgress, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "ComputeProgressAutomatically")); // NOI18N
20.422 - gridBagConstraints = new java.awt.GridBagConstraints();
20.423 - gridBagConstraints.gridwidth = 2;
20.424 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.425 - jPanel5.add(jRadioButtonComputeProgress, gridBagConstraints);
20.426 + jLabel11.setLabelFor(jComboBoxProgress);
20.427 + org.openide.awt.Mnemonics.setLocalizedText(jLabel11, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "Progress_")); // NOI18N
20.428
20.429 - buttonGroupProgress.add(jRadioButtonProgress);
20.430 - org.openide.awt.Mnemonics.setLocalizedText(jRadioButtonProgress, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "UseThisValue")); // NOI18N
20.431 - jRadioButtonProgress.addItemListener(new java.awt.event.ItemListener() {
20.432 - public void itemStateChanged(java.awt.event.ItemEvent evt) {
20.433 - jRadioButtonProgressItemStateChanged(evt);
20.434 - }
20.435 - });
20.436 - gridBagConstraints = new java.awt.GridBagConstraints();
20.437 - gridBagConstraints.gridx = 0;
20.438 - gridBagConstraints.gridy = 1;
20.439 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.440 - gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 12);
20.441 - jPanel5.add(jRadioButtonProgress, gridBagConstraints);
20.442 -
20.443 - jPanel6.setPreferredSize(new java.awt.Dimension(0, 0));
20.444 - gridBagConstraints = new java.awt.GridBagConstraints();
20.445 - gridBagConstraints.gridx = 2;
20.446 - gridBagConstraints.gridy = 2;
20.447 - gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
20.448 - gridBagConstraints.weightx = 1.0;
20.449 - gridBagConstraints.weighty = 1.0;
20.450 - jPanel5.add(jPanel6, gridBagConstraints);
20.451 -
20.452 - gridBagConstraints = new java.awt.GridBagConstraints();
20.453 - gridBagConstraints.gridx = 0;
20.454 - gridBagConstraints.gridy = 3;
20.455 - gridBagConstraints.gridwidth = 3;
20.456 - gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
20.457 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.458 - gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 12);
20.459 - jPanel3.add(jPanel5, gridBagConstraints);
20.460 -
20.461 - jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder("Spent time"));
20.462 - jPanel7.setLayout(new java.awt.GridBagLayout());
20.463 -
20.464 - buttonGroupSpent.add(jRadioButtonComputeSpent);
20.465 - jRadioButtonComputeSpent.setSelected(true);
20.466 - org.openide.awt.Mnemonics.setLocalizedText(jRadioButtonComputeSpent, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "ComputeSpentTkme")); // NOI18N
20.467 - gridBagConstraints = new java.awt.GridBagConstraints();
20.468 - gridBagConstraints.gridwidth = 2;
20.469 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.470 - jPanel7.add(jRadioButtonComputeSpent, gridBagConstraints);
20.471 -
20.472 - buttonGroupSpent.add(jRadioButtonSpent);
20.473 - org.openide.awt.Mnemonics.setLocalizedText(jRadioButtonSpent, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "UseThisValue")); // NOI18N
20.474 - jRadioButtonSpent.addItemListener(new java.awt.event.ItemListener() {
20.475 - public void itemStateChanged(java.awt.event.ItemEvent evt) {
20.476 - jRadioButtonSpentItemStateChanged(evt);
20.477 - }
20.478 - });
20.479 - gridBagConstraints = new java.awt.GridBagConstraints();
20.480 - gridBagConstraints.gridx = 0;
20.481 - gridBagConstraints.gridy = 1;
20.482 - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
20.483 - gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 12);
20.484 - jPanel7.add(jRadioButtonSpent, gridBagConstraints);
20.485 -
20.486 - durationPanelSpent.setEnabled(false);
20.487 - gridBagConstraints = new java.awt.GridBagConstraints();
20.488 - gridBagConstraints.gridx = 1;
20.489 - gridBagConstraints.gridy = 1;
20.490 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.491 - gridBagConstraints.weightx = 1.0;
20.492 - jPanel7.add(durationPanelSpent, gridBagConstraints);
20.493 -
20.494 - gridBagConstraints = new java.awt.GridBagConstraints();
20.495 - gridBagConstraints.gridx = 0;
20.496 - gridBagConstraints.gridy = 4;
20.497 - gridBagConstraints.gridwidth = 3;
20.498 - gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
20.499 - gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 12);
20.500 - jPanel3.add(jPanel7, gridBagConstraints);
20.501 -
20.502 - jPanel9.setLayout(new java.awt.GridBagLayout());
20.503 - gridBagConstraints = new java.awt.GridBagConstraints();
20.504 - gridBagConstraints.gridx = 1;
20.505 - gridBagConstraints.gridy = 1;
20.506 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.507 - gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 0);
20.508 - jPanel9.add(jDateChooserDue, gridBagConstraints);
20.509 - gridBagConstraints = new java.awt.GridBagConstraints();
20.510 - gridBagConstraints.gridx = 1;
20.511 - gridBagConstraints.gridy = 0;
20.512 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.513 - jPanel9.add(jDateChooserStart, gridBagConstraints);
20.514 -
20.515 - org.openide.awt.Mnemonics.setLocalizedText(jLabel4, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "DueDateCb")); // NOI18N
20.516 - gridBagConstraints = new java.awt.GridBagConstraints();
20.517 - gridBagConstraints.gridx = 0;
20.518 - gridBagConstraints.gridy = 1;
20.519 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.520 - gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 12);
20.521 - jPanel9.add(jLabel4, gridBagConstraints);
20.522 -
20.523 - org.openide.awt.Mnemonics.setLocalizedText(jLabel7, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "LBL_Start")); // NOI18N
20.524 - gridBagConstraints = new java.awt.GridBagConstraints();
20.525 - gridBagConstraints.gridx = 0;
20.526 - gridBagConstraints.gridy = 0;
20.527 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.528 - gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 12);
20.529 - jPanel9.add(jLabel7, gridBagConstraints);
20.530 -
20.531 - gridBagConstraints = new java.awt.GridBagConstraints();
20.532 - gridBagConstraints.gridx = 0;
20.533 - gridBagConstraints.gridy = 0;
20.534 - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
20.535 - jPanel3.add(jPanel9, gridBagConstraints);
20.536 -
20.537 - jPanel10.setLayout(new java.awt.GridBagLayout());
20.538 - gridBagConstraints = new java.awt.GridBagConstraints();
20.539 - gridBagConstraints.gridx = 1;
20.540 - gridBagConstraints.gridy = 6;
20.541 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.542 - gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 12);
20.543 - jPanel10.add(jLabelCreated, gridBagConstraints);
20.544 + org.openide.awt.Mnemonics.setLocalizedText(jLabel6, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "LastEditedLabel")); // NOI18N); // NOI18N
20.545
20.546 org.openide.awt.Mnemonics.setLocalizedText(jLabel5, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "CreatedLabel")); // NOI18N); // NOI18N
20.547 - gridBagConstraints = new java.awt.GridBagConstraints();
20.548 - gridBagConstraints.gridx = 0;
20.549 - gridBagConstraints.gridy = 6;
20.550 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.551 - gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 12);
20.552 - jPanel10.add(jLabel5, gridBagConstraints);
20.553 - gridBagConstraints = new java.awt.GridBagConstraints();
20.554 - gridBagConstraints.gridx = 1;
20.555 - gridBagConstraints.gridy = 7;
20.556 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.557 - gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 12);
20.558 - jPanel10.add(jLabelCompleted, gridBagConstraints);
20.559 - gridBagConstraints = new java.awt.GridBagConstraints();
20.560 - gridBagConstraints.gridx = 1;
20.561 - gridBagConstraints.gridy = 5;
20.562 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.563 - gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 12);
20.564 - jPanel10.add(jLabelLastEdited, gridBagConstraints);
20.565
20.566 org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getBundle(EditTaskPanel.class).getString("Completed")); // NOI18N
20.567 - gridBagConstraints = new java.awt.GridBagConstraints();
20.568 - gridBagConstraints.gridx = 0;
20.569 - gridBagConstraints.gridy = 7;
20.570 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.571 - gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 12);
20.572 - jPanel10.add(jLabel2, gridBagConstraints);
20.573
20.574 - org.openide.awt.Mnemonics.setLocalizedText(jLabel6, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "LastEditedLabel")); // NOI18N); // NOI18N
20.575 - gridBagConstraints = new java.awt.GridBagConstraints();
20.576 - gridBagConstraints.gridx = 0;
20.577 - gridBagConstraints.gridy = 5;
20.578 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.579 - gridBagConstraints.insets = new java.awt.Insets(11, 0, 0, 12);
20.580 - jPanel10.add(jLabel6, gridBagConstraints);
20.581 + durationPanelEffort.setEnabled(false);
20.582
20.583 - gridBagConstraints = new java.awt.GridBagConstraints();
20.584 - gridBagConstraints.gridx = 0;
20.585 - gridBagConstraints.gridy = 5;
20.586 - gridBagConstraints.gridwidth = 3;
20.587 - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
20.588 - jPanel3.add(jPanel10, gridBagConstraints);
20.589 + jLabel7.setLabelFor(jDateChooserStart);
20.590 + org.openide.awt.Mnemonics.setLocalizedText(jLabel7, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "LBL_Start")); // NOI18N
20.591 +
20.592 + jLabel4.setLabelFor(jDateChooserDue);
20.593 + org.openide.awt.Mnemonics.setLocalizedText(jLabel4, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "DueDateCb")); // NOI18N
20.594 +
20.595 + jLabel3.setText(org.openide.util.NbBundle.getBundle(EditTaskPanel.class).getString("SpentTimeToday")); // NOI18N
20.596 +
20.597 + jLabel12.setLabelFor(jListWorkPeriods);
20.598 + org.openide.awt.Mnemonics.setLocalizedText(jLabel12, org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "HistoryOfSpentTimes")); // NOI18N
20.599 +
20.600 + org.jdesktop.layout.GroupLayout jPanel3Layout = new org.jdesktop.layout.GroupLayout(jPanel3);
20.601 + jPanel3.setLayout(jPanel3Layout);
20.602 + jPanel3Layout.setHorizontalGroup(
20.603 + jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
20.604 + .add(jPanel3Layout.createSequentialGroup()
20.605 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
20.606 + .add(jLabel6)
20.607 + .add(jLabel5)
20.608 + .add(jLabel2))
20.609 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.610 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
20.611 + .add(jLabelLastEdited)
20.612 + .add(jLabelCompleted)
20.613 + .add(jLabelCreated))
20.614 + .addContainerGap(521, Short.MAX_VALUE))
20.615 + .add(jLabel8, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 599, Short.MAX_VALUE)
20.616 + .add(jPanel3Layout.createSequentialGroup()
20.617 + .add(jLabel12)
20.618 + .addContainerGap(453, Short.MAX_VALUE))
20.619 + .add(jPanel3Layout.createSequentialGroup()
20.620 + .add(jLabel3)
20.621 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.622 + .add(jLabelSpentTimeToday)
20.623 + .addContainerGap(484, Short.MAX_VALUE))
20.624 + .add(jPanel3Layout.createSequentialGroup()
20.625 + .add(jCheckBoxCompute)
20.626 + .addContainerGap(234, Short.MAX_VALUE))
20.627 + .add(jPanel3Layout.createSequentialGroup()
20.628 + .addContainerGap()
20.629 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
20.630 + .add(jLabel10)
20.631 + .add(jLabel11)
20.632 + .add(jLabel9))
20.633 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.634 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
20.635 + .add(durationPanelEffort, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
20.636 + .add(jComboBoxProgress, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
20.637 + .add(durationPanelSpent, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
20.638 + .add(350, 350, 350))
20.639 + .add(jPanel3Layout.createSequentialGroup()
20.640 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
20.641 + .add(jLabel7)
20.642 + .add(jLabel4))
20.643 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.644 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false)
20.645 + .add(jDateChooserDue, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
20.646 + .add(jDateChooserStart, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 148, Short.MAX_VALUE))
20.647 + .addContainerGap(407, Short.MAX_VALUE))
20.648 + .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 599, Short.MAX_VALUE)
20.649 + );
20.650 + jPanel3Layout.setVerticalGroup(
20.651 + jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
20.652 + .add(jPanel3Layout.createSequentialGroup()
20.653 + .addContainerGap()
20.654 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
20.655 + .add(jLabel7)
20.656 + .add(jDateChooserStart, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
20.657 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.658 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING)
20.659 + .add(jLabel4)
20.660 + .add(jDateChooserDue, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
20.661 + .add(12, 12, 12)
20.662 + .add(jCheckBoxCompute)
20.663 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.664 + .add(jLabel8, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 30, Short.MAX_VALUE)
20.665 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.666 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
20.667 + .add(jLabel9)
20.668 + .add(durationPanelEffort, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
20.669 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.670 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
20.671 + .add(jLabel11)
20.672 + .add(jComboBoxProgress, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
20.673 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.674 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
20.675 + .add(jLabel10)
20.676 + .add(durationPanelSpent, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
20.677 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.678 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
20.679 + .add(jLabel6)
20.680 + .add(jLabelLastEdited, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 15, Short.MAX_VALUE))
20.681 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.682 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
20.683 + .add(jLabel5)
20.684 + .add(jLabelCreated, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 15, Short.MAX_VALUE))
20.685 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.686 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
20.687 + .add(jLabel2)
20.688 + .add(jLabelCompleted, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 15, Short.MAX_VALUE))
20.689 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.690 + .add(jPanel3Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
20.691 + .add(jLabel3)
20.692 + .add(jLabelSpentTimeToday))
20.693 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.694 + .add(jLabel12)
20.695 + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
20.696 + .add(jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 341, Short.MAX_VALUE))
20.697 + );
20.698
20.699 jTabbedPane.addTab(org.openide.util.NbBundle.getMessage(EditTaskPanel.class, "TimeRelated"), jPanel3); // NOI18N
20.700
20.701 jPanelDependencies.setLayout(new java.awt.BorderLayout());
20.702 jTabbedPane.addTab(org.openide.util.NbBundle.getBundle(EditTaskPanel.class).getString("LBL_DependenciesTab"), jPanelDependencies); // NOI18N
20.703
20.704 - jPanel8.setLayout(new java.awt.GridBagLayout());
20.705 -
20.706 - jScrollPane1.setViewportView(jListWorkPeriods);
20.707 -
20.708 - gridBagConstraints = new java.awt.GridBagConstraints();
20.709 - gridBagConstraints.gridwidth = 2;
20.710 - gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
20.711 - gridBagConstraints.weightx = 1.0;
20.712 - gridBagConstraints.weighty = 1.0;
20.713 - gridBagConstraints.insets = new java.awt.Insets(11, 11, 0, 12);
20.714 - jPanel8.add(jScrollPane1, gridBagConstraints);
20.715 -
20.716 - jLabel3.setText(org.openide.util.NbBundle.getBundle(EditTaskPanel.class).getString("SpentTimeToday")); // NOI18N
20.717 - gridBagConstraints = new java.awt.GridBagConstraints();
20.718 - gridBagConstraints.gridx = 0;
20.719 - gridBagConstraints.gridy = 1;
20.720 - gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
20.721 - gridBagConstraints.insets = new java.awt.Insets(11, 11, 12, 11);
20.722 - jPanel8.add(jLabel3, gridBagConstraints);
20.723 -
20.724 - org.openide.awt.Mnemonics.setLocalizedText(jLabelSpentTimeToday, "\"\"");
20.725 - gridBagConstraints = new java.awt.GridBagConstraints();
20.726 - gridBagConstraints.gridx = 1;
20.727 - gridBagConstraints.gridy = 1;
20.728 - gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
20.729 - gridBagConstraints.insets = new java.awt.Insets(11, 0, 12, 12);
20.730 - jPanel8.add(jLabelSpentTimeToday, gridBagConstraints);
20.731 -
20.732 - jTabbedPane.addTab(org.openide.util.NbBundle.getBundle(EditTaskPanel.class).getString("WordPeriods"), jPanel8); // NOI18N
20.733 -
20.734 add(jTabbedPane, java.awt.BorderLayout.CENTER);
20.735 }// </editor-fold>//GEN-END:initComponents
20.736
20.737 - private void jRadioButtonSpentItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jRadioButtonSpentItemStateChanged
20.738 - durationPanelSpent.setEnabled(jRadioButtonSpent.isSelected());
20.739 - }//GEN-LAST:event_jRadioButtonSpentItemStateChanged
20.740 + private void jCheckBoxComputeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxComputeActionPerformed
20.741 + boolean b = jCheckBoxCompute.isSelected();
20.742 + durationPanelEffort.setEnabled(!b);
20.743 + jComboBoxProgress.setEnabled(!b);
20.744 + durationPanelSpent.setEnabled(!b);
20.745 + }//GEN-LAST:event_jCheckBoxComputeActionPerformed
20.746
20.747 - private void jRadioButtonProgressItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jRadioButtonProgressItemStateChanged
20.748 - jComboBoxProgress.setEnabled(jRadioButtonProgress.isSelected());
20.749 - }//GEN-LAST:event_jRadioButtonProgressItemStateChanged
20.750 + private void jLinkButtonAddToSourceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jLinkButtonAddToSourceActionPerformed
20.751 + HelpCtx help = new HelpCtx(
20.752 + "org.netbeans.modules.tasklist.usertasks.AddTask"); // NOI18N
20.753
20.754 - private void jRadioButtonEffortItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jRadioButtonEffortItemStateChanged
20.755 - durationPanel.setEnabled(jRadioButtonEffort.isSelected());
20.756 - }//GEN-LAST:event_jRadioButtonEffortItemStateChanged
20.757 + Help h = (Help) Lookup.getDefault().lookup(Help.class);
20.758 +
20.759 + if (h != null) {
20.760 + h.showHelp(help);
20.761 + return;
20.762 + } else {
20.763 + // Did not work.
20.764 + Toolkit.getDefaultToolkit().beep();
20.765 + }
20.766 + }//GEN-LAST:event_jLinkButtonAddToSourceActionPerformed
20.767
20.768 private void priorityComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_priorityComboBoxActionPerformed
20.769 // I don't know why JComboBox does not use my renderer to draw
20.770 @@ -1077,7 +930,7 @@
20.771 EditTaskPanel.class, "BeginningList")); // NOI18N
20.772 Mnemonics.setLocalizedText(endToggle, NbBundle.getMessage(
20.773 EditTaskPanel.class, "EndList")); // NOI18N
20.774 - Mnemonics.setLocalizedText(addSourceButton, NbBundle.getMessage(
20.775 + Mnemonics.setLocalizedText(jLinkButtonAddToSource, NbBundle.getMessage(
20.776 EditTaskPanel.class, "AddToSource")); // NOI18N
20.777
20.778 this.getAccessibleContext().setAccessibleDescription(
20.779 @@ -1110,7 +963,7 @@
20.780 NbBundle.getMessage(EditTaskPanel.class, "ACSD_Beginning")); // NOI18N
20.781 endToggle.getAccessibleContext().setAccessibleDescription(
20.782 NbBundle.getMessage(EditTaskPanel.class, "ACSD_End")); // NOI18N
20.783 - addSourceButton.getAccessibleContext().setAccessibleDescription(
20.784 + jLinkButtonAddToSource.getAccessibleContext().setAccessibleDescription(
20.785 NbBundle.getMessage(EditTaskPanel.class, "ACSD_AddSource")); // NOI18N
20.786
20.787 // Gotta set accessible name - no more that I've set label for?
20.788 @@ -1127,7 +980,6 @@
20.789 // Variables declaration - do not modify//GEN-BEGIN:variables
20.790 private javax.swing.ButtonGroup addButtonGroup;
20.791 private javax.swing.JLabel addLabel;
20.792 - private javax.swing.JButton addSourceButton;
20.793 private javax.swing.JRadioButton beginningToggle;
20.794 private javax.swing.ButtonGroup buttonGroupProgress;
20.795 private javax.swing.ButtonGroup buttonGroupSpent;
20.796 @@ -1138,46 +990,39 @@
20.797 private javax.swing.JLabel detailsLabel;
20.798 private javax.swing.JScrollPane detailsScrollPane;
20.799 private javax.swing.JTextArea detailsTextArea;
20.800 + private org.netbeans.modules.tasklist.usertasks.DurationPanel durationPanelEffort;
20.801 private org.netbeans.modules.tasklist.usertasks.DurationPanel durationPanelSpent;
20.802 private javax.swing.ButtonGroup effortButtonGroup;
20.803 private javax.swing.JRadioButton endToggle;
20.804 private javax.swing.JCheckBox fileCheckBox;
20.805 private javax.swing.JTextField fileTextField;
20.806 + private javax.swing.JCheckBox jCheckBoxCompute;
20.807 private javax.swing.JComboBox jComboBoxOwner;
20.808 private javax.swing.JComboBox jComboBoxProgress;
20.809 private com.toedter.calendar.JDateChooser jDateChooserDue;
20.810 private com.toedter.calendar.JDateChooser jDateChooserStart;
20.811 private javax.swing.JLabel jLabel1;
20.812 + private javax.swing.JLabel jLabel10;
20.813 + private javax.swing.JLabel jLabel11;
20.814 + private javax.swing.JLabel jLabel12;
20.815 private javax.swing.JLabel jLabel2;
20.816 private javax.swing.JLabel jLabel3;
20.817 private javax.swing.JLabel jLabel4;
20.818 private javax.swing.JLabel jLabel5;
20.819 private javax.swing.JLabel jLabel6;
20.820 private javax.swing.JLabel jLabel7;
20.821 + private javax.swing.JLabel jLabel8;
20.822 + private javax.swing.JLabel jLabel9;
20.823 private javax.swing.JLabel jLabelCompleted;
20.824 private javax.swing.JLabel jLabelCreated;
20.825 private javax.swing.JLabel jLabelLastEdited;
20.826 private javax.swing.JLabel jLabelSpentTimeToday;
20.827 + private org.netbeans.modules.tasklist.usertasks.util.JLinkButton jLinkButtonAddToSource;
20.828 private javax.swing.JList jListWorkPeriods;
20.829 - private javax.swing.JPanel jPanel1;
20.830 - private javax.swing.JPanel jPanel10;
20.831 private javax.swing.JPanel jPanel2;
20.832 private javax.swing.JPanel jPanel3;
20.833 - private javax.swing.JPanel jPanel4;
20.834 - private javax.swing.JPanel jPanel5;
20.835 - private javax.swing.JPanel jPanel6;
20.836 - private javax.swing.JPanel jPanel7;
20.837 - private javax.swing.JPanel jPanel8;
20.838 - private javax.swing.JPanel jPanel9;
20.839 private javax.swing.JPanel jPanelDependencies;
20.840 - private javax.swing.JPanel jPanelEffort;
20.841 private javax.swing.JPanel jPanelGeneral;
20.842 - private javax.swing.JRadioButton jRadioButtonComputeEffort;
20.843 - private javax.swing.JRadioButton jRadioButtonComputeProgress;
20.844 - private javax.swing.JRadioButton jRadioButtonComputeSpent;
20.845 - private javax.swing.JRadioButton jRadioButtonEffort;
20.846 - private javax.swing.JRadioButton jRadioButtonProgress;
20.847 - private javax.swing.JRadioButton jRadioButtonSpent;
20.848 private javax.swing.JScrollPane jScrollPane1;
20.849 private javax.swing.JTabbedPane jTabbedPane;
20.850 private javax.swing.JLabel lineLabel;
21.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/TaskListDataObject.java Mon Dec 04 21:57:00 2006 +0000
21.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/TaskListDataObject.java Mon Dec 04 21:59:57 2006 +0000
21.3 @@ -38,6 +38,7 @@
21.4 *
21.5 * @author Tor Norbye
21.6 * @author Trond Norbye
21.7 + * @author tl
21.8 */
21.9 public class TaskListDataObject extends MultiDataObject implements OpenCookie {
21.10
21.11 @@ -78,16 +79,8 @@
21.12 findView(getPrimaryEntry().getFile());
21.13 if (view == null) {
21.14 FileObject fo = getPrimaryEntry().getFile();
21.15 - try {
21.16 - UserTaskList tl = UserTaskList.readDocument(fo);
21.17 - view = new UserTaskView(tl, false);
21.18 - view.showInMode();
21.19 - } catch (IOException e) {
21.20 - NotifyDescriptor nd = new NotifyDescriptor.Message(
21.21 - NbBundle.getMessage(TaskListDataObject.class,
21.22 - "ErrorReadingFile", e.getMessage())); // NOI18N
21.23 - DialogDisplayer.getDefault().notify(nd);
21.24 - }
21.25 + view = new UserTaskView(fo, false);
21.26 + view.showInMode();
21.27 } else {
21.28 // This view already exists, show it...
21.29 view.showInMode();
22.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/UserTaskNode.java Mon Dec 04 21:57:00 2006 +0000
22.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/UserTaskNode.java Mon Dec 04 21:59:57 2006 +0000
22.3 @@ -113,18 +113,23 @@
22.4 item.addPropertyChangeListener(new PropertyChangeListener() {
22.5 public void propertyChange(PropertyChangeEvent e) {
22.6 String n = e.getPropertyName();
22.7 - if (n == "progress") { // NOI18N
22.8 + if (n == UserTask.PROP_PROGRESS) { // NOI18N
22.9 int old = Math.round(((Float) e.getOldValue()).floatValue());
22.10 int new_ = Math.round(((Float) e.getNewValue()).floatValue());
22.11 UserTaskNode.this.firePropertyChange(
22.12 - "percentComplete", new Integer(old), new Integer(new_)); // NOI18N
22.13 - } else if (n == "line" || n == "started") { // NOI18N
22.14 + "percentComplete", // NOI18N
22.15 + new Integer(old), new Integer(new_));
22.16 + } else if (n == UserTask.PROP_LINE ||
22.17 + n == "started") { // NOI18N
22.18 // nothing
22.19 + // TODO: strange property "started"??
22.20 } else {
22.21 UserTaskNode.this.firePropertyChange(e.getPropertyName(),
22.22 e.getOldValue(), e.getNewValue());
22.23 }
22.24 - if (n == "started" || n == "spentTimeComputed" || n == "line") { // NOI18N
22.25 + if (n == "started" || // NOI18N
22.26 + n == UserTask.PROP_VALUES_COMPUTED ||
22.27 + n == UserTask.PROP_LINE) { // NOI18N
22.28 fireCookieChange();
22.29 }
22.30 }
22.31 @@ -144,7 +149,7 @@
22.32 SwingUtilities.getAncestorOfClass(UserTaskView.class, tt);
22.33 if (empty) {
22.34 return new Action[] {
22.35 - SystemAction.get(NewTaskAction.class),
22.36 + // TODO: SystemAction.get(NewTaskAction.class),
22.37 null,
22.38 PauseAction.getInstance(),
22.39 null,
22.40 @@ -162,7 +167,7 @@
22.41 };
22.42 } else {
22.43 return new Action[] {
22.44 - SystemAction.get(NewTaskAction.class),
22.45 + // TODO: SystemAction.get(NewTaskAction.class),
22.46 //SystemAction.get(ShowScheduleViewAction.class),
22.47 null,
22.48 new StartTaskAction(utv),
22.49 @@ -237,10 +242,10 @@
22.50 ss.put(p);
22.51
22.52 p = new PropertySupport.Reflection(item, Boolean.TYPE,
22.53 - "isProgressComputed", "setProgressComputed"); // NOI18N
22.54 - p.setName("progressComputed"); // NOI18N
22.55 - p.setDisplayName(org.openide.util.NbBundle.getMessage(UserTaskNode.class, "LBL_computeProgress")); // NOI18N
22.56 - p.setShortDescription(org.openide.util.NbBundle.getMessage(UserTaskNode.class, "HNT_progressComputed")); // NOI18N
22.57 + "isValuesComputed", "setValuesComputed"); // NOI18N
22.58 + p.setName("valuesComputed"); // NOI18N
22.59 + p.setDisplayName(org.openide.util.NbBundle.getMessage(UserTaskNode.class, "LBL_valuesComputed")); // NOI18N
22.60 + p.setShortDescription(org.openide.util.NbBundle.getMessage(UserTaskNode.class, "HNT_valuesComputed")); // NOI18N
22.61 ss.put(p);
22.62
22.63 p = new PropertySupport.Reflection(item, Integer.TYPE, "getEffort", "setEffort"); // NOI18N
22.64 @@ -250,13 +255,6 @@
22.65 p.setPropertyEditorClass(DurationPropertyEditor.class);
22.66 ss.put(p);
22.67
22.68 - p = new PropertySupport.Reflection(item, Boolean.TYPE,
22.69 - "isEffortComputed", "setEffortComputed"); // NOI18N
22.70 - p.setName("effortComputed"); // NOI18N
22.71 - p.setDisplayName(org.openide.util.NbBundle.getMessage(UserTaskNode.class, "LBL_computeEffort")); // NOI18N
22.72 - p.setShortDescription(org.openide.util.NbBundle.getMessage(UserTaskNode.class, "HNT_effortComputed")); // NOI18N
22.73 - ss.put(p);
22.74 -
22.75 p = new PropertySupport.Reflection(item, Integer.TYPE, "getRemainingEffort", null); // NOI18N
22.76 p.setName("remainingEffort"); // NOI18N
22.77 p.setValue("canEditAsText", Boolean.FALSE); // NOI18N
22.78 @@ -273,13 +271,6 @@
22.79 p.setPropertyEditorClass(DurationPropertyEditor.class);
22.80 ss.put(p);
22.81
22.82 - p = new PropertySupport.Reflection(item, Boolean.TYPE,
22.83 - "isSpentTimeComputed", "setSpentTimeComputed"); // NOI18N
22.84 - p.setName("spentTimeComputed"); // NOI18N
22.85 - p.setDisplayName(org.openide.util.NbBundle.getMessage(UserTaskNode.class, "LBL_spentTimeComputed")); // NOI18N
22.86 - p.setShortDescription(org.openide.util.NbBundle.getMessage(UserTaskNode.class, "HNT_spentTimeComputed")); // NOI18N
22.87 - ss.put(p);
22.88 -
22.89 p = new PropertySupport.Reflection(item, Integer.TYPE, "getSpentTimeToday", null); // NOI18N
22.90 p.setName("spentTimeToday"); // NOI18N
22.91 p.setDisplayName(NbBundle.getMessage(UserTaskNode.class, "LBL_spentTimeTodayProperty")); // NOI18N
23.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/UserTaskView.java Mon Dec 04 21:57:00 2006 +0000
23.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/UserTaskView.java Mon Dec 04 21:59:57 2006 +0000
23.3 @@ -27,9 +27,13 @@
23.4 import java.awt.event.MouseEvent;
23.5 import java.beans.PropertyChangeEvent;
23.6 import java.beans.PropertyChangeListener;
23.7 +import java.io.File;
23.8 +import java.io.FileOutputStream;
23.9 import java.io.IOException;
23.10 +import java.io.InputStream;
23.11 import java.io.ObjectInput;
23.12 import java.io.ObjectOutput;
23.13 +import java.io.OutputStream;
23.14 import java.io.Serializable;
23.15 import java.net.URL;
23.16 import java.util.HashMap;
23.17 @@ -40,13 +44,13 @@
23.18 import javax.swing.ActionMap;
23.19 import javax.swing.JComponent;
23.20 import javax.swing.JPanel;
23.21 -import javax.swing.JPopupMenu;
23.22 import javax.swing.JScrollPane;
23.23 import javax.swing.JToolBar;
23.24 import javax.swing.KeyStroke;
23.25 import javax.swing.SwingUtilities;
23.26 import javax.swing.border.EmptyBorder;
23.27 import javax.swing.tree.TreePath;
23.28 +import net.fortuna.ical4j.data.ParserException;
23.29 import org.netbeans.modules.tasklist.core.export.ExportImportFormat;
23.30 import org.netbeans.modules.tasklist.core.export.ExportImportProvider;
23.31 import org.netbeans.modules.tasklist.core.filter.Filter;
23.32 @@ -78,12 +82,12 @@
23.33 import org.netbeans.modules.tasklist.usertasks.translators.XmlExportFormat;
23.34 import org.netbeans.modules.tasklist.core.table.ChooseColumnsPanel;
23.35 import org.netbeans.modules.tasklist.usertasks.treetable.TreeTableModel;
23.36 +import org.netbeans.modules.tasklist.usertasks.util.AWTThreadAnnotation;
23.37 import org.netbeans.modules.tasklist.usertasks.util.UTUtils;
23.38 import org.openide.actions.FindAction;
23.39 +import org.openide.actions.SaveAction;
23.40 import org.openide.awt.MouseUtils;
23.41 import org.openide.cookies.InstanceCookie;
23.42 -import org.openide.explorer.ExplorerManager;
23.43 -import org.openide.explorer.ExplorerUtils;
23.44 import org.openide.filesystems.FileChangeListener;
23.45 import org.openide.filesystems.FileEvent;
23.46 import org.openide.filesystems.FileObject;
23.47 @@ -97,14 +101,16 @@
23.48 import org.openide.util.NbBundle;
23.49 import org.openide.util.Utilities;
23.50 import org.openide.util.actions.SystemAction;
23.51 +import org.openide.util.lookup.Lookups;
23.52 import org.openide.windows.Mode;
23.53 import org.openide.windows.TopComponent;
23.54 import org.openide.windows.WindowManager;
23.55 import org.netbeans.modules.tasklist.usertasks.model.UserTask;
23.56 import org.netbeans.modules.tasklist.usertasks.model.UserTaskList;
23.57 import org.netbeans.modules.tasklist.usertasks.treetable.TreeTable;
23.58 -import org.openide.nodes.Node;
23.59 -import org.openide.util.Lookup;
23.60 +import org.openide.DialogDisplayer;
23.61 +import org.openide.NotifyDescriptor;
23.62 +import org.openide.NotifyDescriptor.Message;
23.63
23.64 /**
23.65 * View showing the user tasks.
23.66 @@ -112,24 +118,24 @@
23.67 * @author Tor Norbye
23.68 * @author tl
23.69 */
23.70 -public class UserTaskView extends TopComponent implements
23.71 -ExplorerManager.Provider, ExportImportProvider, FileChangeListener,
23.72 -FilteredTopComponent {
23.73 +public class UserTaskView extends TopComponent implements ExportImportProvider,
23.74 + FileChangeListener, FilteredTopComponent {
23.75 // List category
23.76 private final static String USER_CATEGORY = "usertasks"; // NOI18N
23.77
23.78 private static final String DEFAULT_FILTER_NAME =
23.79 - NbBundle.getMessage(UserTaskView.class,
23.80 - "default-filter-name"); // NOI18N
23.81 + NbBundle.getMessage(UserTaskView.class,
23.82 + "default-filter-name"); // NOI18N
23.83
23.84 private static final long serialVersionUID = 1;
23.85
23.86 private static final Image ICON = Utilities.loadImage(
23.87 "org/netbeans/modules/tasklist/usertasks/actions/taskView.gif"); // NOI18N
23.88
23.89 - private static int nextViewId = 0;
23.90 -
23.91 static {
23.92 + UTUtils.dumpClassLoaders(UserTaskView.class.getClassLoader());
23.93 + UTUtils.dumpClassLoaders(Thread.currentThread().getContextClassLoader());
23.94 +
23.95 // repaint the view if the number of working hours per day has
23.96 // changed (spent time, rem. effort and effort columns should be
23.97 // repainted)
23.98 @@ -156,13 +162,92 @@
23.99 );
23.100 }
23.101
23.102 + /**
23.103 + * Reads an ics file. Shows error messages if it cannot be read.
23.104 + *
23.105 + * @param fo an .ics file
23.106 + */
23.107 + @AWTThreadAnnotation
23.108 + private static UserTaskList readDocument(FileObject fo) throws IOException {
23.109 + if (!fo.isValid())
23.110 + throw new IOException(
23.111 + NbBundle.getMessage(UserTaskList.class,
23.112 + "FileNotValid", FileUtil.getFileDisplayName(fo))); // NOI18N
23.113 + InputStream is = fo.getInputStream();
23.114 + UserTaskList ret = null;
23.115 + try {
23.116 + long m = System.currentTimeMillis();
23.117 + ICalImportFormat io = new ICalImportFormat();
23.118 +
23.119 + ret = new UserTaskList();
23.120 + try {
23.121 + io.read(ret, is);
23.122 + } catch (ParserException e) {
23.123 + // NOTE the exception text should be localized!
23.124 + DialogDisplayer.getDefault().notify(new Message(e.getMessage(),
23.125 + NotifyDescriptor.ERROR_MESSAGE));
23.126 + UTUtils.LOGGER.log(Level.SEVERE, "", e); // NOI18N
23.127 + } catch (IOException e) {
23.128 + // NOTE the exception text should be localized!
23.129 + DialogDisplayer.getDefault().notify(new Message(e.getMessage(),
23.130 + NotifyDescriptor.ERROR_MESSAGE));
23.131 + UTUtils.LOGGER.log(Level.SEVERE, "", e); // NOI18N
23.132 + }
23.133 +
23.134 + UTUtils.LOGGER.fine("File " + fo + " read in " + // NOI18N
23.135 + (System.currentTimeMillis() - m) + "ms"); // NOI18N
23.136 + } finally {
23.137 + try {
23.138 + is.close();
23.139 + } catch (IOException e) {
23.140 + UTUtils.LOGGER.log(Level.WARNING,
23.141 + "closing file failed", e); // NOI18N
23.142 + }
23.143 + }
23.144 + return ret;
23.145 + }
23.146 +
23.147 + /**
23.148 + * Returns the default task list file. Copies template file to the
23.149 + * default location if the file does not exist.
23.150 + *
23.151 + * @return default task list file
23.152 + */
23.153 + public static FileObject getDefaultFile() throws IOException {
23.154 + String name = Settings.getDefault().getExpandedFilename();
23.155 + File f = FileUtil.normalizeFile(new File(name));
23.156 +
23.157 + FileObject fo = FileUtil.toFileObject(f);
23.158 + if (fo == null) {
23.159 + File dir = f.getParentFile();
23.160 + if (!dir.exists() && !dir.mkdirs()) {
23.161 + throw new IOException(
23.162 + NbBundle.getMessage(UserTaskList.class,
23.163 + "CannotCreateDir", dir.getAbsolutePath())); // NOI18N
23.164 + }
23.165 + OutputStream os = new FileOutputStream(f);
23.166 + try {
23.167 + InputStream is = UserTaskList.class.getResourceAsStream(
23.168 + "/org/netbeans/modules/tasklist/usertasks/tasklist.ics"); // NOI18N
23.169 + try {
23.170 + UTUtils.copyStream(is, os);
23.171 + } finally {
23.172 + is.close();
23.173 + }
23.174 + } finally {
23.175 + os.close();
23.176 + }
23.177 + fo = FileUtil.toFileObject(f);
23.178 + }
23.179 + return fo;
23.180 + }
23.181 +
23.182 private UserTasksTreeTable tt;
23.183 private JScrollPane scrollPane;
23.184 private boolean initialized = false;
23.185 private UserTaskList tasklist = null;
23.186 private FilterRepository filters = null;
23.187 private Filter activeFilter = null;
23.188 - private ExplorerManager manager;
23.189 private boolean default_;
23.190
23.191 /** View specific action for moving the selected task up. */
23.192 @@ -177,6 +262,9 @@
23.193 /** View specific action for moving the selected task left. */
23.194 public MoveRightAction moveRightAction;
23.195
23.196 + private AutoSaver autoSaver;
23.197 + private FileObject file;
23.198 +
23.199 /**
23.200 * Construct a new UserTaskView.
23.201 * NOTE: this is used by the window
23.202 @@ -188,18 +276,24 @@
23.203 /**
23.204 * Constructor.
23.205 *
23.206 - * @param title view title
23.207 - * @param category view's category. This value will be used as the name
23.208 - * for a subdirectory of "SystemFileSystem/TaskList/" for columns settings
23.209 + * @param fo .ics file
23.210 + * @param default_ true for the global "User Tasks" view
23.211 */
23.212 - public UserTaskView(UserTaskList tasklist, boolean default_) {
23.213 - this.default_ = default_;
23.214 - setList(tasklist);
23.215 -
23.216 - init();
23.217 + @AWTThreadAnnotation
23.218 + public UserTaskView(FileObject fo, boolean default_) {
23.219 + init(fo, default_);
23.220 }
23.221
23.222 /**
23.223 + * Returns the AutoSaver object associated with this view.
23.224 + *
23.225 + * @return AutoSaver
23.226 + */
23.227 + public AutoSaver getAutoSaver() {
23.228 + return autoSaver;
23.229 + }
23.230 +
23.231 + /**
23.232 * Returns the component representing the tasks.
23.233 *
23.234 * @return TreeTable
23.235 @@ -215,7 +309,8 @@
23.236 */
23.237 public Action[] getToolBarActions() {
23.238 return new Action[] {
23.239 - SystemAction.get(NewTaskAction.class),
23.240 + SystemAction.get(SaveAction.class),
23.241 + new NewTaskAction(this),
23.242 new GoToUserTaskAction(this),
23.243 null,
23.244 SystemAction.get(FilterAction.class),
23.245 @@ -296,7 +391,8 @@
23.246 * @throws IOException
23.247 * @throws ClassNotFoundException
23.248 */
23.249 - public void readExternal(ObjectInput objectInput) throws IOException, java.lang.ClassNotFoundException {
23.250 + public void readExternal(ObjectInput objectInput) throws IOException,
23.251 + java.lang.ClassNotFoundException {
23.252 readExternalCore(objectInput);
23.253 int ver = objectInput.read();
23.254
23.255 @@ -306,11 +402,9 @@
23.256
23.257 if (urlString != null) {
23.258 URL url = new URL(urlString);
23.259 - FileObject fo = URLMapper.findFileObject(url);
23.260 - if (fo != null) {
23.261 - UserTaskList utl = UserTaskList.readDocument(fo);
23.262 - setList(utl);
23.263 - init();
23.264 + file = URLMapper.findFileObject(url);
23.265 + if (file != null) {
23.266 + init(file, false);
23.267 } else {
23.268 Runnable r = new Runnable() {
23.269 public void run() {
23.270 @@ -320,9 +414,7 @@
23.271 SwingUtilities.invokeLater(r);
23.272 }
23.273 } else {
23.274 - default_ = true;
23.275 - setList(UserTaskList.getDefault());
23.276 - init();
23.277 + init(getDefaultFile(), true);
23.278 UserTaskViewRegistry.getInstance().setDefaultView(this);
23.279 }
23.280 }
23.281 @@ -415,7 +507,7 @@
23.282 objectOutput.write(4); // SERIAL VERSION
23.283
23.284 // Write out the UID of the currently selected task, or null if none
23.285 - objectOutput.writeObject(null); // Not yet implemented
23.286 + objectOutput.writeObject(null); // Unused. Was never implemented
23.287
23.288 // Here I should record a few things; in particular, sorting order, view
23.289 // preferences, etc.
23.290 @@ -423,12 +515,10 @@
23.291 // byte so we can do the right thing later without corrupting the userdir
23.292 objectOutput.write(6); // SERIAL VERSION
23.293
23.294 - UserTaskList tl = (UserTaskList)getUserTaskList();
23.295 + UserTaskList tl = getUserTaskList();
23.296 if (!default_) {
23.297 - FileObject fo = tl.getFile();
23.298 -
23.299 // Write out the name of the tasklist
23.300 - URL url = URLMapper.findURL(fo, URLMapper.EXTERNAL);
23.301 + URL url = URLMapper.findURL(file, URLMapper.EXTERNAL);
23.302 String urlString = url.toExternalForm();
23.303 objectOutput.writeObject(urlString);
23.304 } else {
23.305 @@ -477,32 +567,18 @@
23.306
23.307 objectOutput.writeObject(m);
23.308
23.309 - tl.save(); // Only does something if the list has changed...
23.310 + if (autoSaver.isModified())
23.311 + autoSaver.save(); // Only does something if the list has changed...
23.312 }
23.313
23.314 /**
23.315 - * Start showing new tasklist.
23.316 - *
23.317 - * @param list new tree
23.318 - */
23.319 - private void setList(UserTaskList list) {
23.320 - tasklist = list;
23.321 - if (tt != null) {
23.322 - tt.setTreeTableModel(
23.323 - new UserTasksTreeTableModel(tasklist, tt.getSortingModel(),
23.324 - getFilter()));
23.325 - }
23.326 - updateNameAndToolTip();
23.327 - }
23.328 -
23.329 - /**
23.330 * Updates the name of this TC and the tooltip
23.331 * corresponding to the FileObject.
23.332 */
23.333 private void updateNameAndToolTip() {
23.334 - setToolTipText(FileUtil.getFileDisplayName(tasklist.getFile()));
23.335 + setToolTipText(FileUtil.getFileDisplayName(file));
23.336 if (!default_) {
23.337 - setName(tasklist.getFile().getNameExt());
23.338 + setName(file.getNameExt());
23.339 } else {
23.340 setName(NbBundle.getMessage(UserTaskView.class, "TaskViewName")); // NOI18N
23.341 }
23.342 @@ -522,11 +598,7 @@
23.343 }
23.344
23.345 protected java.lang.String preferredID() {
23.346 - // although TC.preferredId says that the return value of
23.347 - // preferredID must not be unique it does not seem to work
23.348 - // so viewId is used to identify the views
23.349 - // + viewId;
23.350 - return "org.netbeans.modules.tasklist.usertasks.Window";// NOI18N
23.351 + return "org.netbeans.modules.tasklist.usertasks.Window"; // NOI18N
23.352 }
23.353
23.354 protected void setFiltered() {
23.355 @@ -601,12 +673,32 @@
23.356 }
23.357
23.358 /**
23.359 - * Common part for all constructors
23.360 + * Common part for all constructors.
23.361 + *
23.362 + * file and default_ variable should be initialized before calling this.
23.363 */
23.364 - private void init() {
23.365 + @AWTThreadAnnotation
23.366 + private void init(FileObject file, boolean default_) {
23.367 assert SwingUtilities.isEventDispatchThread();
23.368 +
23.369 + this.file = file;
23.370 + this.default_ = default_;
23.371
23.372 - tasklist.getFile().addFileChangeListener(this);
23.373 + try {
23.374 + tasklist = readDocument(file);
23.375 + this.autoSaver = new AutoSaver(tasklist, file);
23.376 + } catch (IOException e) {
23.377 + NotifyDescriptor nd = new NotifyDescriptor.Message(
23.378 + NbBundle.getMessage(TaskListDataObject.class,
23.379 + "ErrorReadingFile", e.getMessage())); // NOI18N
23.380 + DialogDisplayer.getDefault().notify(nd);
23.381 + }
23.382 +
23.383 + updateNameAndToolTip();
23.384 +
23.385 + new DueTasksNotifier(tasklist);
23.386 +
23.387 + file.addFileChangeListener(this);
23.388
23.389 setIcon(ICON);
23.390
23.391 @@ -615,10 +707,7 @@
23.392 JPanel centerPanel = new JPanel();
23.393 centerPanel.setLayout(new BorderLayout());
23.394
23.395 - manager = new ExplorerManager();
23.396 -
23.397 - tt = new UserTasksTreeTable(
23.398 - manager, getUserTaskList(), getFilter());
23.399 + tt = new UserTasksTreeTable(getUserTaskList(), getFilter());
23.400
23.401 configureActions();
23.402
23.403 @@ -634,13 +723,14 @@
23.404 TreePath path = new TreePath(tt.getTreeTableModel().getRoot());
23.405 tt.scrollTo(path);
23.406
23.407 + /** todo
23.408 Node n = getExplorerManager().getSelectedNodes()[0];
23.409
23.410 Action[] actions = n.getActions(false);
23.411 JPopupMenu pm = Utilities.actionsToPopup(actions,
23.412 e.getComponent());
23.413 if(pm != null)
23.414 - pm.show(e.getComponent(), e.getX(), e.getY());
23.415 + pm.show(e.getComponent(), e.getX(), e.getY());*/
23.416 }
23.417 });
23.418
23.419 @@ -658,10 +748,9 @@
23.420 add(toolbar, BorderLayout.WEST);
23.421
23.422 tt.select(new TreePath(tt.getTreeTableModel().getRoot()));
23.423 - }
23.424 -
23.425 - public ExplorerManager getExplorerManager() {
23.426 - return manager;
23.427 +
23.428 + associateLookup(Lookups.fixed(new UserTaskViewNode(this),
23.429 + getActionMap()));
23.430 }
23.431
23.432 /**
23.433 @@ -830,7 +919,7 @@
23.434 if (view.getClientProperty("isSliding") == Boolean.TRUE)
23.435 **/
23.436
23.437 - /**
23.438 + /*
23.439 * debug Ctrl+C,V,X
23.440 *
23.441 private void debugCopyPaste() {
23.442 @@ -901,10 +990,5 @@
23.443 FilterAction filter = (FilterAction)
23.444 FilterAction.get(FilterAction.class);
23.445 map.put(find.getActionMapKey(), filter);
23.446 -
23.447 - // following line tells the top component which lookup should be
23.448 - // associated with it
23.449 - Lookup lookup = ExplorerUtils.createLookup(manager, map);
23.450 - associateLookup(lookup);
23.451 }
23.452 }
24.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/UserTaskViewRegistry.java Mon Dec 04 21:57:00 2006 +0000
24.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/UserTaskViewRegistry.java Mon Dec 04 21:59:57 2006 +0000
24.3 @@ -27,7 +27,7 @@
24.4 import javax.swing.event.ChangeEvent;
24.5 import javax.swing.event.ChangeListener;
24.6 import javax.swing.event.EventListenerList;
24.7 -import org.netbeans.modules.tasklist.usertasks.model.UserTaskList;
24.8 +import org.netbeans.modules.tasklist.usertasks.util.AWTThreadAnnotation;
24.9 import org.openide.DialogDisplayer;
24.10 import org.openide.NotifyDescriptor;
24.11 import org.openide.NotifyDescriptor.Message;
24.12 @@ -71,11 +71,12 @@
24.13 *
24.14 * @return the default view or null if an error occured
24.15 */
24.16 + @AWTThreadAnnotation
24.17 public UserTaskView getDefault() {
24.18 if (defview == null) {
24.19 try {
24.20 defview = new UserTaskView(
24.21 - UserTaskList.getDefault(), true);
24.22 + UserTaskView.getDefaultFile(), true);
24.23 defview.showInMode();
24.24 } catch (IOException ioe) {
24.25 DialogDisplayer.getDefault().notify(new Message(
24.26 @@ -142,7 +143,7 @@
24.27 while (it.hasNext()) {
24.28 WeakReference wr = (WeakReference) it.next();
24.29 UserTaskView tlv = (UserTaskView) wr.get();
24.30 - if (tlv != null && tlv.getUserTaskList().getFile() == file)
24.31 + if (tlv != null && tlv.getAutoSaver().getFile() == file)
24.32 return tlv;
24.33 }
24.34 return null;
24.35 @@ -232,6 +233,7 @@
24.36 }
24.37 }
24.38 }
24.39 +
24.40 /**
24.41 * Creates a new instance of UserTaskViewRegistry
24.42 */
25.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/UserTasksTreeTable.java Mon Dec 04 21:57:00 2006 +0000
25.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/UserTasksTreeTable.java Mon Dec 04 21:59:57 2006 +0000
25.3 @@ -22,6 +22,7 @@
25.4 import com.toedter.calendar.JDateChooserCellEditor;
25.5 import java.awt.Graphics;
25.6 import java.awt.Point;
25.7 +import java.awt.event.MouseEvent;
25.8 import java.io.Serializable;
25.9 import java.util.ArrayList;
25.10 import java.util.List;
25.11 @@ -29,6 +30,7 @@
25.12
25.13 import javax.swing.Action;
25.14 import javax.swing.ImageIcon;
25.15 +import javax.swing.JPopupMenu;
25.16 import javax.swing.ListSelectionModel;
25.17 import javax.swing.event.ListSelectionEvent;
25.18 import javax.swing.event.ListSelectionListener;
25.19 @@ -60,26 +62,24 @@
25.20 import org.netbeans.modules.tasklist.usertasks.treetable.AdvancedTreeTableNode;
25.21 import org.netbeans.modules.tasklist.usertasks.treetable.DefaultMutableTreeTableNode;
25.22 import org.netbeans.modules.tasklist.usertasks.treetable.DefaultTreeTableModel;
25.23 -import org.netbeans.modules.tasklist.usertasks.treetable.NodesTreeTable;
25.24 import org.netbeans.modules.tasklist.usertasks.treetable.SortingHeaderRenderer;
25.25 import org.netbeans.modules.tasklist.usertasks.treetable.TreeTable;
25.26 import org.netbeans.modules.tasklist.usertasks.treetable.TreeTableDragGestureRecognizer;
25.27 import org.netbeans.modules.tasklist.usertasks.util.UTUtils;
25.28 -import org.openide.explorer.ExplorerManager;
25.29 -import org.openide.filesystems.FileObject;
25.30 -import org.openide.filesystems.FileUtil;
25.31 +import org.openide.awt.MouseUtils;
25.32 import org.openide.nodes.Node;
25.33 import org.openide.util.actions.SystemAction;
25.34 import org.netbeans.modules.tasklist.usertasks.model.UserTask;
25.35 import org.netbeans.modules.tasklist.usertasks.model.UserTaskList;
25.36 import org.netbeans.modules.tasklist.usertasks.renderers.OwnerTableCellRenderer;
25.37 +import org.openide.util.Utilities;
25.38
25.39 /**
25.40 * TT for user tasks
25.41 *
25.42 * @author tl
25.43 */
25.44 -public class UserTasksTreeTable extends NodesTreeTable {
25.45 +public class UserTasksTreeTable extends TreeTable {
25.46 private UserTask selected;
25.47
25.48 /**
25.49 @@ -89,10 +89,11 @@
25.50 * @param utl list with user tasks
25.51 * @param filter used filter or null
25.52 */
25.53 - public UserTasksTreeTable(ExplorerManager em, UserTaskList utl,
25.54 + public UserTasksTreeTable(UserTaskList utl,
25.55 Filter filter) {
25.56 - super(em, new DefaultTreeTableModel(
25.57 + super(new DefaultTreeTableModel(
25.58 new DefaultMutableTreeTableNode(), new String[] {""})); // NOI18N
25.59 + setAutoscrolls(false);
25.60 setTreeTableModel(
25.61 new UserTasksTreeTableModel(utl, getSortingModel(), filter));
25.62 setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
25.63 @@ -140,6 +141,32 @@
25.64 }
25.65 );
25.66
25.67 + addMouseListener(new MouseUtils.PopupMouseAdapter() {
25.68 + public void showPopup(MouseEvent e) {
25.69 + int row = rowAtPoint(e.getPoint());
25.70 + int col = columnAtPoint(e.getPoint());
25.71 + Action[] actions;
25.72 +
25.73 + if (row < 0 || col < 0) {
25.74 + actions = getFreeSpaceActions();
25.75 + } else {
25.76 + if (!getSelectionModel().isSelectedIndex(row)) {
25.77 + setRowSelectionInterval(row, row);
25.78 + }
25.79 + Node n = createNode(getNodeForRow(row));
25.80 +
25.81 + if (n == null)
25.82 + return;
25.83 + actions = n.getActions(false);
25.84 + }
25.85 + JPopupMenu pm = Utilities.actionsToPopup(actions,
25.86 + UserTasksTreeTable.this);
25.87 +
25.88 + if (pm != null)
25.89 + pm.show(UserTasksTreeTable.this, e.getX(), e.getY());
25.90 + }
25.91 + });
25.92 +
25.93 setColumnsConfig(createDefaultColumnsConfig());
25.94 TreeTableDragGestureRecognizer.enableDnD(this);
25.95 setTransferHandler(new MyTransferHandler());
25.96 @@ -288,7 +315,7 @@
25.97
25.98 public javax.swing.Action[] getFreeSpaceActions() {
25.99 return new Action[] {
25.100 - SystemAction.get(NewTaskAction.class),
25.101 + // TODO: new SystemAction.get(NewTaskAction.class),
25.102 null,
25.103 SystemAction.get(FilterAction.class),
25.104 null,
25.105 @@ -333,9 +360,10 @@
25.106 if (result.length() == 0)
25.107 result = null;
25.108 } else if (node instanceof UserTaskListTreeTableNode) {
25.109 - FileObject fo = ((UserTaskListTreeTableNode) node).
25.110 - getUserTaskList().getFile();
25.111 - result = FileUtil.getFileDisplayName(fo);
25.112 + // todo FileObject fo = ((UserTaskListTreeTableNode) node).
25.113 + // getUserTaskList().getFile();
25.114 + // result = FileUtil.getFileDisplayName(fo);
25.115 + result = "todo";
25.116 }
25.117 }
25.118 return result;
26.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/ClearCompletedAction.java Mon Dec 04 21:57:00 2006 +0000
26.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/ClearCompletedAction.java Mon Dec 04 21:59:57 2006 +0000
26.3 @@ -77,7 +77,7 @@
26.4 * @param ut a task
26.5 */
26.6 private void clearCompleted(UserTask ut) {
26.7 - if (!ut.isProgressComputed())
26.8 + if (!ut.isValuesComputed())
26.9 ut.setDone(false);
26.10 Iterator it = ut.getSubtasks().iterator();
26.11 while (it.hasNext()) {
27.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/GoToUserTaskAction.java Mon Dec 04 21:57:00 2006 +0000
27.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/GoToUserTaskAction.java Mon Dec 04 21:59:57 2006 +0000
27.3 @@ -19,6 +19,8 @@
27.4 package org.netbeans.modules.tasklist.usertasks.actions;
27.5
27.6 import java.awt.event.ActionEvent;
27.7 +import java.beans.PropertyChangeEvent;
27.8 +import java.beans.PropertyChangeListener;
27.9 import java.net.MalformedURLException;
27.10 import java.net.URL;
27.11 import javax.swing.ImageIcon;
27.12 @@ -31,6 +33,7 @@
27.13 import org.openide.text.Line;
27.14 import org.openide.util.NbBundle;
27.15 import org.openide.util.Utilities;
27.16 +import org.openide.util.WeakListeners;
27.17
27.18
27.19 /**
27.20 @@ -40,7 +43,10 @@
27.21 * @author Tor Norbye
27.22 * @author tl
27.23 */
27.24 -public class GoToUserTaskAction extends UTViewAction {
27.25 +public class GoToUserTaskAction extends UTViewAction
27.26 + implements PropertyChangeListener {
27.27 + private UserTask last;
27.28 +
27.29 /**
27.30 * Constructor.
27.31 *
27.32 @@ -63,8 +69,23 @@
27.33 }
27.34
27.35 public void valueChanged(ListSelectionEvent e) {
27.36 + if (last != null)
27.37 + last.removePropertyChangeListener(this);
27.38 UserTask ut = getSingleSelectedTask();
27.39 setEnabled(ut != null &&
27.40 (ut.getLine() != null || ut.getUrl() != null));
27.41 + last = ut;
27.42 + if (last != null)
27.43 + last.addPropertyChangeListener(this);
27.44 + }
27.45 +
27.46 + public void propertyChange(PropertyChangeEvent evt) {
27.47 + if (evt.getPropertyName() == UserTask.PROP_URL ||
27.48 + evt.getPropertyName() == UserTask.PROP_LINE_NUMBER ||
27.49 + evt.getPropertyName() == UserTask.PROP_LINE) {
27.50 + UserTask ut = getSingleSelectedTask();
27.51 + setEnabled(ut != null &&
27.52 + (ut.getLine() != null || ut.getUrl() != null));
27.53 + }
27.54 }
27.55 }
28.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/MoveLeftAction.java Mon Dec 04 21:57:00 2006 +0000
28.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/MoveLeftAction.java Mon Dec 04 21:59:57 2006 +0000
28.3 @@ -21,7 +21,6 @@
28.4
28.5 import java.awt.event.ActionEvent;
28.6 import javax.swing.event.ListSelectionEvent;
28.7 -import javax.swing.tree.TreeNode;
28.8 import javax.swing.tree.TreePath;
28.9 import org.netbeans.modules.tasklist.usertasks.UserTaskListTreeTableNode;
28.10 import org.netbeans.modules.tasklist.usertasks.UserTaskTreeTableNode;
29.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/MoveRightAction.java Mon Dec 04 21:57:00 2006 +0000
29.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/MoveRightAction.java Mon Dec 04 21:59:57 2006 +0000
29.3 @@ -26,6 +26,7 @@
29.4 import org.netbeans.modules.tasklist.usertasks.UserTaskTreeTableNode;
29.5 import org.netbeans.modules.tasklist.usertasks.UserTaskView;
29.6 import org.netbeans.modules.tasklist.usertasks.model.UserTask;
29.7 +import org.netbeans.modules.tasklist.usertasks.util.UTUtils;
29.8 import org.openide.util.NbBundle;
29.9
29.10 /**
29.11 @@ -92,6 +93,9 @@
29.12 if (last instanceof UserTaskTreeTableNode) {
29.13 UserTaskTreeTableNode n = (UserTaskTreeTableNode) last;
29.14 TreeNode parent = n.getParent();
29.15 + if (parent == null)
29.16 + UTUtils.LOGGER.fine(n.getUserTask() +
29.17 + " does not have a parent"); // NOI18N
29.18 int index = parent.getIndex(n);
29.19 setEnabled(index != 0);
29.20 } else {
30.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/NewTaskAction.java Mon Dec 04 21:57:00 2006 +0000
30.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/NewTaskAction.java Mon Dec 04 21:59:57 2006 +0000
30.3 @@ -25,14 +25,20 @@
30.4 import java.awt.event.ActionListener;
30.5 import java.net.URL;
30.6 import javax.swing.JButton;
30.7 +import javax.swing.event.ListSelectionEvent;
30.8 +import javax.swing.tree.TreePath;
30.9
30.10 import org.netbeans.modules.tasklist.usertasks.EditTaskPanel;
30.11 +import org.netbeans.modules.tasklist.usertasks.UserTaskListTreeTableNode;
30.12 +import org.netbeans.modules.tasklist.usertasks.actions.UTViewAction;
30.13 +import org.netbeans.modules.tasklist.usertasks.util.AWTThreadAnnotation;
30.14 import org.netbeans.modules.tasklist.usertasks.util.UTUtils;
30.15 import org.netbeans.modules.tasklist.usertasks.UserTaskViewRegistry;
30.16 import org.netbeans.modules.tasklist.usertasks.model.UserTask;
30.17 import org.netbeans.modules.tasklist.usertasks.model.UserTaskList;
30.18 import org.netbeans.modules.tasklist.usertasks.UserTaskListNode;
30.19 import org.netbeans.modules.tasklist.usertasks.UserTaskNode;
30.20 +import org.netbeans.modules.tasklist.usertasks.UserTaskTreeTableNode;
30.21 import org.netbeans.modules.tasklist.usertasks.UserTaskView;
30.22 import org.openide.DialogDescriptor;
30.23 import org.openide.DialogDisplayer;
30.24 @@ -46,7 +52,6 @@
30.25 import org.openide.text.Line;
30.26 import org.openide.util.HelpCtx;
30.27 import org.openide.util.NbBundle;
30.28 -import org.openide.util.actions.NodeAction;
30.29
30.30 /**
30.31 * Action which brings up a dialog where you can create
30.32 @@ -56,34 +61,40 @@
30.33 * @author Trond Norbye
30.34 * @author tl
30.35 */
30.36 -public class NewTaskAction extends NodeAction {
30.37 -
30.38 +public class NewTaskAction extends UTViewAction {
30.39 private static final long serialVersionUID = 1;
30.40
30.41 - private DialogDescriptor dd;
30.42 - private EditTaskPanel panel;
30.43 - private Dialog dialog;
30.44 - private JButton addAnotherButton;
30.45 + private static DialogDescriptor dd;
30.46 + private static EditTaskPanel panel;
30.47 + private static Dialog dialog;
30.48 + private static JButton addAnotherButton;
30.49
30.50 - private UserTaskView utv;
30.51 - private UserTask parent;
30.52 - private UserTaskList utl;
30.53 - private URL url;
30.54 - private int lineNumber;
30.55 - private boolean associate;
30.56 + /**
30.57 + * Constructor.
30.58 + *
30.59 + * @param utv a user task view.
30.60 + */
30.61 + public NewTaskAction(UserTaskView utv) {
30.62 + super(utv, "newTask");
30.63 + }
30.64
30.65 - protected boolean enable(Node[] node) {
30.66 - return node.length == 1 &&
30.67 - (node[0] instanceof UserTaskNode ||
30.68 - node[0] instanceof UserTaskListNode);
30.69 + public void valueChanged(ListSelectionEvent e) {
30.70 + TreePath[] paths = utv.getTreeTable().getSelectedPaths();
30.71 + boolean enabled = false;
30.72 + if (paths.length == 1) {
30.73 + Object last = paths[0].getLastPathComponent();
30.74 + enabled = last instanceof UserTaskTreeTableNode ||
30.75 + last instanceof UserTaskListTreeTableNode;
30.76 + }
30.77 + setEnabled(enabled);
30.78 }
30.79 -
30.80 +
30.81 /**
30.82 * Creates a panel for editing a task
30.83 *
30.84 * @return created panel
30.85 */
30.86 - private EditTaskPanel getEditTaskPanel() {
30.87 + private static EditTaskPanel getEditTaskPanel() {
30.88 if (panel == null) {
30.89 panel = new EditTaskPanel(false);
30.90 panel.setPreferredSize(new Dimension(600,500));
30.91 @@ -96,7 +107,7 @@
30.92 *
30.93 * @return the created dialog
30.94 */
30.95 - private Dialog getDialog() {
30.96 + private static Dialog getDialog() {
30.97 if (dialog == null) {
30.98 dialog = DialogDisplayer.getDefault().createDialog(
30.99 getDialogDescriptor());
30.100 @@ -110,13 +121,14 @@
30.101 *
30.102 * @return created dialog descriptor
30.103 */
30.104 - private DialogDescriptor getDialogDescriptor() {
30.105 + private static DialogDescriptor getDialogDescriptor() {
30.106 if (dd == null) {
30.107 dd = new DialogDescriptor(getEditTaskPanel(),
30.108 NbBundle.getMessage(NewTaskAction.class,
30.109 - "TITLE_add_todo")); // NOI18N
30.110 + "TITLE_add_todo")); // NOI18N
30.111 dd.setModal(true);
30.112 - dd.setHelpCtx(new HelpCtx("org.netbeans.modules.tasklist.usertasks.NewTaskDialog")); // NOI18N
30.113 + dd.setHelpCtx(new HelpCtx(
30.114 + "org.netbeans.modules.tasklist.usertasks.NewTaskDialog")); // NOI18N
30.115 dd.setMessageType(NotifyDescriptor.PLAIN_MESSAGE);
30.116
30.117 // dialog buttons
30.118 @@ -132,55 +144,29 @@
30.119 DialogDescriptor.OK_OPTION,
30.120 DialogDescriptor.CANCEL_OPTION
30.121 });
30.122 - dd.setButtonListener(new ActionListener() {
30.123 - public void actionPerformed(ActionEvent e) {
30.124 - Object src = e.getSource();
30.125 - if (src == addAnotherButton) {
30.126 - addAnotherTask();
30.127 - }
30.128 - }
30.129 - });
30.130 }
30.131 return dd;
30.132 }
30.133
30.134 - /**
30.135 - * Will be called if the user pressed "Add Another" button
30.136 - */
30.137 - private void addAnotherTask() {
30.138 - UserTask ut = new UserTask("", utl); // NOI18N
30.139 - panel.fillObject(ut);
30.140 -
30.141 - // See if the user wants to append or prepend
30.142 - boolean append = panel.getAppend();
30.143 - if (parent != null) {
30.144 - if (append)
30.145 - parent.getSubtasks().add(ut);
30.146 - else
30.147 - parent.getSubtasks().add(0, ut);
30.148 + public void actionPerformed(ActionEvent e) {
30.149 + TreePath[] tp = utv.getTreeTable().getSelectedPaths();
30.150 + final UserTask parent;
30.151 + final UserTaskList utl;
30.152 + Object last = tp[0].getLastPathComponent();
30.153 + if (last instanceof UserTaskTreeTableNode) {
30.154 + parent = ((UserTaskTreeTableNode) last).getUserTask();
30.155 + utl = parent.getList();
30.156 } else {
30.157 - if (append)
30.158 - utl.getSubtasks().add(ut);
30.159 - else
30.160 - utl.getSubtasks().add(0, ut);
30.161 + parent = null;
30.162 + utl = ((UserTaskListTreeTableNode) last).
30.163 + getUserTaskList();
30.164 }
30.165 -
30.166 - // After the add - view the todo list as well!
30.167 - utv.showInMode();
30.168 - utv.select(ut);
30.169 - utv.scrollTo(ut);
30.170 -
30.171 - ut = new UserTask("", utl); // NOI18N
30.172 - panel.fillPanel(ut);
30.173 - panel.focusSummary();
30.174 - }
30.175 -
30.176 - protected void performAction(Node[] nodes) {
30.177 +
30.178 // Get the current filename and line number so we can initialize
30.179 // the filename:linenumber columns
30.180
30.181 // First try to get the editor window itself; if you right click
30.182 - // on a node in the Todo Window, that node becomes the activated
30.183 + // on a node in the User Tasks Window, that node becomes the activated
30.184 // node (which is good - it makes the properties window show the
30.185 // todo item's properties, etc.) but that means that we can't
30.186 // find the editor position via the normal means.
30.187 @@ -188,35 +174,95 @@
30.188 // ask for its nodes.
30.189
30.190 // find cursor position
30.191 - Line cursor = UTUtils.findCursorPosition(nodes);
30.192 + Line cursor = UTUtils.findCursorPosition(null); // TODO: null
30.193 if (cursor == null) {
30.194 Node[] editorNodes = UTUtils.getEditorNodes();
30.195 if (editorNodes != null)
30.196 cursor = UTUtils.findCursorPosition(editorNodes);
30.197 }
30.198 + int lineNumber;
30.199 + URL url;
30.200 if (cursor != null) {
30.201 - this.lineNumber = cursor.getLineNumber();
30.202 - this.url = UTUtils.getExternalURLForLine(cursor);
30.203 + lineNumber = cursor.getLineNumber();
30.204 + url = UTUtils.getExternalURLForLine(cursor);
30.205 } else {
30.206 - this.url = null;
30.207 - this.lineNumber = -1;
30.208 + url = null;
30.209 + lineNumber = -1;
30.210 }
30.211
30.212 - // find parent task
30.213 - if (nodes[0] instanceof UserTaskNode) {
30.214 - parent = ((UserTaskNode) nodes[0]).getTask();
30.215 - utl = parent.getList();
30.216 - } else {
30.217 - parent = null;
30.218 - utl = ((UserTaskListNode) nodes[0]).getUserTaskList();
30.219 + // After the add - view the todo list as well!
30.220 + final UserTaskView utv = UserTaskViewRegistry.getInstance().getCurrent();
30.221 +
30.222 + UserTask ut = new UserTask("", utl); // NOI18N
30.223 +
30.224 + final EditTaskPanel panel = getEditTaskPanel();
30.225 + panel.fillPanel(ut);
30.226 + panel.setAssociatedFilePos(false);
30.227 + panel.setUrl(url);
30.228 + panel.setLineNumber(lineNumber);
30.229 + panel.focusSummary();
30.230 +
30.231 + Dialog d = getDialog();
30.232 + addAnotherButton.setEnabled(true);
30.233 + d.setVisible(true);
30.234 +
30.235 + DialogDescriptor dd = getDialogDescriptor();
30.236 + dd.setButtonListener(new ActionListener() {
30.237 + public void actionPerformed(ActionEvent e) {
30.238 + Object src = e.getSource();
30.239 + if (src == addAnotherButton) {
30.240 + UserTask ut = new UserTask("", utl); // NOI18N
30.241 + panel.fillObject(ut);
30.242 +
30.243 + // See if the user wants to append or prepend
30.244 + boolean append = panel.getAppend();
30.245 + if (parent != null) {
30.246 + if (append)
30.247 + parent.getSubtasks().add(ut);
30.248 + else
30.249 + parent.getSubtasks().add(0, ut);
30.250 + } else {
30.251 + if (append)
30.252 + utl.getSubtasks().add(ut);
30.253 + else
30.254 + utl.getSubtasks().add(0, ut);
30.255 + }
30.256 +
30.257 + // After the add - view the todo list as well!
30.258 + utv.showInMode();
30.259 + utv.select(ut);
30.260 + utv.scrollTo(ut);
30.261 +
30.262 + ut = new UserTask("", utl); // NOI18N
30.263 + panel.fillPanel(ut);
30.264 + panel.focusSummary();
30.265 + }
30.266 + }
30.267 + });
30.268 +
30.269 + if (dd.getValue() == NotifyDescriptor.OK_OPTION) {
30.270 + panel.fillObject(ut);
30.271 +
30.272 + // See if the user wants to append or prepend
30.273 + boolean append = panel.getAppend();
30.274 + if (parent != null) {
30.275 + if (append)
30.276 + parent.getSubtasks().add(ut);
30.277 + else
30.278 + parent.getSubtasks().add(0, ut);
30.279 + } else {
30.280 + if (append)
30.281 + utl.getSubtasks().add(ut);
30.282 + else
30.283 + utl.getSubtasks().add(0, ut);
30.284 + }
30.285 +
30.286 + assert utv != null;
30.287 +
30.288 + utv.showInMode();
30.289 + utv.select(ut);
30.290 + utv.scrollTo(ut);
30.291 }
30.292 -
30.293 - associate = false;
30.294 -
30.295 - // After the add - view the todo list as well!
30.296 - utv = UserTaskViewRegistry.getInstance().getCurrent();
30.297 -
30.298 - performTheAction();
30.299 }
30.300
30.301 /**
30.302 @@ -224,9 +270,8 @@
30.303 *
30.304 * @param line the associated line
30.305 */
30.306 + @AWTThreadAnnotation
30.307 public static void performAction(Line line) {
30.308 - NewTaskAction nta = (NewTaskAction) NewTaskAction.get(NewTaskAction.class);
30.309 -
30.310 DataObject dob = DataEditorSupport.findDataObject(line);
30.311 if (dob == null)
30.312 return;
30.313 @@ -236,43 +281,36 @@
30.314 if (url == null)
30.315 return;
30.316
30.317 - nta.associate = true;
30.318 - nta.url = url;
30.319 - nta.lineNumber = line.getLineNumber();
30.320 -
30.321 // After the add - view the todo list as well!
30.322 - nta.utv = UserTaskViewRegistry.getInstance().getLastActivated();
30.323 - if (nta.utv == null) {
30.324 - nta.utv = UserTaskViewRegistry.getInstance().getDefault();
30.325 - nta.utv.showInMode();
30.326 + UserTaskView utv = UserTaskViewRegistry.getInstance().getLastActivated();
30.327 + if (utv == null) {
30.328 + utv = UserTaskViewRegistry.getInstance().getDefault();
30.329 + utv.showInMode();
30.330 }
30.331 - nta.utl = nta.utv.getUserTaskList();
30.332 + UserTaskList utl = utv.getUserTaskList();
30.333
30.334 // find parent task
30.335 - Node[] nodes = nta.utv.getExplorerManager().getSelectedNodes();
30.336 + /* TODO: Node[] nodes = utv.getExplorerManager().getSelectedNodes();*/
30.337 + UserTask parent = null;
30.338 + /* TODO
30.339 if (nodes.length > 0 && nodes[0] instanceof UserTaskNode) {
30.340 - nta.parent = ((UserTaskNode) nodes[0]).getTask();
30.341 + parent = ((UserTaskNode) nodes[0]).getTask();
30.342 } else {
30.343 - nta.parent = null;
30.344 - }
30.345 + parent = null;
30.346 + }*/
30.347
30.348 - nta.performTheAction();
30.349 - }
30.350 -
30.351 - /**
30.352 - * Performs the action
30.353 - */
30.354 - private void performTheAction() {
30.355 - UserTask ut = new UserTask("", utl); // NOI18N
30.356 + UserTask ut = new UserTask(line.getText(), utl); // NOI18N
30.357
30.358 EditTaskPanel panel = getEditTaskPanel();
30.359 panel.fillPanel(ut);
30.360 - panel.setAssociatedFilePos(associate);
30.361 + panel.setAssociatedFilePos(true);
30.362 panel.setUrl(url);
30.363 - panel.setLineNumber(lineNumber);
30.364 + panel.setLineNumber(line.getLineNumber());
30.365 panel.focusSummary();
30.366
30.367 - getDialog().setVisible(true);
30.368 + Dialog d = getDialog();
30.369 + addAnotherButton.setEnabled(false);
30.370 + d.setVisible(true);
30.371
30.372 if (getDialogDescriptor().getValue() == NotifyDescriptor.OK_OPTION) {
30.373 panel.fillObject(ut);
30.374 @@ -307,14 +345,4 @@
30.375 protected String iconResource() {
30.376 return "org/netbeans/modules/tasklist/usertasks/actions/newTask.gif"; // NOI18N
30.377 }
30.378 -
30.379 - public HelpCtx getHelpCtx() {
30.380 - return HelpCtx.DEFAULT_HELP;
30.381 - // If you will provide context help then use:
30.382 - // return new HelpCtx (NewTodoItemAction.class);
30.383 - }
30.384 -
30.385 - protected boolean asynchronous() {
30.386 - return false;
30.387 - }
30.388 }
31.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/ScheduleAction.java Mon Dec 04 21:57:00 2006 +0000
31.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/ScheduleAction.java Mon Dec 04 21:59:57 2006 +0000
31.3 @@ -80,7 +80,7 @@
31.4 public Object compute(Object obj) {
31.5 if (obj instanceof UserTask) {
31.6 UserTask ut = (UserTask) obj;
31.7 - if (!ut.isEffortComputed() && !ut.isDone()) {
31.8 + if (!ut.isValuesComputed() && !ut.isDone()) {
31.9 tasks.add(ut);
31.10 }
31.11 }
32.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/UTCopyAction.java Mon Dec 04 21:57:00 2006 +0000
32.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/UTCopyAction.java Mon Dec 04 21:59:57 2006 +0000
32.3 @@ -26,6 +26,7 @@
32.4 import javax.swing.tree.TreePath;
32.5 import org.netbeans.modules.tasklist.usertasks.UserTaskListTreeTableNode;
32.6 import org.netbeans.modules.tasklist.usertasks.UserTaskView;
32.7 +import org.netbeans.modules.tasklist.usertasks.util.UTUtils;
32.8
32.9 /**
32.10 * Copy.
32.11 @@ -52,6 +53,7 @@
32.12 break;
32.13 }
32.14 }
32.15 + UTUtils.LOGGER.fine("enabled=" + enabled);
32.16 setEnabled(enabled);
32.17 }
32.18
33.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/ViewTasksAction.java Mon Dec 04 21:57:00 2006 +0000
33.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/actions/ViewTasksAction.java Mon Dec 04 21:59:57 2006 +0000
33.3 @@ -21,6 +21,7 @@
33.4
33.5 import org.netbeans.modules.tasklist.usertasks.UserTaskView;
33.6 import org.netbeans.modules.tasklist.usertasks.UserTaskViewRegistry;
33.7 +import org.netbeans.modules.tasklist.usertasks.util.AWTThreadAnnotation;
33.8 import org.openide.util.HelpCtx;
33.9 import org.openide.util.NbBundle;
33.10 import org.openide.util.actions.CallableSystemAction;
33.11 @@ -43,6 +44,7 @@
33.12 return false;
33.13 }
33.14
33.15 + @AWTThreadAnnotation
33.16 static void show() {
33.17 UserTaskView view = UserTaskViewRegistry.getInstance().getDefault();
33.18 if (view != null) {
34.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/filter/Bundle.properties Mon Dec 04 21:57:00 2006 +0000
34.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/filter/Bundle.properties Mon Dec 04 21:59:57 2006 +0000
34.3 @@ -24,6 +24,11 @@
34.4 GreaterEquals=Greater than or equals
34.5 duration_desc=Duration condition value
34.6
34.7 +## UTPriorityCondition
34.8 +prio_desc=Priority condition value
34.9 +LBL_PriorityCheckList=Choose priority
34.10 +IsOneOf=Is one of
34.11 +
34.12 ## UserTaskProperties
34.13 LBL_detailsProperty=Description
34.14 HNT_detailsProperty=Full description of the task
35.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
35.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/filter/UTPriorityCondition.java Mon Dec 04 21:59:57 2006 +0000
35.3 @@ -0,0 +1,154 @@
35.4 +/*
35.5 + * The contents of this file are subject to the terms of the Common Development
35.6 + * and Distribution License (the License). You may not use this file except in
35.7 + * compliance with the License.
35.8 + *
35.9 + * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
35.10 + * or http://www.netbeans.org/cddl.txt.
35.11 + *
35.12 + * When distributing Covered Code, include this CDDL Header Notice in each file
35.13 + * and include the License file at http://www.netbeans.org/cddl.txt.
35.14 + * If applicable, add the following below the CDDL Header, with the fields
35.15 + * enclosed by brackets [] replaced by your own identifying information:
35.16 + * "Portions Copyrighted [year] [name of copyright owner]"
35.17 + *
35.18 + * The Original Software is NetBeans. The Initial Developer of the Original
35.19 + * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
35.20 + * Microsystems, Inc. All Rights Reserved.
35.21 + */
35.22 +
35.23 +package org.netbeans.modules.tasklist.usertasks.filter;
35.24 +
35.25 +import java.awt.BorderLayout;
35.26 +import java.util.Arrays;
35.27 +import javax.swing.*;
35.28 +import org.netbeans.modules.tasklist.core.checklist.CheckList;
35.29 +import org.netbeans.modules.tasklist.core.checklist.DefaultCheckListModel;
35.30 +import org.netbeans.modules.tasklist.core.filter.FilterCondition;
35.31 +import org.netbeans.modules.tasklist.usertasks.model.UserTask;
35.32 +import org.openide.util.NbBundle;
35.33 +
35.34 +/**
35.35 + * "Priority is" - condition
35.36 + *
35.37 + * @author tl
35.38 + */
35.39 +public class UTPriorityCondition extends FilterCondition {
35.40 + /**
35.41 + * Creates an array of filter conditions for the specified property
35.42 + *
35.43 + * @param index index of the property
35.44 + */
35.45 + public static UTPriorityCondition[] createConditions() {
35.46 + return new UTPriorityCondition[] {
35.47 + new UTPriorityCondition()
35.48 + };
35.49 + };
35.50 +
35.51 +
35.52 + private static int NPRIORITIES = 5;
35.53 +
35.54 + // 5 = Number of different priorities
35.55 + protected boolean[] priorities = new boolean[NPRIORITIES];
35.56 +
35.57 + /**
35.58 + * Creates a new instance
35.59 + *
35.60 + * @param prop index of a property
35.61 + */
35.62 + public UTPriorityCondition() {
35.63 + Arrays.fill(priorities, true);
35.64 + }
35.65 +
35.66 +
35.67 + public UTPriorityCondition(final UTPriorityCondition rhs) {
35.68 + super(rhs);
35.69 + // copy priorities
35.70 + for (int i = 0; i < NPRIORITIES; i++)
35.71 + this.priorities[i] = rhs.priorities[i];
35.72 + }
35.73 +
35.74 + public Object clone() {
35.75 + return new UTPriorityCondition(this);
35.76 + }
35.77 +
35.78 + public boolean isTrue(Object o1) {
35.79 + Integer k = (Integer) o1;
35.80 + return priorities[k - 1];
35.81 + }
35.82 +
35.83 + public JComponent createConstantComponent() {
35.84 + CheckList list = new CheckList(
35.85 + new DefaultCheckListModel(
35.86 + priorities, UserTask.getPriorityNames()));
35.87 + JPanel panel = new JPanel(new BorderLayout());
35.88 + panel.setOpaque(false);
35.89 + panel.setBorder(BorderFactory.createCompoundBorder(
35.90 + UIManager.getBorder("TextField.border"), // NOI18N
35.91 + BorderFactory.createEmptyBorder(2, 2, 2, 2)
35.92 + ));
35.93 + panel.add(list, BorderLayout.CENTER);
35.94 + panel.setToolTipText(NbBundle.getMessage(UTPriorityCondition.class,
35.95 + "prio_desc"));
35.96 +
35.97 + list.getAccessibleContext().setAccessibleName(
35.98 + NbBundle.getMessage(UTPriorityCondition.class,
35.99 + "LBL_PriorityCheckList"));
35.100 + list.getAccessibleContext().setAccessibleDescription(
35.101 + NbBundle.getMessage(UTPriorityCondition.class,
35.102 + "LBL_PriorityCheckList"));
35.103 +
35.104 + return panel;
35.105 + }
35.106 +
35.107 + public void getConstantFrom(JComponent cmp) {
35.108 + // Nothing to do. The array of booleans will not be cloned in
35.109 + // DefaultCheckListModel
35.110 + }
35.111 +
35.112 + protected String getDisplayName() {
35.113 + return NbBundle.getMessage(UTPriorityCondition.class, "IsOneOf");
35.114 + }
35.115 +
35.116 +
35.117 + private static class Convertor extends FilterCondition.Convertor {
35.118 + private static final String ATTR_PRIORITIES = "priorities";
35.119 +
35.120 + public Convertor() {
35.121 + super("PriorityCondition");
35.122 + }
35.123 +
35.124 + public static UTPriorityCondition.Convertor create() {
35.125 + return new UTPriorityCondition.Convertor();
35.126 + }
35.127 +
35.128 + protected Object readElement(org.w3c.dom.Element element)
35.129 + throws java.io.IOException, java.lang.ClassNotFoundException {
35.130 + UTPriorityCondition cond = new UTPriorityCondition();
35.131 + super.readCondition(element, cond);
35.132 +
35.133 + String spriorities = element.getAttribute(ATTR_PRIORITIES);
35.134 + boolean bpriorities [] = new boolean[NPRIORITIES];
35.135 + for (int i = 0; i < NPRIORITIES; i++)
35.136 + bpriorities[i] = (spriorities.charAt(i) == '+');
35.137 + cond.priorities = bpriorities;
35.138 +
35.139 + return cond;
35.140 + }
35.141 +
35.142 + // write methods for supported condition types
35.143 + protected void writeElement(org.w3c.dom.Document document,
35.144 + org.w3c.dom.Element element, Object obj)
35.145 + throws java.io.IOException, org.w3c.dom.DOMException {
35.146 + UTPriorityCondition cond = (UTPriorityCondition)obj;
35.147 + super.writeCondition(document, element, cond);
35.148 +
35.149 + StringBuffer str = new StringBuffer(NPRIORITIES);
35.150 + for (int i = 0; i < NPRIORITIES; i++)
35.151 + str.append(cond.priorities[i] ? '+' : '-');
35.152 + element.setAttribute(ATTR_PRIORITIES, str.toString());
35.153 + }
35.154 + }
35.155 +
35.156 +
35.157 +}
36.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/filter/UserTaskFilter.java Mon Dec 04 21:57:00 2006 +0000
36.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/filter/UserTaskFilter.java Mon Dec 04 21:59:57 2006 +0000
36.3 @@ -19,13 +19,13 @@
36.4
36.5 package org.netbeans.modules.tasklist.usertasks.filter;
36.6
36.7 +import java.io.Serializable;
36.8 import org.netbeans.modules.tasklist.core.filter.AppliedFilterCondition;
36.9 import org.netbeans.modules.tasklist.core.filter.BooleanFilterCondition;
36.10 import org.netbeans.modules.tasklist.core.filter.DateFilterCondition;
36.11 import org.netbeans.modules.tasklist.core.filter.Filter;
36.12 import org.netbeans.modules.tasklist.core.filter.FilterConvertor;
36.13 import org.netbeans.modules.tasklist.core.filter.IntegerFilterCondition;
36.14 -import org.netbeans.modules.tasklist.core.filter.PriorityCondition;
36.15 import org.netbeans.modules.tasklist.core.filter.StringFilterCondition;
36.16 import org.netbeans.modules.tasklist.core.filter.SuggestionProperty;
36.17
36.18 @@ -83,7 +83,7 @@
36.19 if (property.equals(UserTaskProperties.PROP_SUMMARY)) {
36.20 return applyConditions(property, StringFilterCondition.createConditions());
36.21 } else if (property.equals(UserTaskProperties.PROP_PRIORITY)) {
36.22 - return applyConditions(property, PriorityCondition.createConditions());
36.23 + return applyConditions(property, UTPriorityCondition.createConditions());
36.24 } else if (property.equals(UserTaskProperties.PROP_CATEGORY)) {
36.25 return applyConditions(property, StringFilterCondition.createConditions());
36.26 } else if (property.equals(UserTaskProperties.PROP_DETAILS)) {
36.27 @@ -122,7 +122,7 @@
36.28 }
36.29
36.30
36.31 - private static class Convertor extends FilterConvertor {
36.32 + public static class Convertor extends FilterConvertor {
36.33 public Convertor() {
36.34 super("UserTaskFilter"); // NOI18N
36.35 }
37.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/filter/UserTaskProperties.java Mon Dec 04 21:57:00 2006 +0000
37.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/filter/UserTaskProperties.java Mon Dec 04 21:59:57 2006 +0000
37.3 @@ -25,7 +25,11 @@
37.4 import org.netbeans.modules.tasklist.core.TaskProperties;
37.5 import org.netbeans.modules.tasklist.core.filter.SuggestionProperty;
37.6 import org.netbeans.modules.tasklist.usertasks.model.UserTask;
37.7 +import org.netbeans.modules.tasklist.usertasks.util.UTUtils;
37.8
37.9 +/**
37.10 + * @author unknown
37.11 + */
37.12 public class UserTaskProperties extends TaskProperties {
37.13 public static final String PROPID_PRIORITY = "priority"; // NOI18N
37.14 public static final String PROPID_SUMMARY = "summary"; // NOI18N
37.15 @@ -45,137 +49,138 @@
37.16 public static final String PROPID_COMPLETED_DATE = "completedDate"; // NOI18N
37.17 public static final String PROPID_START = "start"; // NOI18N
37.18 public static final String PROPID_SPENT_TIME_TODAY = "spentTimeToday"; // NOI18N
37.19 -
37.20 - public static SuggestionProperty PROP_SUMMARY =
37.21 - new SuggestionProperty(PROPID_SUMMARY, String.class) {
37.22 - public Object getValue(Object obj) {return ((UserTask) obj).getSummary(); }
37.23 +
37.24 + public static SuggestionProperty PROP_SUMMARY =
37.25 + new SuggestionProperty(PROPID_SUMMARY, String.class) {
37.26 + public Object getValue(Object obj) {return ((UserTask) obj).getSummary(); }
37.27 };
37.28 -
37.29 - public static SuggestionProperty PROP_PRIORITY =
37.30 - new SuggestionProperty(PROPID_PRIORITY, String.class) {
37.31 - public Object getValue(Object obj) {
37.32 - return new Integer(((UserTask) obj).getPriority());
37.33 - }
37.34 +
37.35 + public static SuggestionProperty PROP_PRIORITY =
37.36 + new SuggestionProperty(PROPID_PRIORITY, String.class) {
37.37 + public Object getValue(Object obj) {
37.38 + // UTUtils.LOGGER.fine(obj.getClass().getName());
37.39 + return new Integer(((UserTask) obj).getPriority());
37.40 + }
37.41 };
37.42 -
37.43 - public static SuggestionProperty PROP_DETAILS =
37.44 - new SuggestionProperty(PROPID_DETAILS, String.class) {
37.45 - public Object getValue(Object obj) {return ((UserTask) obj).getDetails(); }
37.46 +
37.47 + public static SuggestionProperty PROP_DETAILS =
37.48 + new SuggestionProperty(PROPID_DETAILS, String.class) {
37.49 + public Object getValue(Object obj) {return ((UserTask) obj).getDetails(); }
37.50 };
37.51 -
37.52 +
37.53 public static final SuggestionProperty PROP_CATEGORY =
37.54 - new SuggestionProperty(PROPID_CATEGORY, String.class) {
37.55 - public Object getValue(Object obj) {
37.56 - return ((UserTask) obj).getCategory();
37.57 - }
37.58 - };
37.59 -
37.60 + new SuggestionProperty(PROPID_CATEGORY, String.class) {
37.61 + public Object getValue(Object obj) {
37.62 + return ((UserTask) obj).getCategory();
37.63 + }
37.64 + };
37.65 +
37.66 public static final SuggestionProperty PROP_FILENAME =
37.67 - new SuggestionProperty(PROPID_FILENAME, String.class) {
37.68 - public Object getValue(Object obj) {
37.69 - URL url = ((UserTask) obj).getUrl();
37.70 - if (url == null)
37.71 - return ""; // NOI18N
37.72 - else
37.73 - return url.toExternalForm();
37.74 - }
37.75 - };
37.76 -
37.77 + new SuggestionProperty(PROPID_FILENAME, String.class) {
37.78 + public Object getValue(Object obj) {
37.79 + URL url = ((UserTask) obj).getUrl();
37.80 + if (url == null)
37.81 + return ""; // NOI18N
37.82 + else
37.83 + return url.toExternalForm();
37.84 + }
37.85 + };
37.86 +
37.87 public static final SuggestionProperty PROP_LINE_NUMBER =
37.88 - new SuggestionProperty(PROPID_LINE_NUMBER, Integer.class) {
37.89 - public Object getValue(Object obj) {
37.90 - return new Integer(((UserTask) obj).getLineNumber() + 1);
37.91 - }
37.92 - };
37.93 -
37.94 + new SuggestionProperty(PROPID_LINE_NUMBER, Integer.class) {
37.95 + public Object getValue(Object obj) {
37.96 + return new Integer(((UserTask) obj).getLineNumber() + 1);
37.97 + }
37.98 + };
37.99 +
37.100 public static final SuggestionProperty PROP_CREATED_DATE =
37.101 - new SuggestionProperty(PROPID_CREATED_DATE, Date.class) {
37.102 - public Object getValue(Object obj) {
37.103 - return new Date(((UserTask) obj).getCreatedDate());
37.104 - }
37.105 - };
37.106 -
37.107 + new SuggestionProperty(PROPID_CREATED_DATE, Date.class) {
37.108 + public Object getValue(Object obj) {
37.109 + return new Date(((UserTask) obj).getCreatedDate());
37.110 + }
37.111 + };
37.112 +
37.113 public static final SuggestionProperty PROP_LAST_EDITED_DATE =
37.114 - new SuggestionProperty(PROPID_LAST_EDITED_DATE, Date.class) {
37.115 - public Object getValue(Object obj) {
37.116 - return new Date(((UserTask) obj).getLastEditedDate());
37.117 - }
37.118 - };
37.119 -
37.120 + new SuggestionProperty(PROPID_LAST_EDITED_DATE, Date.class) {
37.121 + public Object getValue(Object obj) {
37.122 + return new Date(((UserTask) obj).getLastEditedDate());
37.123 + }
37.124 + };
37.125 +
37.126 public static final SuggestionProperty PROP_COMPLETED_DATE =
37.127 - new SuggestionProperty(PROPID_COMPLETED_DATE, Date.class) {
37.128 + new SuggestionProperty(PROPID_COMPLETED_DATE, Date.class) {
37.129 public Object getValue(Object obj) {
37.130 return new Date(((UserTask) obj).getCompletedDate());
37.131 }
37.132 };
37.133 -
37.134 +
37.135 public static final SuggestionProperty PROP_DUE_DATE =
37.136 - new SuggestionProperty(PROPID_DUE_DATE, Date.class) {
37.137 - public Object getValue(Object obj) {
37.138 - return ((UserTask) obj).getDueDate();
37.139 - }
37.140 - };
37.141 -
37.142 + new SuggestionProperty(PROPID_DUE_DATE, Date.class) {
37.143 + public Object getValue(Object obj) {
37.144 + return ((UserTask) obj).getDueDate();
37.145 + }
37.146 + };
37.147 +
37.148 public static final SuggestionProperty PROP_DONE =
37.149 - new SuggestionProperty(PROPID_DONE, Boolean.class) {
37.150 - public Object getValue(Object obj) {
37.151 - return Boolean.valueOf(((UserTask) obj).isDone());
37.152 - }
37.153 - };
37.154 -
37.155 + new SuggestionProperty(PROPID_DONE, Boolean.class) {
37.156 + public Object getValue(Object obj) {
37.157 + return Boolean.valueOf(((UserTask) obj).isDone());
37.158 + }
37.159 + };
37.160 +
37.161 public static final SuggestionProperty PROP_PERCENT_COMPLETE =
37.162 - new SuggestionProperty(PROPID_PERCENT_COMPLETE, Integer.class) {
37.163 - public Object getValue(Object obj) {
37.164 - return new Integer(((UserTask) obj).getPercentComplete());
37.165 - }
37.166 - };
37.167 -
37.168 + new SuggestionProperty(PROPID_PERCENT_COMPLETE, Integer.class) {
37.169 + public Object getValue(Object obj) {
37.170 + return new Integer(((UserTask) obj).getPercentComplete());
37.171 + }
37.172 + };
37.173 +
37.174 public static final SuggestionProperty PROP_EFFORT =
37.175 - new SuggestionProperty(PROPID_EFFORT, Integer.class) {
37.176 - public Object getValue(Object obj) {
37.177 - return new Integer(((UserTask) obj).getEffort());
37.178 - }
37.179 - };
37.180 -
37.181 + new SuggestionProperty(PROPID_EFFORT, Integer.class) {
37.182 + public Object getValue(Object obj) {
37.183 + return new Integer(((UserTask) obj).getEffort());
37.184 + }
37.185 + };
37.186 +
37.187 public static final SuggestionProperty PROP_REMAINING_EFFORT =
37.188 - new SuggestionProperty(PROPID_REMAINING_EFFORT, Integer.class) {
37.189 - public Object getValue(Object obj) {
37.190 - return new Integer(((UserTask) obj).getRemainingEffort());
37.191 - }
37.192 - };
37.193 -
37.194 + new SuggestionProperty(PROPID_REMAINING_EFFORT, Integer.class) {
37.195 + public Object getValue(Object obj) {
37.196 + return new Integer(((UserTask) obj).getRemainingEffort());
37.197 + }
37.198 + };
37.199 +
37.200 public static final SuggestionProperty PROP_SPENT_TIME =
37.201 - new SuggestionProperty(PROPID_SPENT_TIME, Integer.class) {
37.202 - public Object getValue(Object obj) {
37.203 - return new Integer(((UserTask) obj).getSpentTime());
37.204 - }
37.205 - };
37.206 -
37.207 + new SuggestionProperty(PROPID_SPENT_TIME, Integer.class) {
37.208 + public Object getValue(Object obj) {
37.209 + return new Integer(((UserTask) obj).getSpentTime());
37.210 + }
37.211 + };
37.212 +
37.213 public static final SuggestionProperty PROP_SPENT_TIME_TODAY =
37.214 - new SuggestionProperty(PROPID_SPENT_TIME_TODAY, Integer.class) {
37.215 - public Object getValue(Object obj) {
37.216 - return new Integer(((UserTask) obj).getSpentTimeToday());
37.217 - }
37.218 - };
37.219 -
37.220 + new SuggestionProperty(PROPID_SPENT_TIME_TODAY, Integer.class) {
37.221 + public Object getValue(Object obj) {
37.222 + return new Integer(((UserTask) obj).getSpentTimeToday());
37.223 + }
37.224 + };
37.225 +
37.226 public static final SuggestionProperty PROP_OWNER =
37.227 - new SuggestionProperty(PROPID_OWNER, String.class) {
37.228 - public Object getValue(Object obj) {
37.229 - return ((UserTask) obj).getOwner();
37.230 - }
37.231 - };
37.232 -
37.233 + new SuggestionProperty(PROPID_OWNER, String.class) {
37.234 + public Object getValue(Object obj) {
37.235 + return ((UserTask) obj).getOwner();
37.236 + }
37.237 + };
37.238 +
37.239 public static final SuggestionProperty PROP_START =
37.240 - new SuggestionProperty(PROPID_START, Date.class) {
37.241 - public Object getValue(Object obj) {
37.242 - long start = ((UserTask) obj).getStart();
37.243 - if (start == -1)
37.244 - return null;
37.245 - else
37.246 - return new Date(start);
37.247 - }
37.248 - };
37.249 -
37.250 + new SuggestionProperty(PROPID_START, Date.class) {
37.251 + public Object getValue(Object obj) {
37.252 + long start = ((UserTask) obj).getStart();
37.253 + if (start == -1)
37.254 + return null;
37.255 + else
37.256 + return new Date(start);
37.257 + }
37.258 + };
37.259 +
37.260 public static SuggestionProperty getProperty(String propID) {
37.261 if (propID.equals(PROPID_CATEGORY)) {
37.262 return PROP_CATEGORY;
37.263 @@ -205,13 +210,13 @@
37.264 return PROP_DETAILS;
37.265 } else if (propID.equals(PROPID_OWNER)) {
37.266 return PROP_OWNER;
37.267 - } else if (propID.equals(PROPID_PRIORITY)) {
37.268 + } else if (propID.equals(PROPID_PRIORITY)) {
37.269 return PROP_PRIORITY;
37.270 - } else if (propID.equals(PROPID_SUMMARY)) {
37.271 + } else if (propID.equals(PROPID_SUMMARY)) {
37.272 return PROP_SUMMARY;
37.273 - } else if (propID.equals(PROPID_DETAILS)) {
37.274 + } else if (propID.equals(PROPID_DETAILS)) {
37.275 return PROP_DETAILS;
37.276 - } else if (propID.equals(PROPID_START)) {
37.277 + } else if (propID.equals(PROPID_START)) {
37.278 return PROP_START;
37.279 } else if (propID.equals(PROPID_SPENT_TIME_TODAY)) {
37.280 return PROP_SPENT_TIME_TODAY;
38.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
38.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/filter/conditions-1_0.dtd Mon Dec 04 21:59:57 2006 +0000
38.3 @@ -0,0 +1,39 @@
38.4 +<?xml version="1.0" encoding="UTF-8"?>
38.5 +
38.6 +<!--
38.7 + Document : filters-1_0.dtd
38.8 + Created on : April 20, 2004, 12:14 PM
38.9 + Author : or141057
38.10 + Description:
38.11 + DTD schema for saved filter conditions
38.12 +-->
38.13 +
38.14 +<!-- BEWARE: The actual contents of settings is not checked against -->
38.15 +<!-- this DTD so it is possible that this file and the reality go -->
38.16 +<!-- out of. Check the code when in doubt. -->
38.17 +
38.18 +
38.19 +<!ELEMENT BooleanCondition EMPTY >
38.20 +<!ATTLIST BooleanCondition
38.21 + id CDATA #REQUIRED>
38.22 +
38.23 +<!ELEMENT StringCondition EMPTY >
38.24 +<!ATTLIST StringCondition
38.25 + id CDATA #REQUIRED
38.26 + constant CDATA #REQUIRED>
38.27 +
38.28 +<!ELEMENT IntegerCondition EMPTY >
38.29 +<!ATTLIST IntegerCondition
38.30 + id CDATA #REQUIRED
38.31 + constant CDATA #REQUIRED>
38.32 +
38.33 +<!ELEMENT PriorityCondition EMPTY >
38.34 +<!ATTLIST PriorityCondition
38.35 + priorities CDATA #REQUIRED>
38.36 +
38.37 +<!ELEMENT DateCondition EMPTY >
38.38 +<!ATTLIST DateCondition
38.39 + id CDATA #REQUIRED
38.40 + date CDATA #REQUIRED>
38.41 +
38.42 +
39.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/mf-layer.xml Mon Dec 04 21:57:00 2006 +0000
39.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/mf-layer.xml Mon Dec 04 21:59:57 2006 +0000
39.3 @@ -19,21 +19,21 @@
39.4 -->
39.5 <!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.1//EN" "http://www.netbeans.org/dtds/filesystem-1_1.dtd">
39.6 <filesystem>
39.7 - <folder name="Actions">
39.8 +<!-- <folder name="Actions">
39.9 <folder name="View">
39.10 <file name="org-netbeans-modules-tasklist-usertasks-actions-ViewTasksAction.instance" />
39.11 - <!--<file name="org-netbeans-modules-tasklist-usertasks-actions-ShowScheduleViewAction.instance" />-->
39.12 + <file name="org-netbeans-modules-tasklist-usertasks-actions-ShowScheduleViewAction.instance" />
39.13 </folder>
39.14 <folder name="Edit">
39.15 <file name="org-netbeans-modules-tasklist-usertasks-actions-NewTaskAction.instance" />
39.16 </folder>
39.17 - </folder>
39.18 + </folder> -->
39.19
39.20 - <folder name="Shortcuts">
39.21 +<!-- <folder name="Shortcuts">
39.22 <file name="INSERT.shadow">
39.23 <attr name="originalFile" stringvalue="Actions/Edit/org-netbeans-modules-tasklist-usertasks-actions-NewTaskAction.instance"/>
39.24 </file>
39.25 - </folder>
39.26 + </folder>-->
39.27
39.28 <folder name="Menu">
39.29 <folder name="Window">
39.30 @@ -98,11 +98,15 @@
39.31 <attr name="hint.originalPublicID"
39.32 stringvalue="-//NetBeans org.netbeans.modules.tasklist//DTD UserTaskFilter 1.0//EN"/>
39.33 </file>
39.34 -
39.35 + <file name="DTD_UTPriorityCondition_1_0" url="filter/conditions-1_0.dtd">
39.36 + <attr name="hint.originalPublicID"
39.37 + stringvalue="-//NetBeans org.netbeans.modules.tasklist//DTD UTPriorityCondition 1.0//EN"/>
39.38 + </file>
39.39 </folder>
39.40 </folder>
39.41
39.42 <folder name="lookups">
39.43 +
39.44 <folder name="NetBeans_org_netbeans_modules_tasklist">
39.45 <file name="DTD_UserTaskFilter_1_0.instance">
39.46 <attr name="instanceCreate" methodvalue="org.netbeans.api.settings.Factory.create"/>
39.47 @@ -110,6 +114,12 @@
39.48 <attr name="settings.instanceClass" stringvalue="org.netbeans.modules.tasklist.usertasks.filter.UserTaskFilter"/>
39.49 <attr name="settings.instanceOf" stringvalue="org.netbeans.modules.tasklist.usertasks.filter.UserTaskFilter"/>
39.50 </file>
39.51 + <file name="DTD_UTPriorityCondition_1_0.instance">
39.52 + <attr name="instanceCreate" methodvalue="org.netbeans.api.settings.Factory.create"/>
39.53 + <attr name="settings.convertor" methodvalue="org.netbeans.modules.tasklist.usertasks.filter.UTPriorityCondition$Convertor.create"/>
39.54 + <attr name="settings.instanceClass" stringvalue="org.netbeans.modules.tasklist.usertasks.filter.UTPriorityCondition"/>
39.55 + <attr name="settings.instanceOf" stringvalue="org.netbeans.modules.tasklist.usertasks.filter.UTPriorityCondition"/>
39.56 + </file>
39.57 </folder>
39.58 </folder>
39.59
39.60 @@ -124,6 +134,10 @@
39.61 <attr name="settings.providerPath"
39.62 stringvalue="xml/lookups/NetBeans_org_netbeans_modules_tasklist/DTD_UserTaskFilter_1_0.instance"/>
39.63 </file>
39.64 + <file name="UTPriorityCondition">
39.65 + <attr name="settings.providerPath"
39.66 + stringvalue="xml/lookups/NetBeans_org_netbeans_modules_tasklist/DTD_UTPriorityCondition_1_0.instance"/>
39.67 + </file>
39.68 </folder>
39.69 </folder>
39.70 </folder>
40.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/Bundle.properties Mon Dec 04 21:57:00 2006 +0000
40.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/Bundle.properties Mon Dec 04 21:59:57 2006 +0000
40.3 @@ -27,5 +27,7 @@
40.4 CannotCreateDir=Cannot create directory {0}.
40.5 FileNotValid=File {0} is not valid.
40.6
40.7 +## StartedUserTask
40.8 +InactivityDetected=User inactivity detected.
40.9 +ActivityDetected=User activity detected.
40.10
40.11 -
41.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/Dependency.java Mon Dec 04 21:57:00 2006 +0000
41.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/Dependency.java Mon Dec 04 21:59:57 2006 +0000
41.3 @@ -19,9 +19,6 @@
41.4
41.5 package org.netbeans.modules.tasklist.usertasks.model;
41.6
41.7 -import org.netbeans.modules.tasklist.usertasks.*;
41.8 -
41.9 -
41.10 /**
41.11 * Dependency for a task
41.12 *
42.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/Duration.java Mon Dec 04 21:57:00 2006 +0000
42.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/Duration.java Mon Dec 04 21:59:57 2006 +0000
42.3 @@ -1,8 +1,5 @@
42.4 package org.netbeans.modules.tasklist.usertasks.model;
42.5
42.6 -import java.text.MessageFormat;
42.7 -import org.openide.util.NbBundle;
42.8 -
42.9 /**
42.10 * A duration class.
42.11 */
42.12 @@ -55,7 +52,7 @@
42.13 this.minutes = this.minutes % 60;
42.14
42.15 this.days = minutes / minutesPerDay;
42.16 - this.weeks = minutes / daysPerWeek;
42.17 + this.weeks = this.days / daysPerWeek;
42.18 this.days = this.days % daysPerWeek;
42.19 }
42.20
42.21 @@ -81,4 +78,12 @@
42.22 return (weeks * daysPerWeek + days) * minutesPerDay + hours * 60 +
42.23 minutes;
42.24 }
42.25 +
42.26 + public boolean equals(Object obj) {
42.27 + if (!(obj instanceof Duration))
42.28 + return false;
42.29 + Duration d = (Duration) obj;
42.30 + return d.weeks == weeks && d.days == days && d.hours == hours &&
42.31 + d.minutes == minutes;
42.32 + }
42.33 }
43.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/StartedUserTask.java Mon Dec 04 21:57:00 2006 +0000
43.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/StartedUserTask.java Mon Dec 04 21:59:57 2006 +0000
43.3 @@ -7,6 +7,8 @@
43.4 import javax.swing.event.EventListenerList;
43.5 import org.netbeans.modules.tasklist.core.util.ActivityListener;
43.6 import org.netbeans.modules.tasklist.usertasks.options.Settings;
43.7 +import org.openide.awt.StatusDisplayer;
43.8 +import org.openide.util.NbBundle;
43.9
43.10 /**
43.11 * Started user task.
43.12 @@ -115,6 +117,9 @@
43.13 long lastActivity = ActivityListener.getLastActivityMillis();
43.14 long cur = System.currentTimeMillis();
43.15 if ((cur - lastActivity) < INACTIVITY_DURATION) {
43.16 + StatusDisplayer.getDefault().setStatusText(
43.17 + NbBundle.getMessage(StartedUserTask.class,
43.18 + "ActivityDetected"));
43.19 state = STATE_WORKING;
43.20
43.21 startedAt = lastActivity;
43.22 @@ -137,7 +142,9 @@
43.23 ActivityListener.getLastActivityMillis()) > INACTIVITY_DURATION &&
43.24 Settings.getDefault().getDetectInactivity()) { // NOI18N
43.25 state = STATE_SUSPENDED;
43.26 -
43.27 + StatusDisplayer.getDefault().setStatusText(
43.28 + NbBundle.getMessage(StartedUserTask.class,
43.29 + "InactivityDetected"));
43.30 }
43.31
43.32 started.setSpentTime(initialSpentTime + diff);
43.33 @@ -210,7 +217,7 @@
43.34 if (task == null) {
43.35 throw new InternalError("no task is running"); // NOI18N
43.36 } else {
43.37 - task.setSpentTimeComputed(false);
43.38 + task.setValuesComputed(false);
43.39 started = task;
43.40 startedAt = System.currentTimeMillis();
43.41 initialSpentTime = task.getSpentTime();
44.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/Timeout.java Mon Dec 04 21:57:00 2006 +0000
44.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/Timeout.java Mon Dec 04 21:59:57 2006 +0000
44.3 @@ -19,13 +19,11 @@
44.4
44.5 package org.netbeans.modules.tasklist.usertasks.model;
44.6
44.7 -import org.netbeans.modules.tasklist.usertasks.*;
44.8 -
44.9 /**
44.10 * This is the "callback" interface from the TimeoutProvider class...
44.11 * @author Trond Norbye
44.12 */
44.13 -interface Timeout {
44.14 +public interface Timeout {
44.15 /**
44.16 * Callback function for the TimeoutProvider to call when the timeout
44.17 * expired. This function will block the TimeoutProviders thread, so
45.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/TimeoutProvider.java Mon Dec 04 21:57:00 2006 +0000
45.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/TimeoutProvider.java Mon Dec 04 21:59:57 2006 +0000
45.3 @@ -22,7 +22,6 @@
45.4 import java.util.LinkedList;
45.5 import java.util.ListIterator;
45.6 import java.util.Vector;
45.7 -import org.netbeans.modules.tasklist.usertasks.*;
45.8
45.9 /**
45.10 * The TimeoutProvider class implements a way to let object that implements
45.11 @@ -30,7 +29,7 @@
45.12 *
45.13 * @author Trond Norbye
45.14 */
45.15 -class TimeoutProvider implements Runnable {
45.16 +public class TimeoutProvider implements Runnable {
45.17 /** An inner class used to stash away all of the data */
45.18 private class Entry {
45.19 /** Create a new Entry instance
45.20 @@ -67,7 +66,7 @@
45.21 * Get the one and only instance of the TimeoutProvider
45.22 * @return the handle to the TimeoutProvider
45.23 */
45.24 - static TimeoutProvider getInstance() {
45.25 + public static TimeoutProvider getInstance() {
45.26 if (instance == null) {
45.27 instance = new TimeoutProvider();
45.28 }
45.29 @@ -80,7 +79,7 @@
45.30 * @param userRef the owners reference (null == all timeouts belonging to
45.31 * to this object)
45.32 */
45.33 - void cancel(Timeout owner, Object userRef) {
45.34 + public void cancel(Timeout owner, Object userRef) {
45.35 synchronized (alarms) {
45.36 ListIterator i = alarms.listIterator(0);
45.37
45.38 @@ -104,7 +103,7 @@
45.39 * @param userRef an object the user would like to get back with the timeout
45.40 * @param timeout the time this object should time out
45.41 */
45.42 - void add(Timeout owner, Object userRef, long timeout) {
45.43 + public void add(Timeout owner, Object userRef, long timeout) {
45.44 synchronized (alarms) {
45.45 ListIterator i = alarms.listIterator(0);
45.46 boolean done = false;
46.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/UserTask.java Mon Dec 04 21:57:00 2006 +0000
46.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/UserTask.java Mon Dec 04 21:59:57 2006 +0000
46.3 @@ -35,7 +35,6 @@
46.4 import java.util.Iterator;
46.5 import java.util.List;
46.6 import java.util.ResourceBundle;
46.7 -import java.util.logging.Level;
46.8
46.9 import javax.swing.event.EventListenerList;
46.10 import javax.swing.tree.TreePath;
46.11 @@ -49,7 +48,6 @@
46.12 import org.openide.text.Line;
46.13 import org.openide.util.NbBundle;
46.14 import org.netbeans.modules.tasklist.core.util.ObjectList;
46.15 -import org.netbeans.modules.tasklist.usertasks.*;
46.16 import org.netbeans.modules.tasklist.usertasks.annotations.UTAnnotation;
46.17 import org.netbeans.modules.tasklist.usertasks.util.UnaryFunction;
46.18
46.19 @@ -271,15 +269,16 @@
46.20 public static final String PROP_START = "start"; // NOI18N
46.21 public static final String PROP_SPENT_TIME_TODAY = "spentTimeToday"; // NOI18N
46.22
46.23 - /** last modified. long as returned by System.currentTimeMillise() */
46.24 + /** last modified. long as returned by System.currentTimeMillis() */
46.25 public static final String PROP_LAST_EDITED_DATE =
46.26 "lastEditedDate"; // NOI18N
46.27 -
46.28 +
46.29 + /** see setValuesComputed */
46.30 + public static final String PROP_VALUES_COMPUTED =
46.31 + "valuesComputed"; // NOI18N
46.32 +
46.33 // ATTENTION: if you add new fields here do not forget to update copyFrom
46.34
46.35 - /** <UserTaskListener> */
46.36 - protected EventListenerList listeners = new EventListenerList();
46.37 -
46.38 /**
46.39 * When false, don't update the "last modified" date.
46.40 * Used by the restore code.
46.41 @@ -328,8 +327,10 @@
46.42 /**
46.43 * true means progress will be computed automatically as a weighted average
46.44 * of the subtasks. If a task has no children it means 0%
46.45 + * true means that the effort will be computed automatically as them sum of the
46.46 + * subtask efforts. If a task has no children it means 0
46.47 */
46.48 - private boolean percentComputed = false;
46.49 + private boolean valuesComputed = false;
46.50
46.51 private Date dueDate;
46.52 private boolean dueAlarmSent;
46.53 @@ -338,18 +339,11 @@
46.54 private long created;
46.55 private long lastEditedDate;
46.56
46.57 - /**
46.58 - * true means that the effort will be computed automatically as them sum of the
46.59 - * subtask efforts. If a task has no children it means 0
46.60 - */
46.61 - private boolean effortComputed = false;
46.62 -
46.63 /** in minutes */
46.64 private int effort = 60;
46.65
46.66 /** Time spent on this task */
46.67 private int spentTime = 0;
46.68 - private boolean spentTimeComputed;
46.69
46.70 private PropertyChangeListener lineListener;
46.71
46.72 @@ -437,9 +431,7 @@
46.73 switch (ev.getType()) {
46.74 case ObjectList.Event.EVENT_ADDED:
46.75 if (Settings.getDefault().getAutoSwitchToComputed()) {
46.76 - setProgressComputed(true);
46.77 - setEffortComputed(true);
46.78 - setSpentTimeComputed(true);
46.79 + setValuesComputed(true);
46.80 }
46.81 structureChanged();
46.82 break;
46.83 @@ -448,8 +440,7 @@
46.84 break;
46.85 }
46.86 case ObjectList.Event.EVENT_REORDERED:
46.87 - if (UserTask.this.list != null)
46.88 - UserTask.this.list.markChanged();
46.89 + structureChanged();
46.90 break;
46.91 case ObjectList.Event.EVENT_STRUCTURE_CHANGED:
46.92 structureChanged();
46.93 @@ -459,17 +450,13 @@
46.94 }
46.95 }
46.96 public void structureChanged() {
46.97 - if (isProgressComputed()) {
46.98 + if (isValuesComputed()) {
46.99 setProgress_(computeProgress());
46.100 - }
46.101 - if (isEffortComputed()) {
46.102 setEffort_(computeEffort());
46.103 - }
46.104 - if (isSpentTimeComputed()) {
46.105 setSpentTime_(computeSpentTime());
46.106 }
46.107 if (UserTask.this.list != null) {
46.108 - UserTask.this.list.markChanged();
46.109 + UserTask.this.list.fireChange();
46.110 }
46.111 }
46.112 });
46.113 @@ -632,12 +619,12 @@
46.114 */
46.115 public void setSpentTime(int spentTime) {
46.116 assert spentTime >= 0;
46.117 - if (spentTimeComputed)
46.118 - setSpentTimeComputed(false);
46.119 + if (valuesComputed)
46.120 + setValuesComputed(false);
46.121
46.122 setSpentTime_(spentTime);
46.123
46.124 - if (isProgressComputed() && getSubtasks().size() == 0)
46.125 + if (isValuesComputed() && getSubtasks().size() == 0)
46.126 setProgress_(computeProgress());
46.127 }
46.128
46.129 @@ -656,40 +643,41 @@
46.130 new Integer(old), new Integer(spentTime));
46.131 if (getParent() != null) {
46.132 UserTask p = (UserTask) getParent();
46.133 - if (p.isSpentTimeComputed())
46.134 - p.setSpentTime_(p.computeSpentTime());
46.135 - if (p.isSpentTimeComputed())
46.136 + if (p.isValuesComputed())
46.137 p.setSpentTime_(p.computeSpentTime());
46.138 }
46.139 }
46.140 }
46.141
46.142 /**
46.143 - * Sets whether the spent time of this task should be computed
46.144 + * Sets whether the spent time, progress and effort of this task
46.145 + * should be computed
46.146 *
46.147 - * @param v true = the spent time will be computed
46.148 + * @param v true = the spent time, progress and effort will be computed
46.149 */
46.150 - public void setSpentTimeComputed(boolean v) {
46.151 - if (this.spentTimeComputed != v) {
46.152 + public void setValuesComputed(boolean v) {
46.153 + if (this.valuesComputed != v) {
46.154 if (isStarted())
46.155 stop();
46.156 - this.spentTimeComputed = v;
46.157 - firePropertyChange("spentTimeComputed", Boolean.valueOf(!v), // NOI18N
46.158 - Boolean.valueOf(v));
46.159 + this.valuesComputed = v;
46.160 + firePropertyChange(PROP_VALUES_COMPUTED,
46.161 + Boolean.valueOf(!v), Boolean.valueOf(v));
46.162 if (v) {
46.163 setSpentTime_(computeSpentTime());
46.164 + setProgress_(computeProgress());
46.165 + setProgress_(computeProgress());
46.166 }
46.167 }
46.168 }
46.169
46.170 /**
46.171 - * Getter for property spentTimeComputed.
46.172 + * Getter for property valuesComputed.
46.173 *
46.174 - * @return true = the spent time will be computed as the sum of the
46.175 - * subtask values
46.176 + * @return true = the spent time, effort and progress
46.177 + * will be computed as the sum of the subtask values
46.178 */
46.179 - public boolean isSpentTimeComputed() {
46.180 - return spentTimeComputed;
46.181 + public boolean isValuesComputed() {
46.182 + return valuesComputed;
46.183 }
46.184
46.185 /**
46.186 @@ -701,7 +689,7 @@
46.187 * @return spent time in minutes
46.188 */
46.189 int computeSpentTime() {
46.190 - assert spentTimeComputed;
46.191 + assert valuesComputed;
46.192
46.193 int sum = 0;
46.194 Iterator it = getSubtasks().iterator();
46.195 @@ -760,7 +748,7 @@
46.196 * @return true = this task could be started
46.197 */
46.198 public boolean isStartable() {
46.199 - return !isSpentTimeComputed() && !isDone() && areDependenciesDone();
46.200 + return !isValuesComputed() && !isDone() && areDependenciesDone();
46.201 }
46.202
46.203 /**
46.204 @@ -918,10 +906,10 @@
46.205 * @return computed percentage
46.206 */
46.207 private float computeProgress() {
46.208 - assert percentComputed;
46.209 + assert valuesComputed;
46.210
46.211 if (getSubtasks().size() == 0) {
46.212 - if (isSpentTimeComputed() || isEffortComputed())
46.213 + if (isValuesComputed())
46.214 return 100.0f;
46.215
46.216 float p = (((float) getSpentTime()) / getEffort()) * 100.0f;
46.217 @@ -946,32 +934,6 @@
46.218 return p;
46.219 }
46.220
46.221 - /**
46.222 - * Returns true if progress of this task will be computed automatically
46.223 - * from the progress of subtasks
46.224 - *
46.225 - * @return true = automatically computed
46.226 - */
46.227 - public boolean isProgressComputed() {
46.228 - return percentComputed;
46.229 - }
46.230 -
46.231 - /**
46.232 - * Sets whether the progress of this task should be computed
46.233 - *
46.234 - * @param v true = the progress will be computed
46.235 - */
46.236 - public void setProgressComputed(boolean v) {
46.237 - if (this.percentComputed != v) {
46.238 - this.percentComputed = v;
46.239 - firePropertyChange("progressComputed", Boolean.valueOf(!v), // NOI18N
46.240 - Boolean.valueOf(v));
46.241 - if (v) {
46.242 - setProgress_(computeProgress());
46.243 - }
46.244 - }
46.245 - }
46.246 -
46.247 /**
46.248 * Sets the percentage complete for this task. Will also
46.249 * update the done flag for this task.
46.250 @@ -990,8 +952,8 @@
46.251 */
46.252 public void setProgress(float progress) {
46.253 assert progress >= 0 && progress <= 100;
46.254 - if (percentComputed)
46.255 - setProgressComputed(false);
46.256 + if (valuesComputed)
46.257 + setValuesComputed(false);
46.258
46.259 setProgress_(progress);
46.260
46.261 @@ -1036,7 +998,7 @@
46.262 new Float(old), new Float(progress));
46.263 if (getParent() != null) {
46.264 UserTask p = (UserTask) getParent();
46.265 - if (p.isProgressComputed())
46.266 + if (p.isValuesComputed())
46.267 p.setProgress_(p.computeProgress());
46.268 }
46.269 }
46.270 @@ -1382,13 +1344,11 @@
46.271 }
46.272
46.273 progress = from.progress;
46.274 - percentComputed = from.percentComputed;
46.275 + valuesComputed = from.valuesComputed;
46.276 category = from.category;
46.277 created = from.created;
46.278 effort = from.effort;
46.279 - effortComputed = from.effortComputed;
46.280 spentTime = from.spentTime;
46.281 - spentTimeComputed = from.spentTimeComputed;
46.282 dependencies.clear();
46.283 dependencies.addAll(from.dependencies);
46.284 owner = from.owner;
46.285 @@ -1426,31 +1386,6 @@
46.286 }
46.287
46.288 /**
46.289 - * Getter for property effortComputed.
46.290 - *
46.291 - * @return true = effort will be computed as the sum of the subtask efforts
46.292 - */
46.293 - public boolean isEffortComputed() {
46.294 - return effortComputed;
46.295 - }
46.296 -
46.297 - /**
46.298 - * Setter for property effortComputed.
46.299 - *
46.300 - * @param effortComputed New value of property effortComputed.
46.301 - */
46.302 - public void setEffortComputed(boolean effortComputed) {
46.303 - if (this.effortComputed != effortComputed) {
46.304 - this.effortComputed = effortComputed;
46.305 - firePropertyChange("effortComputed", Boolean.valueOf(!effortComputed), // NOI18N
46.306 - Boolean.valueOf(effortComputed));
46.307 - if (effortComputed) {
46.308 - setEffort_(computeEffort());
46.309 - }
46.310 - }
46.311 - }
46.312 -
46.313 - /**
46.314 * Computes "effort" property as the sum of the subtask efforts.
46.315 * This method should only be called if effortComputed == true
46.316 *
46.317 @@ -1459,7 +1394,7 @@
46.318 * @return effort in minutes
46.319 */
46.320 int computeEffort() {
46.321 - assert effortComputed;
46.322 + assert valuesComputed;
46.323
46.324 Iterator it = getSubtasks().iterator();
46.325 int sum = 0;
46.326 @@ -1477,12 +1412,12 @@
46.327 */
46.328 public void setEffort(int effort) {
46.329 assert effort >= 0;
46.330 - if (effortComputed)
46.331 - setEffortComputed(false);
46.332 + if (valuesComputed)
46.333 + setValuesComputed(false);
46.334
46.335 setEffort_(effort);
46.336
46.337 - if (isProgressComputed() && getSubtasks().size() == 0)
46.338 + if (isValuesComputed() && getSubtasks().size() == 0)
46.339 setProgress_(computeProgress());
46.340 }
46.341
46.342 @@ -1496,14 +1431,17 @@
46.343 int old = this.effort;
46.344
46.345 if (this.effort != effort) {
46.346 + int oldre = getRemainingEffort();
46.347 this.effort = effort;
46.348 firePropertyChange("effort", // NOI18N
46.349 new Integer(old), new Integer(effort));
46.350 + firePropertyChange("remainingEffort",
46.351 + oldre, getRemainingEffort());
46.352 if (getParent() != null) {
46.353 UserTask p = (UserTask) getParent();
46.354 - if (p.isEffortComputed())
46.355 + if (p.isValuesComputed())
46.356 p.setEffort_(p.computeEffort());
46.357 - if (p.isProgressComputed())
46.358 + if (p.isValuesComputed())
46.359 p.setProgress_(p.computeProgress());
46.360 }
46.361 }
46.362 @@ -1534,7 +1472,7 @@
46.363 }
46.364
46.365 /**
46.366 - * Fires a PropertyChangeEvent
46.367 + * Fires a PropertyChangeEvent. Also fires an event for PROP_DEEP_CHANGE
46.368 *
46.369 * @param propertyName changed property
46.370 * @param oldValue old value (may be null)
46.371 @@ -1543,7 +1481,7 @@
46.372 protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
46.373 supp.firePropertyChange(propertyName, oldValue, newValue);
46.374 if (list != null)
46.375 - list.markChanged();
46.376 + list.fireChange();
46.377 }
46.378
46.379 /**
46.380 @@ -1831,7 +1769,7 @@
46.381 */
46.382 public int getSpentTimeToday() {
46.383 int sum = 0;
46.384 - if (isSpentTimeComputed()) {
46.385 + if (isValuesComputed()) {
46.386 for (int i = 0; i < getSubtasks().size(); i++) {
46.387 UserTask ut = (UserTask) getSubtasks().get(i);
46.388 sum += ut.getSpentTimeToday();
47.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/UserTaskList.java Mon Dec 04 21:57:00 2006 +0000
47.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/UserTaskList.java Mon Dec 04 21:59:57 2006 +0000
47.3 @@ -19,44 +19,16 @@
47.4
47.5 package org.netbeans.modules.tasklist.usertasks.model;
47.6
47.7 -import java.awt.event.ActionEvent;
47.8 -import java.awt.event.ActionListener;
47.9 -import java.io.BufferedOutputStream;
47.10 -import java.io.File;
47.11 -import java.io.FileOutputStream;
47.12 -import java.io.IOException;
47.13 -import java.io.InputStream;
47.14 -import java.io.OutputStream;
47.15 -import java.io.OutputStreamWriter;
47.16 -import java.io.Writer;
47.17 -import java.net.URISyntaxException;
47.18 -import java.text.ParseException;
47.19 import java.util.ArrayList;
47.20 import java.util.Iterator;
47.21 import java.util.List;
47.22 import java.util.Set;
47.23 -import java.util.logging.Level;
47.24 +import javax.swing.event.ChangeEvent;
47.25 +import javax.swing.event.ChangeListener;
47.26 +import javax.swing.event.EventListenerList;
47.27
47.28 -import javax.swing.SwingUtilities;
47.29 -import javax.swing.Timer;
47.30 -import net.fortuna.ical4j.data.ParserException;
47.31 -import net.fortuna.ical4j.model.ValidationException;
47.32 -import org.netbeans.modules.tasklist.usertasks.options.Settings;
47.33 -import org.netbeans.modules.tasklist.usertasks.translators.ICalExportFormat;
47.34 -import org.netbeans.modules.tasklist.usertasks.translators.ICalImportFormat;
47.35 -import org.netbeans.modules.tasklist.usertasks.util.UTUtils;
47.36 -import org.openide.DialogDescriptor;
47.37 -import org.openide.DialogDisplayer;
47.38 -import org.openide.NotifyDescriptor;
47.39 -import org.openide.NotifyDescriptor.Message;
47.40 -import org.openide.filesystems.FileLock;
47.41 -import org.openide.filesystems.FileObject;
47.42 -import org.openide.filesystems.FileUtil;
47.43 -import org.openide.util.NbBundle;
47.44 import org.netbeans.modules.tasklist.core.util.ObjectList;
47.45 -
47.46 -import org.netbeans.modules.tasklist.usertasks.*;
47.47 -
47.48 +import org.netbeans.modules.tasklist.usertasks.DueTasksNotifier;
47.49
47.50 /**
47.51 * This class represents the tasklist itself
47.52 @@ -65,7 +37,7 @@
47.53 * @author Trond Norbye
47.54 * @author tl
47.55 */
47.56 -public class UserTaskList implements Timeout, ObjectList.Owner {
47.57 +public class UserTaskList implements ObjectList.Owner {
47.58 /**
47.59 * Callback for the UserTaskList.process method
47.60 */
47.61 @@ -77,172 +49,25 @@
47.62 */
47.63 public void process(UserTask ut);
47.64 }
47.65 -
47.66 - /**
47.67 - * Callback for finding the next timeout
47.68 - */
47.69 - private static class FindNextTimeoutUserTaskProcessor implements
47.70 - UserTaskProcessor {
47.71 - private long nextTimeout = Long.MAX_VALUE;
47.72 -
47.73 - /** Task for the next timeout */
47.74 - public UserTask ref = null;
47.75 -
47.76 - public void process(UserTask t) {
47.77 - long n = t.getDueTime();
47.78 - if (n != Long.MAX_VALUE && !t.isDueAlarmSent() && !t.isDone() &&
47.79 - n > System.currentTimeMillis() && n < nextTimeout) {
47.80 - nextTimeout = n;
47.81 - ref = t;
47.82 - }
47.83 - }
47.84 - }
47.85 -
47.86 - private static class ShowExpiredUserTaskProcessor implements
47.87 - UserTaskProcessor {
47.88 - public void process(UserTask t) {
47.89 - long n = t.getDueTime();
47.90 - if (n != Long.MAX_VALUE && !t.isDueAlarmSent() &&
47.91 - !t.isDone() &&
47.92 - n <= System.currentTimeMillis()) {
47.93 - showExpiredTask(t);
47.94 - }
47.95 - }
47.96 -
47.97 - /**
47.98 - * Present the user with a dialog that shows information of the task that
47.99 - * expired...
47.100 - *
47.101 - * @param task the task to show
47.102 - */
47.103 - private void showExpiredTask(UserTask task) {
47.104 - task.setDueAlarmSent(true);
47.105 -
47.106 - final UserTask t = task;
47.107 - SwingUtilities.invokeLater(new Runnable() {
47.108 - public void run() {
47.109 - UserTaskDuePanel panel = new UserTaskDuePanel(t);
47.110 -
47.111 - String title = NbBundle.getMessage(UserTaskList.class, "TaskDueLabel"); // NOI18N
47.112 - DialogDescriptor d = new DialogDescriptor(panel, title);
47.113 - d.setModal(true);
47.114 - d.setMessageType(NotifyDescriptor.PLAIN_MESSAGE);
47.115 - d.setOptions(new Object[] {DialogDescriptor.OK_OPTION});
47.116 - java.awt.Dialog dlg = DialogDisplayer.getDefault().createDialog(d);
47.117 - dlg.pack();
47.118 - dlg.setVisible(true);
47.119 - }
47.120 - });
47.121 - }
47.122 - }
47.123 -
47.124 - private static UserTaskList tasklist = null;
47.125 -
47.126 - /**
47.127 - * Copies the content of one stream to another.
47.128 - *
47.129 - * @param is input stream
47.130 - * @param os output stream
47.131 - */
47.132 - private static void copyStream(InputStream is, OutputStream os)
47.133 - throws IOException {
47.134 - byte[] buffer = new byte[1024];
47.135 - int read;
47.136 - while ((read = is.read(buffer)) != -1) {
47.137 - os.write(buffer, 0, read);
47.138 - }
47.139 - }
47.140 -
47.141 - /**
47.142 - * Returns the default task list
47.143 - *
47.144 - * @return default task list
47.145 - */
47.146 - public static UserTaskList getDefault() throws IOException {
47.147 - if (tasklist != null)
47.148 - return tasklist;
47.149 -
47.150 - File f = getDefaultFile();
47.151 - FileObject fo = FileUtil.toFileObject(f);
47.152 - if (fo != null)
47.153 - return readDocument(fo);
47.154 -
47.155 - File dir = f.getParentFile();
47.156 - if (!dir.exists() && !dir.mkdirs()) {
47.157 - throw new IOException(
47.158 - NbBundle.getMessage(UserTaskList.class,
47.159 - "CannotCreateDir", dir.getAbsolutePath())); // NOI18N
47.160 - }
47.161 - OutputStream os = new FileOutputStream(f);
47.162 - try {
47.163 - InputStream is = UserTaskList.class.getResourceAsStream(
47.164 - "/org/netbeans/modules/tasklist/usertasks/tasklist.ics"); // NOI18N
47.165 - try {
47.166 - copyStream(is, os);
47.167 - } finally {
47.168 - is.close();
47.169 - }
47.170 - } finally {
47.171 - os.close();
47.172 - }
47.173 -
47.174 - tasklist = readDocument(FileUtil.toFileObject(f));
47.175 - return tasklist;
47.176 - }
47.177
47.178 private UserTaskObjectList tasks;
47.179
47.180 - /** Has the options set changed such that we need to save */
47.181 - protected boolean needSave = false;
47.182 - protected boolean dontSave = false;
47.183 -
47.184 /**
47.185 * this value is used by ICalImport/ExportFormat to store additional
47.186 * not editable parameters
47.187 */
47.188 public Object userObject;
47.189
47.190 - /** File being shown in this tasklist */
47.191 - private FileObject file = null;
47.192 -
47.193 - /** The current timeout */
47.194 - private long currentTimeout;
47.195 + private DueTasksNotifier dueTasksNotifier;
47.196 +
47.197 + /** <ChangeListener> */
47.198 + private EventListenerList listeners = new EventListenerList();
47.199
47.200 /**
47.201 - * During loading of a tasklist I may encounter items that have expired
47.202 - * while the IDE was shut down. Since the load-function turns off the
47.203 - * effect of markChanged, I need to store this information in another
47.204 - * variable, and save the tasklist when the load is finished..
47.205 - */
47.206 - private boolean expiredTask;
47.207 -
47.208 - /** Timer which keeps track of outstanding save requests - that way
47.209 - * deleting multiple items for example will not cause multiple saves. */
47.210 - private Timer runTimer = null;
47.211 -
47.212 -
47.213 - // User can work on one task at time (simplification) ~~~~~~~~~~~~~~~
47.214 -
47.215 - /**
47.216 - * Creates a new instance of TaskList
47.217 + * Creates a new instance.
47.218 */
47.219 public UserTaskList() {
47.220 tasks = new UserTaskObjectList(this);
47.221 - tasks.addListener(new ObjectList.Listener() {
47.222 - public void listChanged(ObjectList.Event ev) {
47.223 - markChanged();
47.224 - }
47.225 - });
47.226 -
47.227 - expiredTask = false;
47.228 - currentTimeout = Long.MAX_VALUE;
47.229 - }
47.230 -
47.231 - /**
47.232 - * Location of the tasklist
47.233 - */
47.234 - public FileObject getFile() {
47.235 - return file;
47.236 }
47.237
47.238 /**
47.239 @@ -309,96 +134,6 @@
47.240 }
47.241 }
47.242
47.243 - /** Write items out to disk */
47.244 - public void save() {
47.245 - if (!needSave || dontSave) {
47.246 - return;
47.247 - }
47.248 -
47.249 - // Write out items to disk
47.250 - scheduleWrite();
47.251 - }
47.252 -
47.253 - /**
47.254 - * Returns the default .ics file.
47.255 - *
47.256 - * @return default ics file
47.257 - */
47.258 - private static File getDefaultFile() {
47.259 - String name = Settings.getDefault().getExpandedFilename();
47.260 - File fname = FileUtil.normalizeFile(new File(name));
47.261 - return fname;
47.262 - }
47.263 -
47.264 - /**
47.265 - * Reads an ics file
47.266 - *
47.267 - * @param is an .ics file
47.268 - */
47.269 - private static UserTaskList readDocument(InputStream is) throws IOException {
47.270 - ICalImportFormat io = new ICalImportFormat();
47.271 -
47.272 - UserTaskList ret = new UserTaskList();
47.273 - ret.dontSave = true;
47.274 - try {
47.275 - io.read(ret, is);
47.276 - } catch (ParserException e) {
47.277 - // NOTE the exception text should be localized!
47.278 - DialogDisplayer.getDefault().notify(new Message(e.getMessage(),
47.279 - NotifyDescriptor.ERROR_MESSAGE));
47.280 - UTUtils.LOGGER.log(Level.SEVERE, "", e); // NOI18N
47.281 - } catch (IOException e) {
47.282 - // NOTE the exception text should be localized!
47.283 - DialogDisplayer.getDefault().notify(new Message(e.getMessage(),
47.284 - NotifyDescriptor.ERROR_MESSAGE));
47.285 - UTUtils.LOGGER.log(Level.SEVERE, "", e); // NOI18N
47.286 - }
47.287 -
47.288 - ret.needSave = false;
47.289 - ret.dontSave = false;
47.290 -
47.291 - ret.orderNextTimeout();
47.292 -
47.293 - if (ret.expiredTask) {
47.294 - // One (or more) tasks expired while the IDE was closed...
47.295 - // save the list as soon as possible...
47.296 - ret.expiredTask = true;
47.297 - ret.markChanged();
47.298 - }
47.299 - return ret;
47.300 - }
47.301 -
47.302 - /**
47.303 - * Reads an ics file
47.304 - *
47.305 - * @param fo an .ics file
47.306 - */
47.307 - public static UserTaskList readDocument(FileObject fo) throws IOException {
47.308 - if (fo.isValid()) {
47.309 - InputStream is = fo.getInputStream();
47.310 - UserTaskList ret = null;
47.311 - try {
47.312 - long m = System.currentTimeMillis();
47.313 - ret = readDocument(is);
47.314 - UTUtils.LOGGER.fine("File " + fo + " read in " + // NOI18N
47.315 - (System.currentTimeMillis() - m) + "ms"); // NOI18N
47.316 - } finally {
47.317 - try {
47.318 - is.close();
47.319 - } catch (IOException e) {
47.320 - UTUtils.LOGGER.log(Level.WARNING,
47.321 - "closing file failed", e); // NOI18N
47.322 - }
47.323 - }
47.324 - ret.file = fo;
47.325 - return ret;
47.326 - } else {
47.327 - throw new IOException(
47.328 - NbBundle.getMessage(UserTaskList.class,
47.329 - "FileNotValid", FileUtil.getFileDisplayName(fo))); // NOI18N
47.330 - }
47.331 - }
47.332 -
47.333 // Look up a particular item by uid
47.334 public UserTask findItem(Iterator tasks, String uid) {
47.335 while (tasks.hasNext()) {
47.336 @@ -431,138 +166,6 @@
47.337 }
47.338
47.339 /**
47.340 - * Schedule a document save
47.341 - */
47.342 - private void scheduleWrite() {
47.343 - // Stop our current timer; the previous node has not
47.344 - // yet been scanned; too brief an interval
47.345 - if (runTimer != null) {
47.346 - runTimer.stop();
47.347 - runTimer = null;
47.348 - }
47.349 - runTimer = new Timer(300, // 0.3 second delay
47.350 - new ActionListener() {
47.351 - public void actionPerformed(ActionEvent evt) {
47.352 - runTimer = null;
47.353 -
47.354 - // Write out items to disk
47.355 - try {
47.356 - writeDocument();
47.357 - } catch (IOException ioe) {
47.358 - ioe.printStackTrace();
47.359 - DialogDisplayer.getDefault().notify(new Message(
47.360 - ioe, NotifyDescriptor.ERROR_MESSAGE));
47.361 - }
47.362 - needSave = false;
47.363 - }
47.364 - });
47.365 - runTimer.setRepeats(false);
47.366 - runTimer.setCoalesce(true);
47.367 - runTimer.start();
47.368 - }
47.369 -
47.370 - /**
47.371 - * Write the list to iCal.
47.372 - */
47.373 - private void writeDocument() throws IOException {
47.374 - if (this.file == null)
47.375 - return;
47.376 -
47.377 - ICalExportFormat io = new ICalExportFormat();
47.378 -
47.379 - FileLock lock = this.file.lock();
47.380 - try {
47.381 - Writer w = new OutputStreamWriter(new BufferedOutputStream(
47.382 - file.getOutputStream(lock)), "UTF-8");;
47.383 - try {
47.384 - io.writeList(this, w, false);
47.385 - } catch (ParseException e) {
47.386 - e.printStackTrace();
47.387 - throw new IOException(e.getMessage());
47.388 - } catch (URISyntaxException e) {
47.389 - e.printStackTrace();
47.390 - throw new IOException(e.getMessage());
47.391 - } catch (ValidationException e) {
47.392 - e.printStackTrace();
47.393 - throw new IOException(e.getMessage());
47.394 - } finally {
47.395 - try {
47.396 - w.close();
47.397 - } catch (IOException e) {
47.398 - UTUtils.LOGGER.log(Level.WARNING,
47.399 - "failed closing file", e);
47.400 - }
47.401 - }
47.402 - } finally {
47.403 - lock.releaseLock();
47.404 - }
47.405 -
47.406 - // Remove permissions for others on the file when on Unix
47.407 - // varieties
47.408 - if (new File("/bin/chmod").exists()) { // NOI18N
47.409 - try {
47.410 - Runtime.getRuntime().exec(
47.411 - new String[] {"/bin/chmod", "go-rwx", // NOI18N
47.412 - FileUtil.toFile(this.file).getAbsolutePath()});
47.413 - } catch (Exception e) {
47.414 - // Silently accept
47.415 - UTUtils.LOGGER.log(Level.INFO,
47.416 - "chmod call failed", e); // NOI18N
47.417 - }
47.418 - }
47.419 -
47.420 - needSave = false;
47.421 - }
47.422 -
47.423 - /**
47.424 - * Order a timeout for the next due date
47.425 - */
47.426 - void orderNextTimeout() {
47.427 - ShowExpiredUserTaskProcessor se =
47.428 - new ShowExpiredUserTaskProcessor();
47.429 - processDepthFirst(se, getSubtasks());
47.430 -
47.431 - FindNextTimeoutUserTaskProcessor p =
47.432 - new FindNextTimeoutUserTaskProcessor();
47.433 - processDepthFirst(p, getSubtasks());
47.434 -
47.435 - if (p.ref != null && p.ref.getDueTime() != Long.MAX_VALUE &&
47.436 - !p.ref.isDueAlarmSent() && !p.ref.isDone() &&
47.437 - p.ref.getDueTime() != currentTimeout) {
47.438 - // cancel the previous ordered timeout, and add the new one
47.439 - if (currentTimeout != Long.MAX_VALUE) {
47.440 - TimeoutProvider.getInstance().cancel(this, null);
47.441 - }
47.442 - TimeoutProvider.getInstance().add(this, p.ref, p.ref.getDueTime());
47.443 - currentTimeout = p.ref.getDueTime();
47.444 - }
47.445 - }
47.446 -
47.447 - public String toString() {
47.448 - return "UserTaskList(" + file + ")"; // NOI18N
47.449 - }
47.450 -
47.451 - /**
47.452 - * Callback function for the TimeoutProvider to call when the timeout
47.453 - * expired. This function will block the TimeoutProviders thread, so
47.454 - * it should be used for a timeconsuming task (one should probably
47.455 - * reschedule oneself with the SwingUtilities.invokeLater() ???)
47.456 - * @param o the object provided as a user reference
47.457 - */
47.458 - public void timeoutExpired(Object o) {
47.459 - // order the next timeout for this list
47.460 - orderNextTimeout();
47.461 - }
47.462 -
47.463 - protected void setNeedSave(boolean b) {
47.464 - needSave = b;
47.465 - }
47.466 -
47.467 - protected void setDontSave(boolean b) {
47.468 - dontSave = b;
47.469 - }
47.470 -
47.471 - /**
47.472 * Returns top-level tasks holded by this list.
47.473 *
47.474 * @return list of top-level tasks
47.475 @@ -571,18 +174,6 @@
47.476 return tasks;
47.477 }
47.478
47.479 - /**
47.480 - * Notify the task list that some aspect of it has been changed, so
47.481 - * it should save itself soon. Eventually calls save
47.482 - */
47.483 - public void markChanged() {
47.484 - if (dontSave)
47.485 - return;
47.486 - orderNextTimeout();
47.487 - needSave = true;
47.488 - save();
47.489 - }
47.490 -
47.491 public ObjectList getObjectList() {
47.492 return tasks;
47.493 }
47.494 @@ -622,7 +213,46 @@
47.495 }
47.496 }
47.497
47.498 - /** For debugging purposes, only. Writes directly to serr.
47.499 + /**
47.500 + * Adds a change listener. The listener will be notified whenever some
47.501 + * change occures to a task at any level in this task list.
47.502 + *
47.503 + * @param l a listener
47.504 + */
47.505 + public void addChangeListener(ChangeListener l) {
47.506 + listeners.add(ChangeListener.class, l);
47.507 + }
47.508 +
47.509 + /**
47.510 + * Removes a change listener.
47.511 + *
47.512 + * @param l a listener.
47.513 + */
47.514 + public void removeChangeListener(ChangeListener l) {
47.515 + listeners.remove(ChangeListener.class, l);
47.516 + }
47.517 +
47.518 + /**
47.519 + * Fires a ChangeEvent
47.520 + */
47.521 + void fireChange() {
47.522 + // Guaranteed to return a non-null array
47.523 + Object[] list = listeners.getListenerList();
47.524 +
47.525 + // Process the listeners last to first, notifying
47.526 + // those that are interested in this event
47.527 + ChangeEvent changeEvent = null;
47.528 + for (int i = list.length - 2; i >= 0; i -= 2) {
47.529 + if (list[i] == ChangeListener.class) {
47.530 + // Lazily create the event:
47.531 + if (changeEvent == null)
47.532 + changeEvent = new ChangeEvent(this);
47.533 + ((ChangeListener) list[i+1]).stateChanged(changeEvent);
47.534 + }
47.535 + }
47.536 + }
47.537 +
47.538 + /* For debugging purposes, only. Writes directly to serr.
47.539 public void print() {
47.540 System.err.println("\nTask List:\n-------------");
47.541 Iterator it = tasks.iterator();
48.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/UserTaskObjectList.java Mon Dec 04 21:57:00 2006 +0000
48.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/UserTaskObjectList.java Mon Dec 04 21:59:57 2006 +0000
48.3 @@ -25,6 +25,8 @@
48.4
48.5 /**
48.6 * List of UserTasks
48.7 + *
48.8 + * @author tl
48.9 */
48.10 public class UserTaskObjectList extends ObjectList<UserTask> {
48.11 private ObjectList.Owner parent;
49.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
49.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/model/package.html Mon Dec 04 21:59:57 2006 +0000
49.3 @@ -0,0 +1,13 @@
49.4 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
49.5 +
49.6 +<html>
49.7 + <head>
49.8 + <title>Model for user tasks</title>
49.9 + </head>
49.10 + <body>
49.11 + <p>
49.12 + This package contains all classes to model user tasks.
49.13 + The code should be independant of any UI classes.
49.14 + </p>
49.15 + </body>
49.16 +</html>
50.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/options/Settings.java Mon Dec 04 21:57:00 2006 +0000
50.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/options/Settings.java Mon Dec 04 21:59:57 2006 +0000
50.3 @@ -61,7 +61,6 @@
50.4 */
50.5 public static final String PROP_WORKING_DAYS = "workingDays"; // NOI18N
50.6
50.7 -
50.8 /** default working days. */
50.9 private static boolean[] DEF_WORKING_DAYS = {
50.10 true, true, true, true, true, false, false};
51.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/renderers/DoneTreeTableCellRenderer.java Mon Dec 04 21:57:00 2006 +0000
51.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/renderers/DoneTreeTableCellRenderer.java Mon Dec 04 21:59:57 2006 +0000
51.3 @@ -52,7 +52,7 @@
51.4
51.5 if (node instanceof UserTaskTreeTableNode) {
51.6 UserTask ut = ((UserTaskTreeTableNode) node).getUserTask();
51.7 - setEnabled(!ut.isProgressComputed() && ut.areDependenciesDone());
51.8 + setEnabled(!ut.isValuesComputed() && ut.areDependenciesDone());
51.9 }
51.10 return this;
51.11 }
52.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/transfer/MyTransferHandler.java Mon Dec 04 21:57:00 2006 +0000
52.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/transfer/MyTransferHandler.java Mon Dec 04 21:59:57 2006 +0000
52.3 @@ -225,6 +225,7 @@
52.4
52.5 if (exportSuccess && action == MOVE && transferredTasks != null) {
52.6 UserTasksTreeTable tt = (UserTasksTreeTable) comp;
52.7 + tt.clearSelection();
52.8 TreePath next = null;
52.9 for (int i = 0; i < transferredTasks.length; i++) {
52.10 UserTask ut = transferredTasks[i];
53.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/HistoryTextExportFormat.java Mon Dec 04 21:57:00 2006 +0000
53.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/HistoryTextExportFormat.java Mon Dec 04 21:59:57 2006 +0000
53.3 @@ -241,6 +241,8 @@
53.4 StreamResult result = new StreamResult(panel.getFile());
53.5 try {
53.6 tr.transform(source, result);
53.7 + Settings.getDefault().setLastUsedExportFolder(
53.8 + panel.getFile().getParentFile());
53.9 } catch (TransformerException ex) {
53.10 String msg = NbBundle.getMessage(HistoryTextExportFormat.class,
53.11 "CannotWriteFile", // NOI18N
53.12 @@ -390,9 +392,9 @@
53.13 if (info.object instanceof UserTask) {
53.14 fillDataCell(td, ((UserTask) info.object).getSummary(), level);
53.15 } else if (info.object instanceof UserTaskList) {
53.16 - fillDataCell(td, FileUtil.getFileDisplayName(
53.17 + /* TODO fillDataCell(td, FileUtil.getFileDisplayName(
53.18 ((UserTaskList) info.object).getFile()),
53.19 - level);
53.20 + level);*/
53.21 } else {
53.22 fillDataCell(td, loc("AllTaskLists"), level); // NOI18N
53.23 }
54.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/HtmlExportFormat.java Mon Dec 04 21:57:00 2006 +0000
54.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/HtmlExportFormat.java Mon Dec 04 21:59:57 2006 +0000
54.3 @@ -20,7 +20,10 @@
54.4 package org.netbeans.modules.tasklist.usertasks.translators;
54.5
54.6 import java.io.File;
54.7 +import java.io.FileOutputStream;
54.8 +import java.io.IOException;
54.9 import java.io.InputStream;
54.10 +import java.io.OutputStream;
54.11 import java.net.MalformedURLException;
54.12 import java.net.URL;
54.13 import java.util.logging.Level;
54.14 @@ -36,6 +39,8 @@
54.15 import org.netbeans.modules.tasklist.core.util.SimpleWizardPanel;
54.16 import org.netbeans.modules.tasklist.usertasks.options.Settings;
54.17 import org.netbeans.modules.tasklist.usertasks.util.UTUtils;
54.18 +import org.openide.DialogDisplayer;
54.19 +import org.openide.NotifyDescriptor;
54.20 import org.openide.WizardDescriptor;
54.21 import org.openide.awt.HtmlBrowser;
54.22 import org.openide.util.NbBundle;
54.23 @@ -51,6 +56,28 @@
54.24 "usertasks-table-html.xsl", // NOI18N
54.25 "usertasks-tree-html.xsl" // NOI18N
54.26 };
54.27 +
54.28 + /**
54.29 + * Copies a resource to a file.
54.30 + *
54.31 + * @param from see Class.getResourceAsStream
54.32 + * @param to destination
54.33 + */
54.34 + private static void copyResourceToFile(String from, File to)
54.35 + throws IOException {
54.36 + InputStream is = TextExportFormat.class.getResourceAsStream(from);
54.37 + try {
54.38 + OutputStream os = new FileOutputStream(to);
54.39 + try {
54.40 + UTUtils.copyStream(is, os);
54.41 + } finally {
54.42 + os.close();
54.43 + }
54.44 + } finally {
54.45 + is.close();
54.46 + }
54.47 + }
54.48 +
54.49 private String res = "usertasks-effort-html.xsl"; // NOI18N
54.50
54.51 /**
54.52 @@ -161,10 +188,22 @@
54.53 wd.getProperty(getClass().getName() +
54.54 ".TemplatesPanel"); // NOI18N
54.55 this.res = LAYOUTS[templatesPanel.getLayoutIndex()];
54.56 + File dir = chooseFilePanel.getFile().getParentFile();
54.57 super.doExportImport(provider, wd);
54.58 + try {
54.59 + copyResourceToFile(
54.60 + "/org/netbeans/modules/tasklist/core/task.gif", // NOI18N
54.61 + new File(dir, "undone.gif")); // NOI18N
54.62 + copyResourceToFile(
54.63 + "/org/netbeans/modules/tasklist/core/doneItem.gif", // NOI18N
54.64 + new File(dir, "done.gif")); // NOI18N
54.65 + } catch (IOException ex) {
54.66 + NotifyDescriptor nd = new NotifyDescriptor.Message(ex.getMessage(),
54.67 + NotifyDescriptor.Message.ERROR_MESSAGE);
54.68 + DialogDisplayer.getDefault().notify(nd);
54.69 + }
54.70 if (templatesPanel.getOpenFile()) {
54.71 showFileInBrowser(chooseFilePanel.getFile());
54.72 }
54.73 }
54.74 -
54.75 }
55.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/ICalExportFormat.java Mon Dec 04 21:57:00 2006 +0000
55.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/ICalExportFormat.java Mon Dec 04 21:59:57 2006 +0000
55.3 @@ -430,21 +430,15 @@
55.4 }
55.5 ((PercentComplete) prop).setPercentage(task.getPercentComplete());
55.6
55.7 - setXProperty(pl, "X-NETBEANS-PROGRESS-COMPUTED", "yes", // NOI18N
55.8 - task.isProgressComputed());
55.9 + setXProperty(pl, "X-NETBEANS-VALUES-COMPUTED", "yes", // NOI18N
55.10 + task.isValuesComputed());
55.11
55.12 setXProperty(pl, "X-NETBEANS-EFFORT", // NOI18N
55.13 Integer.toString(task.getEffort()), true);
55.14
55.15 - setXProperty(pl, "X-NETBEANS-EFFORT-COMPUTED", "yes", // NOI18N
55.16 - task.isEffortComputed());
55.17 -
55.18 setXProperty(pl, "X-NETBEANS-SPENT-TIME", // NOI18N
55.19 Integer.toString(task.getSpentTime()), true);
55.20
55.21 - setXProperty(pl, "X-NETBEANS-SPENT-TIME-COMPUTED", "yes", // NOI18N
55.22 - task.isSpentTimeComputed());
55.23 -
55.24 // Category (XXX standard allows MULTIPLE categories, I must handle
55.25 // that when I parse back)
55.26 String category = task.getCategory();
56.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/ICalImportFormat.java Mon Dec 04 21:57:00 2006 +0000
56.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/ICalImportFormat.java Mon Dec 04 21:59:57 2006 +0000
56.3 @@ -44,7 +44,6 @@
56.4 import net.fortuna.ical4j.model.Calendar;
56.5 import net.fortuna.ical4j.model.CategoryList;
56.6 import net.fortuna.ical4j.model.Component;
56.7 -import net.fortuna.ical4j.model.Date;
56.8 import net.fortuna.ical4j.model.Parameter;
56.9 import net.fortuna.ical4j.model.ParameterList;
56.10 import net.fortuna.ical4j.model.Property;
56.11 @@ -278,10 +277,6 @@
56.12 if (prop != null)
56.13 ut.setPercentComplete(((PercentComplete) prop).getPercentage());
56.14
56.15 - prop = pl.getProperty("X-NETBEANS-PROGRESS-COMPUTED"); // NOI18N
56.16 - if (prop != null)
56.17 - ut.setProgressComputed(prop.getValue().equals("yes"));
56.18 -
56.19 prop = pl.getProperty("X-NETBEANS-OWNER"); // NOI18N
56.20 if (prop != null)
56.21 ut.setOwner(prop.getValue());
56.22 @@ -307,10 +302,6 @@
56.23 }
56.24 }
56.25
56.26 - prop = pl.getProperty("X-NETBEANS-EFFORT-COMPUTED"); // NOI18N
56.27 - if (prop != null)
56.28 - ut.setEffortComputed(prop.getValue().equals("yes")); // NOI18N
56.29 -
56.30 prop = pl.getProperty("X-NETBEANS-SPENT-TIME"); // NOI18N
56.31 if (prop != null) {
56.32 try {
56.33 @@ -320,10 +311,6 @@
56.34 }
56.35 }
56.36
56.37 - prop = pl.getProperty("X-NETBEANS-SPENT-TIME-COMPUTED"); // NOI18N
56.38 - if (prop != null)
56.39 - ut.setSpentTimeComputed(prop.getValue().equals("yes")); // NOI18N
56.40 -
56.41 prop = pl.getProperty(Property.CATEGORIES);
56.42 if (prop != null) {
56.43 CategoryList cl = ((Categories) prop).getCategories();
56.44 @@ -397,6 +384,28 @@
56.45 }
56.46 }
56.47 }
56.48 +
56.49 + if (pl.getProperty("X-NETBEANS-PROGRESS-COMPUTED") != // NOI18N
56.50 + null &&
56.51 + pl.getProperty("X-NETBEANS-PROGRESS-COMPUTED"). // NOI18N
56.52 + getValue().equals("yes") && // NOI18N
56.53 + pl.getProperty("X-NETBEANS-EFFORT-COMPUTED") != // NOI18N
56.54 + null &&
56.55 + pl.getProperty("X-NETBEANS-EFFORT-COMPUTED"). // NOI18N
56.56 + getValue().equals("yes") && // NOI18N
56.57 + pl.getProperty("X-NETBEANS-SPENT-TIME-COMPUTED") != // NOI18N
56.58 + null &&
56.59 + pl.getProperty("X-NETBEANS-SPENT-TIME-COMPUTED"). // NOI18N
56.60 + getValue().equals("yes") // NOI18N
56.61 + ) {
56.62 + ut.setValuesComputed(true);
56.63 + } else {
56.64 + prop = pl.getProperty("X-NETBEANS-VALUES-COMPUTED"); // NOI18N
56.65 + if (prop != null)
56.66 + ut.setValuesComputed(prop.getValue().equals("yes")); // NOI18N
56.67 + else
56.68 + ut.setValuesComputed(false);
56.69 + }
56.70 // } else if ("X-NETBEANS-STARTTIME".equals(name)) { // NOI18N
56.71 // long start = Long.MAX_VALUE;
56.72 // try {
57.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/SpentTimesUserTaskProcessor.java Mon Dec 04 21:57:00 2006 +0000
57.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/SpentTimesUserTaskProcessor.java Mon Dec 04 21:59:57 2006 +0000
57.3 @@ -142,7 +142,7 @@
57.4 UserTaskInfo info = (UserTaskInfo) obj;
57.5 info.spentTimes = new long[periods.size() - 1];
57.6 if ((info.object instanceof UserTask) &&
57.7 - !((UserTask) info.object).isSpentTimeComputed()) {
57.8 + !((UserTask) info.object).isValuesComputed()) {
57.9 for (WorkPeriod wp: ((UserTask) info.object).getWorkPeriods()) {
57.10 for (int i = 0; i < periods.size() - 1; i++) {
57.11 long ov = overlap(wp.getStart(), wp.getStart() +
58.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/TextExportFormat.java Mon Dec 04 21:57:00 2006 +0000
58.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/TextExportFormat.java Mon Dec 04 21:59:57 2006 +0000
58.3 @@ -20,9 +20,11 @@
58.4 package org.netbeans.modules.tasklist.usertasks.translators;
58.5
58.6 import java.io.File;
58.7 +import java.io.FileOutputStream;
58.8 +import java.io.IOException;
58.9 import java.io.InputStream;
58.10 +import java.io.OutputStream;
58.11 import java.util.logging.Level;
58.12 -import java.util.prefs.Preferences;
58.13 import javax.xml.transform.Transformer;
58.14 import javax.xml.transform.TransformerConfigurationException;
58.15 import javax.xml.transform.TransformerException;
58.16 @@ -64,12 +66,6 @@
58.17 }
58.18
58.19 public org.openide.WizardDescriptor getWizard() {
58.20 - Preferences p = Preferences.userNodeForPackage(TextExportFormat.class);
58.21 - String file = p.get("TextExportFormat.file", // NOI18N
58.22 - new File(System.getProperty("user.home"), // NOI18N
58.23 - "tasklist.txt").getAbsolutePath()); // NOI18N
58.24 - boolean open = p.getBoolean("TextExportFormat.open", true);
58.25 -
58.26 SaveFilePanel chooseFilePanel = new SaveFilePanel();
58.27 SimpleWizardPanel chooseFileWP = new SimpleWizardPanel(chooseFilePanel);
58.28 chooseFilePanel.setWizardPanel(chooseFileWP);
58.29 @@ -78,8 +74,9 @@
58.30 NbBundle.getMessage(XmlExportFormat.class,
58.31 "TextFilter"), // NOI18N
58.32 new String[] {".txt"})); // NOI18N
58.33 - chooseFilePanel.setFile(new File(file)); // NOI18N
58.34 - chooseFilePanel.setOpenFileCheckBox(open);
58.35 + chooseFilePanel.setFile(new File(
58.36 + Settings.getDefault().getLastUsedExportFolder(),
58.37 + "tasklist.txt")); // NOI18N
58.38 chooseFileWP.setContentHighlightedIndex(0);
58.39 chooseFilePanel.setOpenFileCheckBoxVisible(true);
58.40
58.41 @@ -111,8 +108,7 @@
58.42 * @param file file to be opened
58.43 */
58.44 private static void openFileInIde(File file) {
58.45 - try
58.46 - {
58.47 + try {
58.48 FileObject fo = FileUtil.toFileObject(file);
58.49 if (fo != null) {
58.50 DataObject do_ = DataObject.find(fo);
58.51 @@ -153,22 +149,18 @@
58.52 "XSL-Transformer cannot be created", e); // NOI18N
58.53 return null;
58.54 }
58.55 - }
58.56 + }
58.57
58.58 public void doExportImport(ExportImportProvider provider,
58.59 WizardDescriptor wd) {
58.60 - SaveFilePanel chooseFilePanel = (SaveFilePanel)
58.61 - wd.getProperty(CHOOSE_FILE_PANEL_PROP);
58.62 + SaveFilePanel panel = (SaveFilePanel)
58.63 + wd.getProperty(CHOOSE_FILE_PANEL_PROP);
58.64 super.doExportImport(provider, wd);
58.65 - if (chooseFilePanel.getOpenExportedFile()) {
58.66 - openFileInIde(chooseFilePanel.getFile());
58.67 + File dir = panel.getFile().getParentFile();
58.68 + Settings.getDefault().setLastUsedExportFolder(dir);
58.69 + if (panel.getOpenExportedFile()) {
58.70 + openFileInIde(panel.getFile());
58.71 }
58.72 -
58.73 - Preferences p = Preferences.userNodeForPackage(TextExportFormat.class);
58.74 - p.put("TextExportFormat.file", // NOI18N
58.75 - chooseFilePanel.getFile().getAbsolutePath());
58.76 - p.putBoolean("TextExportFormat.open",
58.77 - chooseFilePanel.getOpenExportedFile());
58.78 }
58.79
58.80 }
59.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/XmlExportFormat.java Mon Dec 04 21:57:00 2006 +0000
59.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/XmlExportFormat.java Mon Dec 04 21:59:57 2006 +0000
59.3 @@ -199,23 +199,20 @@
59.4 node.setAttribute("progress", // NOI18N
59.5 String.valueOf(task.getPercentComplete()));
59.6
59.7 - if (task.isProgressComputed()) {
59.8 + if (task.isValuesComputed()) {
59.9 + // for backward compatibility only
59.10 node.setAttribute("progress-computed", "yes"); // NOI18N
59.11 + node.setAttribute("effort-computed", "yes"); // NOI18N
59.12 + node.setAttribute("spent-time-computed", "yes"); // NOI18N
59.13 +
59.14 + node.setAttribute("values-computed", "yes"); // NOI18N
59.15 }
59.16
59.17 node.setAttribute("effort", String.valueOf(task.getEffort())); // NOI18N
59.18
59.19 - if (task.isEffortComputed()) {
59.20 - node.setAttribute("effort-computed", "yes"); // NOI18N
59.21 - }
59.22 -
59.23 node.setAttribute("spent-time", // NOI18N
59.24 String.valueOf(task.getSpentTime()));
59.25
59.26 - if (task.isSpentTimeComputed()) {
59.27 - node.setAttribute("spent-time-computed", "yes"); // NOI18N
59.28 - }
59.29 -
59.30 if (task.getDueDate() != null) {
59.31 node.setAttribute("due", dateToString(task.getDueDate())); // NOI18N
59.32 }
60.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
60.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/usertasks-1_3.dtd Mon Dec 04 21:59:57 2006 +0000
60.3 @@ -0,0 +1,71 @@
60.4 +<?xml version="1.0" encoding="UTF-8"?>
60.5 +
60.6 +<!--
60.7 +The contents of this file are subject to the terms of the Common Development
60.8 +and Distribution License (the License). You may not use this file except in
60.9 +compliance with the License.
60.10 +
60.11 +You can obtain a copy of the License at http://www.netbeans.org/cddl.html
60.12 +or http://www.netbeans.org/cddl.txt.
60.13 +
60.14 +When distributing Covered Code, include this CDDL Header Notice in each file
60.15 +and include the License file at http://www.netbeans.org/cddl.txt.
60.16 +If applicable, add the following below the CDDL Header, with the fields
60.17 +enclosed by brackets [] replaced by your own identifying information:
60.18 +"Portions Copyrighted [year] [name of copyright owner]"
60.19 +
60.20 +The Original Software is NetBeans. The Initial Developer of the Original
60.21 +Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
60.22 +Microsystems, Inc. All Rights Reserved.
60.23 +-->
60.24 +
60.25 +<!--
60.26 + Description: export format for user tasks
60.27 +-->
60.28 +
60.29 +<!ELEMENT tasks (task)*>
60.30 +
60.31 +<!--
60.32 + due, created, completed, start and modified - date format: YYYY-MM-DDThh:mm:ssTZD
60.33 + (see http://www.w3.org/TR/NOTE-datetime)
60.34 + line - 1 = the first line in a file
60.35 + effort - effort in minutes
60.36 + spent - spent time in minutes
60.37 +
60.38 + progress-computed, effort-computed and spent-time-computed will be ignored
60.39 + and only here for backward compatibility (see the new attribute
60.40 + values-computed)
60.41 +-->
60.42 +<!ELEMENT task (summary, details?, work-periods?, (task)*)>
60.43 +<!ATTLIST task
60.44 + priority (high|medium-high|medium|medium-low|low) "medium"
60.45 + category CDATA #IMPLIED
60.46 + progress CDATA #REQUIRED
60.47 + progress-computed (yes|no) "no"
60.48 + effort CDATA #REQUIRED
60.49 + effort-computed (yes|no) "no"
60.50 + due CDATA #IMPLIED
60.51 + file CDATA #IMPLIED
60.52 + line CDATA #IMPLIED
60.53 + created CDATA #REQUIRED
60.54 + modified CDATA #REQUIRED
60.55 + completed CDATA #IMPLIED
60.56 + spent-time CDATA #REQUIRED
60.57 + spent-time-computed (yes|no) "no"
60.58 + owner CDATA #IMPLIED
60.59 + start CDATA #IMPLIED
60.60 + values-computed (yes|no) "no"
60.61 +>
60.62 +
60.63 +<!ELEMENT details (#PCDATA)>
60.64 +<!ELEMENT work-periods (period)+>
60.65 +
60.66 +<!ELEMENT period EMPTY>
60.67 +
60.68 +<!--
60.69 + duration - duration of a work period in minutes
60.70 +-->
60.71 +<!ATTLIST period
60.72 + start CDATA #REQUIRED
60.73 + duration CDATA #REQUIRED
60.74 +>
61.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/usertasks-simple-html.xsl Mon Dec 04 21:57:00 2006 +0000
61.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/translators/usertasks-simple-html.xsl Mon Dec 04 21:59:57 2006 +0000
61.3 @@ -32,10 +32,15 @@
61.4 <head>
61.5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
61.6 <title>Task List</title>
61.7 + <style type="text/css">
61.8 + ul { list-style-type: none }
61.9 + </style>
61.10 </head>
61.11 <body style="font-family: sans-serif">
61.12 <h1>Task List</h1>
61.13 - <xsl:apply-templates/>
61.14 + <ul>
61.15 + <xsl:apply-templates/>
61.16 + </ul>
61.17 <p/>
61.18 <hr/>
61.19 <p><a href="http://validator.w3.org/check/referer">Valid XHTML 1.0!</a> This page was created by the <a href="http://www.netbeans.org">NetBeans</a>
61.20 @@ -44,20 +49,11 @@
61.21 </html>
61.22 </xsl:template>
61.23
61.24 - <xsl:template match="tasks/task">
61.25 - <xsl:apply-templates select="." mode="textonly"/>
61.26 - <xsl:if test="count(task) != 0">
61.27 - <ul style="list-style-type: none">
61.28 - <xsl:apply-templates select="task"/>
61.29 - </ul>
61.30 - </xsl:if>
61.31 - </xsl:template>
61.32 -
61.33 <xsl:template match="task">
61.34 <li>
61.35 <xsl:apply-templates select="." mode="textonly"/>
61.36 <xsl:if test="count(task) != 0">
61.37 - <ul style="list-style-type: none">
61.38 + <ul>
61.39 <xsl:apply-templates select="task"/>
61.40 </ul>
61.41 </xsl:if>
61.42 @@ -67,18 +63,13 @@
61.43 <xsl:template match="task" mode="textonly">
61.44 <xsl:choose>
61.45 <xsl:when test="@progress = 100">
61.46 - <span style="font-size: larger; color: green">✔</span>
61.47 - </xsl:when>
61.48 - <xsl:when test="@progress = 0">
61.49 - <span style="font-size: larger; color: red">✔</span>
61.50 + <img src="done.gif" alt="Done"/>
61.51 </xsl:when>
61.52 <xsl:otherwise>
61.53 - <span style="font-size: larger; color: red">➠</span>
61.54 + <img src="undone.gif" alt="Undone"/>
61.55 </xsl:otherwise>
61.56 </xsl:choose>
61.57 - <span>
61.58 - <xsl:value-of select="summary"/>
61.59 - </span>
61.60 + <xsl:value-of select="summary"/>
61.61 <xsl:if test="details != ''">
61.62 <br/>
61.63 (<xsl:value-of select="details"/>)
62.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
62.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/util/JLinkButton.java Mon Dec 04 21:59:57 2006 +0000
62.3 @@ -0,0 +1,417 @@
62.4 +/*
62.5 + * The contents of this file are subject to the terms of the Common Development
62.6 + * and Distribution License (the License). You may not use this file except in
62.7 + * compliance with the License.
62.8 + *
62.9 + * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
62.10 + * or http://www.netbeans.org/cddl.txt.
62.11 + *
62.12 + * When distributing Covered Code, include this CDDL Header Notice in each file
62.13 + * and include the License file at http://www.netbeans.org/cddl.txt.
62.14 + * If applicable, add the following below the CDDL Header, with the fields
62.15 + * enclosed by brackets [] replaced by your own identifying information:
62.16 + * "Portions Copyrighted [year] [name of copyright owner]"
62.17 + *
62.18 + * The Original Software is NetBeans. The Initial Developer of the Original
62.19 + * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
62.20 + * Microsystems, Inc. All Rights Reserved.
62.21 + */
62.22 +
62.23 +package org.netbeans.modules.tasklist.usertasks.util;
62.24 +
62.25 +import java.awt.Color;
62.26 +import java.awt.Cursor;
62.27 +import java.awt.FontMetrics;
62.28 +import java.awt.Graphics;
62.29 +import java.awt.Insets;
62.30 +import java.awt.Rectangle;
62.31 +import java.net.URL;
62.32 +
62.33 +import javax.swing.Action;
62.34 +import javax.swing.ButtonModel;
62.35 +import javax.swing.Icon;
62.36 +import javax.swing.JButton;
62.37 +import javax.swing.JComponent;
62.38 +import javax.swing.UIManager;
62.39 +import javax.swing.plaf.ComponentUI;
62.40 +import javax.swing.plaf.metal.MetalButtonUI;
62.41 +
62.42 +/**
62.43 + * Clickable Link
62.44 + *
62.45 + * Initial source code from
62.46 + * http://www.java2s.com/Code/Java/Swing-Components/TreeTable.htm
62.47 + *
62.48 + * @author tl
62.49 + */
62.50 +public class JLinkButton extends JButton {
62.51 + private static final String uiString = "LinkButtonUI";
62.52 +
62.53 + /** the text will always be underlined */
62.54 + public static final int ALWAYS_UNDERLINE = 0;
62.55 +
62.56 + /** the text will only be underlined on mouse over. */
62.57 + public static final int HOVER_UNDERLINE = 1;
62.58 +
62.59 + /** never underline the text. */
62.60 + public static final int NEVER_UNDERLINE = 2;
62.61 +
62.62 + /**
62.63 + * Registers default UI class for JLinkButton.
62.64 + */
62.65 + public static void registerUI() {
62.66 + UIManager.getDefaults().put("LinkButtonUI", "BasicLinkButtonUI");
62.67 + }
62.68 +
62.69 + private int linkBehavior;
62.70 + private Color linkColor;
62.71 + private Color colorPressed;
62.72 + private Color visitedLinkColor;
62.73 + private Color disabledLinkColor;
62.74 + private URL buttonURL;
62.75 + private boolean isLinkVisited;
62.76 +
62.77 + /**
62.78 + * Empty link.
62.79 + */
62.80 + public JLinkButton() {
62.81 + this(null, null, null);
62.82 + }
62.83 +
62.84 + /**
62.85 + * Constructor.
62.86 + *
62.87 + * @param action todo?
62.88 + */
62.89 + public JLinkButton(Action action) {
62.90 + this();
62.91 + setAction(action);
62.92 + }
62.93 +
62.94 + /**
62.95 + * Constructor.
62.96 + *
62.97 + * @param icon shows an icon.
62.98 + */
62.99 + public JLinkButton(Icon icon) {
62.100 + this(null, icon, null);
62.101 + }
62.102 +
62.103 + /**
62.104 + * Constructor.
62.105 + *
62.106 + * @param s text of the button
62.107 + */
62.108 + public JLinkButton(String s) {
62.109 + this(s, null, null);
62.110 + }
62.111 +
62.112 + /**
62.113 + * Constructor.
62.114 + *
62.115 + * @param url target URL
62.116 + */
62.117 + public JLinkButton(URL url) {
62.118 + this(null, null, url);
62.119 + }
62.120 +
62.121 + /**
62.122 + * Constructor.
62.123 + *
62.124 + * @param s text
62.125 + * @param url target url
62.126 + */
62.127 + public JLinkButton(String s, URL url) {
62.128 + this(s, null, url);
62.129 + }
62.130 +
62.131 + /**
62.132 + * Constructor.
62.133 + *
62.134 + * @param icon an icon
62.135 + * @param url target url
62.136 + */
62.137 + public JLinkButton(Icon icon, URL url) {
62.138 + this(null, icon, url);
62.139 + }
62.140 +
62.141 + /*
62.142 + * Constructor.
62.143 + *
62.144 + * @param text text of the button
62.145 + * @param icon an icon
62.146 + * @param url target url
62.147 + */
62.148 + public JLinkButton(String text, Icon icon, URL url) {
62.149 + super(text, icon);
62.150 + linkBehavior = ALWAYS_UNDERLINE;
62.151 + linkColor = Color.blue;
62.152 + colorPressed = Color.red;
62.153 + visitedLinkColor = new Color(128, 0, 128);
62.154 + if (text == null && url != null)
62.155 + setText(url.toExternalForm());
62.156 + setLinkURL(url);
62.157 + setCursor(Cursor.getPredefinedCursor(12));
62.158 + setBorderPainted(false);
62.159 + setContentAreaFilled(false);
62.160 + setRolloverEnabled(true);
62.161 + setMargin(new Insets(0, 0, 0, 0));
62.162 + }
62.163 +
62.164 + public void updateUI() {
62.165 + setUI(BasicLinkButtonUI.createUI(this));
62.166 + }
62.167 +
62.168 +
62.169 + public String getUIClassID() {
62.170 + return "LinkButtonUI";
62.171 + }
62.172 +
62.173 + /**
62.174 + * Setups the text for the tooltip.
62.175 + */
62.176 + private void setupToolTipText() {
62.177 + String tip = null;
62.178 + if (buttonURL != null)
62.179 + tip = buttonURL.toExternalForm();
62.180 + setToolTipText(tip);
62.181 + }
62.182 +
62.183 + /**
62.184 + * Sets the behaviour.
62.185 + *
62.186 + * @param bnew one of the *_UNDERLINE constants from this class.
62.187 + */
62.188 + public void setLinkBehavior(int bnew) {
62.189 + if (bnew != ALWAYS_UNDERLINE && bnew != HOVER_UNDERLINE
62.190 + && bnew != NEVER_UNDERLINE)
62.191 + throw new IllegalArgumentException("Not a legal LinkBehavior");
62.192 +
62.193 + int old = linkBehavior;
62.194 + linkBehavior = bnew;
62.195 + firePropertyChange("linkBehavior", old, bnew);
62.196 + repaint();
62.197 + }
62.198 +
62.199 + /**
62.200 + * Returns the current behaviour.
62.201 + *
62.202 + * @return one of the *_UNDERLINE constants from this class.
62.203 + */
62.204 + public int getLinkBehavior() {
62.205 + return linkBehavior;
62.206 + }
62.207 +
62.208 + /**
62.209 + * Sets the color of the link.
62.210 + *
62.211 + * @param color new color
62.212 + */
62.213 + public void setLinkColor(Color color) {
62.214 + Color colorOld = linkColor;
62.215 + linkColor = color;
62.216 + firePropertyChange("linkColor", colorOld, color);
62.217 + repaint();
62.218 + }
62.219 +
62.220 + /**
62.221 + * Returns the color of the link.
62.222 + *
62.223 + * @return color
62.224 + */
62.225 + public Color getLinkColor() {
62.226 + return linkColor;
62.227 + }
62.228 +
62.229 + /**
62.230 + * Sets the color of the link used when the mouse is over it.
62.231 + *
62.232 + * @param colorNew new color
62.233 + */
62.234 + public void setActiveLinkColor(Color colorNew) {
62.235 + Color colorOld = colorPressed;
62.236 + colorPressed = colorNew;
62.237 + firePropertyChange("activeLinkColor", colorOld, colorNew);
62.238 + repaint();
62.239 + }
62.240 +
62.241 + /**
62.242 + * Returns the color of the link when the mouse is over it.
62.243 + *
62.244 + * @return color
62.245 + */
62.246 + public Color getActiveLinkColor() {
62.247 + return colorPressed;
62.248 + }
62.249 +
62.250 + /**
62.251 + * Sets disabled color.
62.252 + *
62.253 + * @param color new color
62.254 + */
62.255 + public void setDisabledLinkColor(Color color) {
62.256 + Color colorOld = disabledLinkColor;
62.257 + disabledLinkColor = color;
62.258 + firePropertyChange("disabledLinkColor", colorOld, color);
62.259 + if (!isEnabled())
62.260 + repaint();
62.261 + }
62.262 +
62.263 + /**
62.264 + * Returns disabled color.
62.265 + *
62.266 + * @return disabled color
62.267 + */
62.268 + public Color getDisabledLinkColor() {
62.269 + return disabledLinkColor;
62.270 + }
62.271 +
62.272 + /**
62.273 + * Sets color for the visited state.
62.274 + *
62.275 + * @param colorNew new color
62.276 + */
62.277 + public void setVisitedLinkColor(Color colorNew) {
62.278 + Color colorOld = visitedLinkColor;
62.279 + visitedLinkColor = colorNew;
62.280 + firePropertyChange("visitedLinkColor", colorOld, colorNew);
62.281 + repaint();
62.282 + }
62.283 +
62.284 + /**
62.285 + * Returns color for the visited state.
62.286 + *
62.287 + * @return color
62.288 + */
62.289 + public Color getVisitedLinkColor() {
62.290 + return visitedLinkColor;
62.291 + }
62.292 +
62.293 + /**
62.294 + * Returns the URL.
62.295 + *
62.296 + * @return URL
62.297 + */
62.298 + public URL getLinkURL() {
62.299 + return buttonURL;
62.300 + }
62.301 +
62.302 + /**
62.303 + * Sets new URL.
62.304 + *
62.305 + * @param url new URL
62.306 + */
62.307 + public void setLinkURL(URL url) {
62.308 + URL urlOld = buttonURL;
62.309 + buttonURL = url;
62.310 + setupToolTipText();
62.311 + firePropertyChange("linkURL", urlOld, url);
62.312 + revalidate();
62.313 + repaint();
62.314 + }
62.315 +
62.316 + /**
62.317 + * Sets the visited flag.
62.318 + *
62.319 + * @param flagNew new value for the visited flag
62.320 + */
62.321 + public void setLinkVisited(boolean flagNew) {
62.322 + boolean flagOld = isLinkVisited;
62.323 + isLinkVisited = flagNew;
62.324 + firePropertyChange("linkVisited", flagOld, flagNew);
62.325 + repaint();
62.326 + }
62.327 +
62.328 + /**
62.329 + * Checks whether the link is visited.
62.330 + *
62.331 + * @return true = visited.
62.332 + */
62.333 + public boolean isLinkVisited() {
62.334 + return isLinkVisited;
62.335 + }
62.336 +
62.337 + protected String paramString() {
62.338 + String str;
62.339 + if (linkBehavior == ALWAYS_UNDERLINE)
62.340 + str = "ALWAYS_UNDERLINE";
62.341 + else if (linkBehavior == HOVER_UNDERLINE)
62.342 + str = "HOVER_UNDERLINE";
62.343 + else if (linkBehavior == NEVER_UNDERLINE)
62.344 + str = "NEVER_UNDERLINE";
62.345 + else
62.346 + str = "SYSTEM_DEFAULT";
62.347 + String colorStr = linkColor == null ? "" : linkColor.toString();
62.348 + String colorPressStr = colorPressed == null ? "" : colorPressed
62.349 + .toString();
62.350 + String disabledLinkColorStr = disabledLinkColor == null ? ""
62.351 + : disabledLinkColor.toString();
62.352 + String visitedLinkColorStr = visitedLinkColor == null ? ""
62.353 + : visitedLinkColor.toString();
62.354 + String buttonURLStr = buttonURL == null ? "" : buttonURL.toString();
62.355 + String isLinkVisitedStr = isLinkVisited ? "true" : "false";
62.356 + return super.paramString() + ",linkBehavior=" + str + ",linkURL="
62.357 + + buttonURLStr + ",linkColor=" + colorStr + ",activeLinkColor="
62.358 + + colorPressStr + ",disabledLinkColor=" + disabledLinkColorStr
62.359 + + ",visitedLinkColor=" + visitedLinkColorStr
62.360 + + ",linkvisitedString=" + isLinkVisitedStr;
62.361 + }
62.362 +}
62.363 +
62.364 +/**
62.365 + * Default UI delegate.
62.366 + */
62.367 +class BasicLinkButtonUI extends MetalButtonUI {
62.368 + private static final BasicLinkButtonUI ui = new BasicLinkButtonUI();
62.369 +
62.370 + /**
62.371 + * Returns the UI for the specified component.
62.372 + *
62.373 + * @param jcomponent a JLinkButton
62.374 + * @return created UI
62.375 + */
62.376 + public static ComponentUI createUI(JComponent jcomponent) {
62.377 + return ui;
62.378 + }
62.379 +
62.380 + protected void paintText(Graphics g, JComponent com, Rectangle rect,
62.381 + String s) {
62.382 + JLinkButton bn = (JLinkButton) com;
62.383 + ButtonModel bnModel = bn.getModel();
62.384 + Color color = bn.getForeground();
62.385 + Object obj = null;
62.386 + if (bnModel.isEnabled()) {
62.387 + if (bnModel.isPressed())
62.388 + bn.setForeground(bn.getActiveLinkColor());
62.389 + else if (bn.isLinkVisited())
62.390 + bn.setForeground(bn.getVisitedLinkColor());
62.391 +
62.392 + else
62.393 + bn.setForeground(bn.getLinkColor());
62.394 + } else {
62.395 + if (bn.getDisabledLinkColor() != null)
62.396 + bn.setForeground(bn.getDisabledLinkColor());
62.397 + }
62.398 + super.paintText(g, com, rect, s);
62.399 + int behaviour = bn.getLinkBehavior();
62.400 + boolean drawLine = false;
62.401 + if (behaviour == JLinkButton.HOVER_UNDERLINE) {
62.402 + if (bnModel.isRollover())
62.403 + drawLine = true;
62.404 + } else if (behaviour == JLinkButton.ALWAYS_UNDERLINE)
62.405 + drawLine = true;
62.406 + if (!drawLine)
62.407 + return;
62.408 + FontMetrics fm = g.getFontMetrics();
62.409 + int x = rect.x + getTextShiftOffset();
62.410 + int y = (rect.y + fm.getAscent() + fm.getDescent() +
62.411 + getTextShiftOffset()) - 1;
62.412 + if (bnModel.isEnabled()) {
62.413 + g.setColor(bn.getForeground());
62.414 + g.drawLine(x, y, (x + rect.width) - 1, y);
62.415 + } else {
62.416 + g.setColor(bn.getBackground().brighter());
62.417 + g.drawLine(x, y, (x + rect.width) - 1, y);
62.418 + }
62.419 + }
62.420 +}
62.421 \ No newline at end of file
63.1 --- a/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/util/UTUtils.java Mon Dec 04 21:57:00 2006 +0000
63.2 +++ b/tasklist.usertasks/src/org/netbeans/modules/tasklist/usertasks/util/UTUtils.java Mon Dec 04 21:59:57 2006 +0000
63.3 @@ -22,6 +22,9 @@
63.4 import java.awt.Component;
63.5 import java.awt.Dimension;
63.6 import java.io.File;
63.7 +import java.io.IOException;
63.8 +import java.io.InputStream;
63.9 +import java.io.OutputStream;
63.10 import java.net.URL;
63.11 import java.util.ArrayList;
63.12 import java.util.List;
63.13 @@ -61,10 +64,25 @@
63.14 public static final Logger LOGGER = TLUtils.getLogger(UTUtils.class);
63.15
63.16 static {
63.17 - LOGGER.setLevel(Level.OFF);
63.18 + LOGGER.setLevel(Level.FINE);
63.19 }
63.20
63.21 /**
63.22 + * Copies the content of one stream to another.
63.23 + *
63.24 + * @param is input stream
63.25 + * @param os output stream
63.26 + */
63.27 + public static void copyStream(InputStream is, OutputStream os)
63.28 + throws IOException {
63.29 + byte[] buffer = new byte[1024];
63.30 + int read;
63.31 + while ((read = is.read(buffer)) != -1) {
63.32 + os.write(buffer, 0, read);
63.33 + }
63.34 + }
63.35 +
63.36 + /**
63.37 * Creates a tag in another one.
63.38 *
63.39 * @param el an XML node
63.40 @@ -131,7 +149,8 @@
63.41 return sb.toString();
63.42 }
63.43
63.44 - /** Create the default toolbar representation of an array of actions.
63.45 + /**
63.46 + * Create the default toolbar representation of an array of actions.
63.47 * Null items in the array will add a separator to the toolbar.
63.48 *
63.49 * @param actions actions to show in the generated toolbar
63.50 @@ -421,4 +440,17 @@
63.51 }
63.52 return r;
63.53 }
63.54 +
63.55 + /**
63.56 + * Dumps the hierarchy of class loaders.
63.57 + *
63.58 + * @param cl a class loader or null
63.59 + */
63.60 + public static void dumpClassLoaders(ClassLoader cl) {
63.61 + while (cl != null) {
63.62 + UTUtils.LOGGER.fine(cl.getClass().getName() +
63.63 + " " + cl.toString()); // NOI18N
63.64 + cl = cl.getParent();
63.65 + }
63.66 + }
63.67 }
64.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
64.2 +++ b/tasklist.usertasks/test/unit/src/org/netbeans/modules/tasklist/usertasks/model/DurationTest.java Mon Dec 04 21:59:57 2006 +0000
64.3 @@ -0,0 +1,47 @@
64.4 +/*
64.5 + * The contents of this file are subject to the terms of the Common Development
64.6 + * and Distribution License (the License). You may not use this file except in
64.7 + * compliance with the License.
64.8 + *
64.9 + * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
64.10 + * or http://www.netbeans.org/cddl.txt.
64.11 + *
64.12 + * When distributing Covered Code, include this CDDL Header Notice in each file
64.13 + * and include the License file at http://www.netbeans.org/cddl.txt.
64.14 + * If applicable, add the following below the CDDL Header, with the fields
64.15 + * enclosed by brackets [] replaced by your own identifying information:
64.16 + * "Portions Copyrighted [year] [name of copyright owner]"
64.17 + *
64.18 + * The Original Software is NetBeans. The Initial Developer of the Original
64.19 + * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
64.20 + * Microsystems, Inc. All Rights Reserved.
64.21 + */
64.22 +
64.23 +package org.netbeans.modules.tasklist.usertasks.model;
64.24 +
64.25 +import junit.framework.Test;
64.26 +
64.27 +import org.netbeans.junit.NbTestCase;
64.28 +import org.netbeans.junit.NbTestSuite;
64.29 +
64.30 +/**
64.31 + * Tests for Duration.
64.32 + *
64.33 + * @author tl
64.34 + */
64.35 +public class DurationTest extends NbTestCase {
64.36 + public DurationTest (String name) {
64.37 + super (name);
64.38 + }
64.39 +
64.40 + public static Test suite () {
64.41 + return new NbTestSuite(TaskListTest.class);
64.42 + }
64.43 +
64.44 + public void testDummy() throws Exception {
64.45 + Duration d = new Duration(8 * 60, 8 * 60, 7, true);
64.46 + assertTrue(d.equals(new Duration(0, 1, 0, 0)));
64.47 + d = new Duration(60, 8 * 60, 5, true);
64.48 + assertTrue(d.equals(new Duration(0, 0, 1, 0)));
64.49 + }
64.50 +}
65.1 --- a/tasklist.usertasks/test/unit/src/org/netbeans/modules/tasklist/usertasks/model/TaskTest.java Mon Dec 04 21:57:00 2006 +0000
65.2 +++ b/tasklist.usertasks/test/unit/src/org/netbeans/modules/tasklist/usertasks/model/TaskTest.java Mon Dec 04 21:59:57 2006 +0000
65.3 @@ -45,7 +45,7 @@
65.4 public void testGetEffort() {
65.5 UserTaskList utl = new UserTaskList();
65.6 UserTask root = new UserTask("root", utl); // NOI18N
65.7 - root.setEffortComputed(true);
65.8 + root.setValuesComputed(true);
65.9
65.10 UserTask a = new UserTask("a", utl); // NOI18N
65.11 a.setEffort(200);
65.12 @@ -67,8 +67,7 @@
65.13 public void testGetEffort2() {
65.14 UserTaskList utl = new UserTaskList();
65.15 UserTask root = new UserTask("root", utl); // NOI18N
65.16 - root.setEffortComputed(true);
65.17 - root.setProgressComputed(true);
65.18 + root.setValuesComputed(true);
65.19
65.20 UserTask a = new UserTask("a", utl); // NOI18N
65.21 a.setEffort(200);
66.1 --- a/tasklist.usertasks/test/unit/src/org/netbeans/modules/tasklist/usertasks/model/UserTaskListTest.java Mon Dec 04 21:57:00 2006 +0000
66.2 +++ b/tasklist.usertasks/test/unit/src/org/netbeans/modules/tasklist/usertasks/model/UserTaskListTest.java Mon Dec 04 21:59:57 2006 +0000
66.3 @@ -59,12 +59,6 @@
66.4 return new NbTestSuite(UserTaskListTest.class);
66.5 }
66.6
66.7 - protected void setUp () throws Exception {
66.8 - }
66.9 -
66.10 - protected void tearDown () throws Exception {
66.11 - }
66.12 -
66.13 /**
66.14 * Save to/restore from .ics.
66.15 *
66.16 @@ -135,9 +129,7 @@
66.17 ut.setDone(true);
66.18 assertEquals(15, ut2.getLastEditedDate());
66.19
66.20 - ut.setProgressComputed(true);
66.21 - ut.setEffortComputed(true);
66.22 - ut.setSpentTimeComputed(true);
66.23 + ut.setValuesComputed(true);
66.24 ut3.setDone(true);
66.25 assertEquals(15, ut2.getLastEditedDate());
66.26 }
66.27 @@ -159,7 +151,7 @@
66.28 ut.getSubtasks().add(ut2);
66.29 ut.getSubtasks().add(ut3);
66.30 ut3.setDone(true);
66.31 - ut.setProgressComputed(true);
66.32 + ut.setValuesComputed(true);
66.33
66.34 ut.setLastEditedDate(15000);
66.35 ut2.setLastEditedDate(15000);
66.36 @@ -210,7 +202,6 @@
66.37 assertTrue(utl.getSubtasks().size() == 0);
66.38 }
66.39
66.40 - /** This is just a dummy place holder test */
66.41 public void testUserTaskList() throws Exception {
66.42 UserTaskList list = (UserTaskList)openList("tasklist.ics"); // NOI18N
66.43 List subtasks = list.getSubtasks();
66.44 @@ -228,7 +219,9 @@
66.45 }
66.46
66.47
66.48 - /** Test the import/export feature */
66.49 + /**
66.50 + * Test the import/export feature
66.51 + */
66.52 public void testSimpleICalImportExport() throws Exception {
66.53 String contents = "BEGIN:VCALENDAR\r\nPRODID:-//NetBeans tasklist//NONSGML 1.0//EN\r\nVERSION:2.0\r\n\r\nBEGIN:VTODO\r\nUID:nb1031618664570.1@proto/192.129.100.100\r\nCREATED:20020910T004424Z\r\nSUMMARY:This is a test task\r\nPERCENT-COMPLETE:0\r\nEND:VTODO\r\n\r\nEND:VCALENDAR\r\n"; // NOI18N
66.54 ByteArrayInputStream reader = new ByteArrayInputStream(contents.getBytes());
66.55 @@ -312,5 +305,4 @@
66.56 UserTaskList list = UserTaskList.readDocument(fo);
66.57 return list;
66.58 }
66.59 -
66.60 }