The Source for Java Technology Collaboration


Home | Changes | Index | Search | Go

FileManager

Some thought has been pondered as to the usefullness of a three - dimensional file manager over the past week or so. It would seem only natural that we have such an application to compliment the user environment that we are envisioning for the future of our project. I began to write down my thoughts on this matter and found myself constantly redefining what it is that would be the capabilities of the file manager. I saw a pattern arise in which the constraints by definition alone would be too much to call it a file manager. By definition, a file manager would be one that displays files in an organizational fashion, thus bringing order to the chaos that is the contents of the hard drive. Therein, however, lies the paradox. We seek to manage content by designing a system to manage files. Perhaps instead we should design a system that manages content instead. This may seem blatantly obvious to most but it is important to define what it is that we are trying to accomplish. Instead of managing only specific types of information we need a system that will manage all types of information. I propose that, since we are innovating the desktop, we need to innovate the way we organize the desktop as well.

I submit my idea for not simply a file manager but a complete content manager.

Instead of having seperate applications that are used for other disparate purposes, we should have one solution that draws upon those ideas. I realize that on the outset this may be nothing new, however, we need to expand our thinking in this area beyond what we have seen thus far and branch into what we have not seen.

I have found a project whose last CVS update was 17 months ago or so. It is called

VirtuaDesk
and is available from http://www.freshmeat.net. The main motivation behind studying such a project is because it was GPL code and also it had acheived simple file viewing capabilities for which I had little Java experience. It is quite archaic and unusable for the most part. It needs a lot of work. To its credit, however, the code is very well organized and fully documented (Javadoc), which is a feat in itself being that it was open source from an individual. I have contacted the original author of the code and informed him of my intentions to use the code as a part of this project and he has given me full blessing to do so.

I am asking that those who are interested help with the development. In its scope this is quite a project in itself and I know that it will take some time to finish. We know, however, that we have nothing but time. wink You can download the source from http://www.freshmeat.net.

The first thing that I would like to do, is integrate the development tree in with the Looking Glass API, or rather, make

VirtuaDesk
become Looking Glass aware. This is important because, frankly, at present the program will not run at all inside the Looking Glass environment. It is written heavily using the Java3D API and this is the first thing that we must address. Our client API resembles the structure of the Java3D API but is more analogous of the AWT API. It uses a Swing interface (eg JButton et al) that must be taken out as well, as this is not what I had in mind for design ideas. As a matter of fact, this brings me to a good point in this place. I would like to dedicate the rest of this document for ideas on what you would like to see in a Content Manager. The sky is the limit and no idea is too eccentric. The more ideas the better, in fact. Of course, I have my own ideas about what I'd like to see, but I want to hear from you guys first. As time progresses, I will write more addressing these ideas.

As for convention, when you edit the paragraphs above, I do not mind, I only ask that when you are done simply write your handle in parantheses after your comment. For example (t0rn) would go at the end of everything that I changed to the Wiki. Thank you. (t0rn)

UPDATES(09/10/04):

Integrating such a project has proven to be quite a challenge. Being that it is written using the Java 3D API, I have been studying this quite a bit so I am still quite the novice. I am trying an approach of learning only what I need to know but I am afraid that I may have to go a little deeper so that I know what it is that I need to change. I have been studying the code from the two projects that are in LG3D?-Incubator with vigor so that I might glean information as to the exact application in code of the LG3D? API. It has helped quite a bit, I must say. My largest problem I believe is that I'm not wrapping my mind around the concepts of scene graph - based API specifications in both J3D? and LG3D?. I have found many different things that I want to do with this project but, alas, it is taking quite some time since many of the concepts here are still new to me.

This, however, is the greatest part in the endeavor for new things. It is the frustration, agony, and ultimate victory in the struggle of learning new concepts and the creation of something new. (t0rn)

**IDEA SECTION**

**FILE MANAGER ROOMS**

This idea is based on user friendliness not efficiency. I was imagining a 3D hallway full of doors each door would be labled. The lable on the door will correspond to a directory in your harddrive. When you get inside a room it can have more doors respresenting subdirectories and the files inside the room can be represented as books on a shelf. The spine of the book can have the name of the file and different colors of books can denote the permission settings of the book, for example, if it is executable, writable, readable or combination of. I can see the draw back to this idea would be if you have a room with a 100 directories or a 100 files. How can it be represented?? Well you can make a super-door that leads to a hallway with a 100 doors. As for the 100 files maybe you can show that the bookshelf is full and when you click on the bookshelf you will come to a hallway full of bookshelfs. The other issue is that when a user can easily lose themselves in such a 3D model so some type of quick way of getting back home can be devised as well as a way of showing the absolute path the user has taken can be displayed. I am sure someone will recommend a way to go back one directory as well. (qgonjon)

