mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.8 KiB
75 lines
2.8 KiB
Selection & Focus
|
|
=================
|
|
|
|
This section describes the design for selection and focus in the Disk
|
|
Administrator.
|
|
|
|
The two DA views have different selection and focus characteristics.
|
|
The disks view displays a superset of the information provided in the
|
|
volumes view, by showing free space and the actual breakdown of
|
|
partitions in a volume.
|
|
|
|
The focus is a pure UI concept that doesn't affect the selection. Thus,
|
|
we don't maintain the focus. We determine a reasonable focus for the
|
|
new view when a view change occurs.
|
|
|
|
The selection, however, must be maintained. The UI selection is reflected
|
|
in the internal data structures and is what commands operate on. We also
|
|
maintain the visual selection in both views.
|
|
|
|
The selection in the disks view consists of a set of volumes and a set
|
|
of free spaces. It is impossible to select only one partition of a
|
|
multi-paritition (FT) volume; the entire volume is selected. In the volumes
|
|
view, we only allow a single item to be selected, as we don't support any
|
|
operations on multiple volume selections. In addition, the volumes view doesn't
|
|
display any free space regions, so we must deselect free space when switching
|
|
to the volumes view.
|
|
|
|
The following analyzes the different cases:
|
|
|
|
Disks view
|
|
|
|
-- mouse select:
|
|
The subclassed window proc catches the mouse click.
|
|
|
|
First, if this isn't a ctrl-click (multiple select), then all
|
|
regions are cleared of any existing selection. If it is a
|
|
multiple selection, then no selection is cleared.
|
|
|
|
The region is determined, if the click corresponds to a region, and
|
|
selected. The focus is given to the selected region.
|
|
|
|
-- keyboard select:
|
|
Approximately the same as above, except it is easier to
|
|
determine what region we are operating on.
|
|
|
|
Volumes view
|
|
|
|
-- mouse select:
|
|
-- keyboard select:
|
|
|
|
In both cases, we only do things when we get a LVN_ITEMCHANGED
|
|
notification message. The cases we handle:
|
|
|
|
volume loses selection:
|
|
deselect all regions of this volume.
|
|
|
|
volume gets selection:
|
|
select all regions of this volume.
|
|
|
|
Things to do when switching from disks view to volumes view:
|
|
-- set the focus. If the disks view focus is on free space, then
|
|
put the focus on the first volume in the volumes view.
|
|
-- adjust the selection: deselect all free space.
|
|
|
|
Things to do when switching from volumes view to disks view:
|
|
-- set the focus. Pick a random region from the volume that has the
|
|
focus. For instance, if volume "F:" has the focus, then pick any of
|
|
its component regions---e.g., it doesn't matter which region of a volume
|
|
set gets the focus.
|
|
|
|
Things to do when we initialize Disk Administrator:
|
|
-- set no selection
|
|
-- set the focus:
|
|
-- if disks view: first region on first disk
|
|
-- if volumes view: first volume
|