1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266
|
Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements; and to You under the Apache License, Version 2.0.
Project Libraries UI Specification
Abstract
This paper proposes UI of libraries framework
it's based on requirements <requirements.html>
and should be integrated with Java Support UI
<JavaProjectsUISpecs.html> (I borrowed some
text from its draft).
Status
Formalization of sketch made by pkuzel, jrojcek
cledantec and others. An input for the revised
Java Language Support UI specs.
There are 3 OPEN ISSUEs that must be addressed.
Primary User Tasks
T1: User must be able to manage library
definitions
T2: User must be able to use library as
project resource
T3: The T2 resource must be then useable
in particular context (e.g. classpath
customizer)
T1 The Library Repository
The repository allows user to create/delete
libraries and manage their contents.
The Library Repository is accessible from the Tools menu.
This modal dialog contains a list of known libraries available
in the IDE. A library is a specific type of resource
that points to Jars and potentially any supporting martierial
like sources, and documentation.
OPEN ISSUE 1: Project scoped libraries. Where to manage
them. Tools is a global action. On the other hand it's
good to have central libraries manager. Compromise the
manager shows libraries from all opened projects.
The library repository dialog consists from two
parts: a library selector and selected library
customizer. Content of selected library customizer
follows selected library (It may be replaced
by category description if a category is selected
because it's not probably implementable to create
nonselectable categories.)
+-Libraries Repository ----------------+
| |
| +--------------+ +-----------------+ |
| | | | | |
| | the selector | | the customizer | |
| | | | | |
| +--------------+ +-----------------+ |
| |
| [ OK ] [ Cancel ] |
+--------------------------------------+
where:
[OK] applies all changes made so far and
closes the dialog
[Cancel] cancels all changes
(NOTE implementation can ask for applying
changes on library selection change)
The selector component consistes from categorized
list with two buttons:
+------------------------------+
| My Libraries ^
| Xerces 2.4.0 |
| Project 3GNET Accounting #
| Registry 1.2 #
| Regexp 1.2 #
| DOM L1 HTML module #
| Remote 3GNET Accounting #
| Web Services Pack 1.2 #
| IDE Libraries |
| XML APIs |
| v
+------------------------------+
[ Create... ] [ Delete ]
where:
"My Libraries" stays for category that contains
libraries in user's directory.
"Project 3GNET Accounting" and "Remote 3GNET Accounting"
(names come from project names) are two opened projects
that contains given library definitions (NOT usage).
"IDE Libraries" stays for category that contains
libraries bundled with the IDE. These are not user
editable, actual content depends on enabled modules.
[Create...] asks user for entering library
name and creates empty library definition in
given category (NOTE Category can be determined from
selection or explicitly queried in the ask dialog.
It future it may also ask for library type i.e.
Java vs. C++ vs. FORTRAN.)
[Delete] after confirmation deletes selected library.
All other elements stay for library names.
The library customizer component shows library
name, its description and content.
+-----------------------------------------------+
| Name: Xerces 2.4.0______________ |
| Description: XML parser compatible ^ |
| with XML 1.1 draft, XML # |
| Namespaces 1.1 draft and # |
| DOM3 Load/Store draft V |
| ___________ |
| / Classpath \ Sources \ Documentation \_____ |
| | | |
| | +-----------------------------^ | |
| | | ~/libs/xerces240/xerces.jar # [ Add ]| |
| | | ~/libs/xerces240/examples.j # [ Remove ]| |
| | | # [ Up ]| |
| | | | [ Down ]| |
| | +-----------------------------V | |
| +-------------------------------------------+ |
+-----------------------------------------------+
where:
Bottom tabbed area shows library content. Number
of tabs and their look may vary depending
on enabled modules. Shown scenario belongs
to typical Java IDE.
[Add] let user select additional content. It'll
typically present a filechooser. Selected item
is appended to the library content list.
(NOTE Implementation should open filechooser in
context that is derived from other library content
types if possible. Otherwise use last selection.)
[Remove] after confirmation deletes selected
list entry.
[Up/Down] moves selected entry one position up/down.
These should be available only with content that
must be ordered like: classpath and java sources.
T2 Library as Project Resource
Project resources is a pool of various items
external to current project. Library is an
example of bundle of such items.
User can add and remove library usage as project
resource. Standard project resources addition/removal
task is used. The libraries specifics part
is the second step in the add resource wizard
(the one after user selected she wants to add a library
usage). This step presents available libraries
in a list.
+--------------------------------------+
| Please select library you wanna use |
| as project resource: |
| |
| +----------------------------^ |
| | Xerces 2.4.0 # |
| | Registry 1.2 # |
| | Regexp 1.2 # |
| | DOM L1 HTML module # |
| | Web Services Pack 1.2 # |
| | XML APIs | |
| | | |
| +----------------------------V |
| |
| [ Manage Libraries ] |
+--------------------------------------+
..... [ Finish ]
where:
The multiselection list contains alphabetically
sorted library definitions.
{Manage Libraries] can be used to adjust/
inspect library definition from the wizard
context, it opens the library repository
manager modal dialog.
[Finish] button owned by wizard framework is
enabled if at least one library is selected.
It puts library usage under project resources.
Library resource appearance (a node and its children)
should allow to browse library content or at least
provide view action showing read-only library definition.
T3 Using Library Resource in Project
OPEN ISSUE 2: This area was not well covered in
previous Java UI specs, this is my point of view
and it may need a review from educated HIE guru.
As an example I have chosen the classpath customizer:
___________ ______________
/ Classpath \ /Boot Classpath\
| \-----------------------------------------+
| +------------------------------------^ |
| | /path/to/Foobar.jar # [ Add... ] |
| | [-] Xerces 2.4.0 # [ Remove ] |
| | +--- xerces.jar # |
| | +--- example.jar # [ Move Up ] |
| | # [ Move Down ] |
| | | |
| +------------------------------------V |
+-------------------------------------------------------+
where:
Xerces 2.4.0 is one item in list. It may
be expandable and shown but by default it
is collapsed. It must signalize its
validity state (e.g. if resource removed).
[Add] shows a project resource selector.
The project resource selector for classpath
lists all project resources that can be used
at classpath. (NOTE Classpath typing
is given by target classpath. Project resource
itself does not carry any such flag.)
All other buttons works as naturally expected.
OPEN ISSUE 3: I may be confusing that adding
library with classpath to project resources
does not have any meaning until it's placed
at first classpath. Some other resources types
such as XML catalogs has meaning right after
adding them to project resources. Project resources
play two roles. It's a repository of things
useable in project context (the classpath) and
it's also the usage itself (the XML entity).
----------------------------------------------------
Petr Kuzel on 20th Jun 2003
|