**THREE PANE-BROWSER AND ADDRESS BAR **

I have in the past few weeks fallen in love with

MacOS X
and some of its functions. One of those is the finders 3-pane view, where you always see the two previous levels as well as the current. I think it's derived from
NextStep
which Apple bought a few(many) years ago. My input on filemanagment is this: Why totally change a working concept? Wouldn't it be easier both to code and work with a 3D-fied filemanager. You can use 3D icons and similar "3D" effects. (ddew) And about the browsing issue qgonjon mentioned, how about having some form of address bar with the current location in it? It's an old concept but it works. That way we can work with with something similar to gnomevfs and the konquerors system. So you can type in nfs:// and smb:// addresses. (ddew)






Designing a 3D type of File Manager

Introduction

Designing a 3D type of interface is a wide ranging subject that covers many inter disciplines such as visualization, navigation, human perception, and spatial awareness. This outline focuses on the theory of building a 3D type of file manager and tries to identify the major design areas that need consideration for an effective new design. The subject of the global metaphor design is briefly covered. Use of the term ‘3D’ is minimized and ‘3D type of’ is substituted to give it a boarder interpretation. The outline is also somewhat generic as I’m in the middle of slowly changing development platforms so samples and proofs are missing. It is meant to be applied to any interpretation of multidimensional interface design (e.g., 2.5D, 3D, 4D).

Again, the focus is on the theory and the requirements for an effective file management design, and I briefly touch on the issue of the global metaphor design which deserves a separate paper.

1) Information organization

Currently, there are two metaphors/models for file access and file management in current 2D desktops, one is the desktop interface, and the other being the file manager interface. As a result of the desktop interface not being integrated with the file manager interface, this leaves the user with two opposing methods for the management of folders and files. Here is a quick breakdown.

Two methods to open a folder.

Spatial mode - Open a folder on the desktop, and a single window opens up with no hierarchical folder structure present, but the spatial position is the same as when last opened. Having the position of the window state retained gives the user a familiar relative position each time a folder is opened. (The spatial model is also called the object orientated model.) Pro: Simple and some use of spatial memory. Con: Difficulty maneuvering deep folder hierarchies. ISSUE: WinXP implementation seems to have problem losing positional information. Need to test on other platforms. Linux, OSX, Vista, Sparc?

Navigation mode - Open a folder using the filer manager and the hierarchal tree lay out visualization is used to display the contents of the structure, with the contents usually displayed in 1-2 window panes depending on the platform. User navigates by clicking on little structural elements that open and close directories. Pro: Okay mental model and simple concept to use up to 10,000 objects. Con: Constant clicking and scrolling required, limited ways for personal origination of presentation data.

I can’t go into any further details on these two interface methods, but ideally, the benefits of spatial location and advantages of hierarchal tree layout should be a combined to provide for a seamless experience. This will lead to a more consistent and universal method for accessing all types of objects (e.g., folders, files, media, applications).

One other major area that is important for building a 3D type of file manager, is what I loosely refer to as the “semantic desktop”. At its core is a small data base like scheme for tracking object relationships at a high level of detail. The term “semantic” is more or less a catch phrase that includes data base type of operations, automatic layout, and theme related grouping of visual graphics. The data base is covered in section 3.

Three broad organizational approaches to combine for a multidimensional user interface design:

  1. Spatial and hierarchal layout models as mentioned earlier in this section. This also includes all 2D design elements and visualization effects such as tree layouts for navigation and cascading menu visuals. ISSUE: Bookmarks, shortcuts, and other custom grouping might need special schemes to be handled differently?

  2. Semantic desktop concept – user centric driven with highly customizable graphics interface, self organization of local objects, semi/sub metaphor related, fixed and variable spatial layouts, theme / functional grouping capabilities (Windows Vista uses virtual folders.) User centric driven with an extreme range of personal layout preferences to suite a large range of users. ISSUE: Not sure where search function fits in as it needs to be integral, but this is much later in priority.

  3. Object data base – use for tracking complex relational information between objects. This is the core of the semantic desktop above and is more of the abstraction I use to put the concept together. The object data base also calculates new positions, maintains the data base, and provides a pseudo API layer for high level distortions implemented by the global metaphor. I think this is the goal of LG.

The term/phrase “semantic desktop” mentioned above in (b) is the best description that I can think of to describe one of the organizational methods. This is different from the term ‘semantic web‘ which focuses around the organization of social networks. The commonality with these two terms is that both have to deal with a large amount of varying types of data, and this is fundamentally a organizational problem of the relationships between the objects and how they communicate changes when the environment changes. This touches on the issue of the metaphor. ISSUE: Better description of this loose bucket needed.

At its core, a new type of 3D user interface needs a common visualization method for uniformly accessing all data types such as files, folders, media, shortcuts, macros, and applications.

2) Metaphor design

To quickly touch on the subject of metaphor design, as with any new file manager, it will have to be an integral part of the global UI architecture. The global approach that I advocate here is more about the design process and how to categorize problem areas. Also, from various research documents, the term ‘metaphor’ is also referred to as the model, distortion, focus + content, and the paradigm. These subtle differences usually depend on a document’s focus and the concept being promoted. ISSUE: Is a glossary needed?

The focus of this document is on designing a 3D file type of manager/browser and not on the global metaphor itself.

To clarify two terms that I find useful, and to contrast a two tier way of thinking for designing a 3D type of UI, I assert these two major definitions for future reference:

  1. Global Object – Major effects like hyperbolic displays, major rearrangement of scale and size of windows, and other sudden focus plus content switching such as zooming, bending, or rotation of a large part of the display scene. I generally consider it a global distortion when one object effects another object.

  2. Local Object – Local entities can be a file, a group of files, a file of any media type, a macro such as a shortcut, and perhaps a structural element. Any sub directory is also considered a separate local object, and any layout preferences.

Metaphor design is a lengthy subject in itself, but I broadly classify the two major metaphor types as reality based and abstract type. All future references refer to the use of an abstract type of metaphor and not reality based metaphors (i.e., virtual worlds, planets, rooms, doors, hallways, or buildings).

3) Object data base

Caching and search go together well, and lately, these data base features have shown up in desktop designs (Apple with spotlight, Vista with Search Explorer), and integrating the search features throughout the system is a boost in productivity. However, the current methods for adding metadata to file/folders are for the user to better track, store, and organize personal files and groups, and are not for manipulation of the object layouts themselves. Higher fidelity tracking is needed on the position of objects.

What I’m proposing is a mini database that is internal to the design, and that works with the interface to track dozens of attributes per object. (Mostly local objects and it will probably operate in parallel with the current file system.) This will provide finely detailed information about the history and movement of the objects for future position calculations. I have a working design that uses basically a dynamic linked list where each object carries a table of all other related objects such as when one folder is inside of another folder. This provides a large amount of relational tracking information so objects can be automatically grouped and treated as a whole. ISSUE: Need diagram to clear up concept.

The algorithms that calculates positional information caused me some problems such as computing new locations when zooming in and out, but the data base architecture is straight forward to implement and is rudimentary for anyone versed in graphics design.

The data base approach offers great freedom for controlling objects in a multidimensional interface where quick calculations of future positions are necessary. In order to implement a complex and nested metaphor, it will need access to a wide range of virtual global objects. I see the data base being a core requirement of a new file manager design.

These object attributes need tracking for a flexible multidimensional type of environment.

  • position in global, local, and virtual group
  • visualizations available for the type of object
  • position in virtual desktop (for 4D use)
  • user preferences for viewing and grouping items
  • history and pattern of viewing for self adapting
  • screen space needed for maximum efficient viewing of object

The data base system will need to track dozens of object attributes, and it will need quick access to the objects for predicting new moves. Speed must be at a minimum of one frame per second ( typically 1/30s). There are several ways to get started without over building this concept and this is the method that I currently use. Dividing up the object responsibilities could alter this approach, and it is only offered as a first start. This allows global tracking and analysis of when objects are moved or changed, and provides many inter operations between objects for self layout adjustment of data. ISSUE: Much more on this later. Also, how does LG track objects and operations?

4) Self adjusting layouts

The concept and definition of a local object is defined in section 2. Self adjusting layout of local objects is the most fundamental issue that needs to be implemented before any other part of a new 3D type of design can take place. It’s also the easiest part to implement as there are several solutions for displaying objects in nicely formatted rows and columns on the screen. Morphing transitions can also be added for good and useful visual transitions that don’t disturb spatial awareness, and to provide pleasurable use of graphics. This is a subjective subject, but from going over various usability reports, there is a level of “eye-candy” that is desirable as long as it does not slow down the user and can optionally be turned off or over rode. (This issue is covered later in section 6.)

Example of self adjusting objects – If you have 4 documents in a folder, and the containing window is maximized, then I want to see four quarter screen views of the actual documents. On the other hand, if I’m viewing 30 documents in a folder, then the display should present the items in a list box format. (Including use of heuristics such as last file used.) The idea is that the display will automatically adjust the layout based on many factors. This will provide the user with the optimum layout so as to minimize window thrashing.

I also group the concept of self adjusting layouts under the heading of a structured design approach in that objects need to be constantly aware of their position and scale so they can self adjust their position and scale automatically to changing conditions. If the objects take into account both the global and local conditions, I believe that object occlusion/over-lap can be reduced to zero when navigating hierarchies/groups of data.

ISSUE: Needs better reasoning and examples. Also, what images can legally be included without copyright problem.

5) Layout schemes for a 3D type of file manager

There seems to be a few clever schemes for the lay out 3D data for viewing, but none of them lend themselves to a useful 3D type of user interface implementation which requires a tremendous amount of visual interaction. Many of these 3D/4D layouts use varying depth projections and basic visualization techniques for viewing standard 3D data at a few different vantage points with various clustering techniques, but interaction is limited as most of these designs target specific problems as typically seen in scientific applications.

Interesting multidimensional data visualization methods.

  • hyperbolic distortion/display
  • perspective wall, cone trees
  • 4D graphing, virtual desktops, scatter plots
  • partial hierarchal displays and automatic grouping methods
  • spatial user interfaces

ISSUE: Perhaps last bullet item needs its own break out?

Note on Hyperbolic displays – these schemes can handle a high amount of object nodes, and they give great visual feedback for testing methods of visual object manipulation in general. This type of display is a basic start for complex structural ideas, but not using hyperbolic geometry. I think there’s good visuals for exploring some ideas.

However, most of the above approaches can’t meld with a user interface and here are several issues that need to considered for an efficient file manger design:

  • prevent object occlusion when navigating so no overlapping of windows
  • flexible navigation, but not too much freedom - solid land marks
  • don’t use monolithic design which does not allow mixed mode visualizations schemes or sub dividing sections on the screen
  • inner-communication between local objects for self adaptation
  • complex nesting of objects for advanced layouts leveraging spatial capabilities

There are various tree types of layout visualizations that seem to offer the most flexibility for building structured layout arrangements. Tree type visualizations are easy to add to a design as they can be built in any dimensional direction like most graphic construction primitives. ISSUE: More experiments and user feedback on efficiency of maneuvering schemes. Samples needed.

6) Navigating in a 3D file manager

As mentioned earlier, the desktop interface and the file manager need to be combined so the interface is a seamless experience that incorporates the best of both models. This is the bases of a common visualization method for accessing all types of data.

I’ve been experimenting with 2.5D designs (zooming interfaces) where the windows stay perpendicular to the z axis, and I think this makes a good basis for a multidimensional user interface. Having a zooming routine that allows random drilling does not add value, but being able to control the layout of objects as the display is zooming in and out is where a balance is needed.

ISSUE: I’m not sure how tilt distortions work with a zooming type of interface, but I can see a method for morphing the tilt back and forth to flat depending on where its at in the directory system. I know that LG and others use this technique, but I think it needs to be turned off while actually navigating. I do think the tilt effect works if you keep it at the top level such as on the desktop. This is probably a low priority compared to other parts of the design

ISSUE: Need an example and better reasoning for the theory of using a 2.5D design. Make experiments and collect usability testing.

In order for efficient navigation to work, I also see these categories need addressing:

  • simple structural elements need to be added for rigid way point navigation
  • limiting the freedom of choices of layout and navigation
  • user level control of user interface – levels
  • inability to get lost by having a home plate to easily come back to
  • future support of new HCI devices for better z axis control

One other note. The user should never have to wait for any visualization effect to be completed. Any mouse gestures on context sensitive objects that move or involve animated transitions should be linear in speed to the user’s movement so that it adapts to more advanced users and personal mouse gesture preferences. At all times, the transitions should have the ability to be over rode by the user so the task is instantly completed. This is more of a basic human perception issue and is related to human intuition and cognitive load.

(robertsc - 11/28/05)

Topic FileManager . { Edit | Ref-By | Printable | Diffs r10 < r9 < r8 < r7 < r6 | More }
 XML java.net RSS

Revision r10 - 29 Nov 2005 - 03:17:06 - Main.robertsc
Parents: WebHome > ProjectLookingGlass