|
From: Robert E. <sky...@us...> - 2006-04-27 14:07:46
|
Update of /cvsroot/jcommander/plugins/org.jcommander.phileas.bookmarks/src/org/jcommander/phileas/bookmarks In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18683/src/org/jcommander/phileas/bookmarks Modified Files: DefaultBookmark.java Added Files: UserDynamicBookmarksGenerator.java ShellFolderBookmark.java Log Message: Implemented the following feature requests: [ 1477692 ] Provide bookmark group with common user directories [ 1475436 ] [win32] User bookmark group win32 specific entries --- NEW FILE: UserDynamicBookmarksGenerator.java --- /* * Created on Apr 27, 2006 */ package org.jcommander.phileas.bookmarks; import java.io.*; import java.util.ArrayList; import javax.swing.filechooser.FileSystemView; import org.eclipse.core.runtime.*; import sun.awt.shell.ShellFolder; /** * This is a content type generator for user specific directories. * * @author sky_halud */ public class UserDynamicBookmarksGenerator implements IDynamicBookmarksGenerator { /** * @return the list of OS visible partitions */ public Bookmark[] generateContent() { ArrayList bookmarks = new ArrayList(); /* Create the user's home directory bookmark */ Bookmark homeBookmark = createDefaultBookmark("Home", System.getProperty("user.home")); bookmarks.add(homeBookmark); /* Create the user's tmp directory bookmark */ Bookmark tmpBookmark = createDefaultBookmark("Temporary Directory", System.getProperty("java.io.tmpdir")); bookmarks.add(tmpBookmark); /********************************************************************************* * WARNING * Next follows a hack that works only for Windows and probably only on Sun JREs *********************************************************************************/ if(Platform.getOS().equals(Platform.OS_WIN32)){ FileSystemView fsView = FileSystemView.getFileSystemView(); File[] fsRoots = fsView.getRoots(); if(fsRoots != null && fsRoots[0].getName().equalsIgnoreCase("Desktop")) { /* Create the desktop bookmark */ Bookmark desktopBookmark = createDefaultBookmark("Desktop", fsRoots[0].getAbsolutePath()); bookmarks.add(desktopBookmark); /* Create the My Documents bookmark */ File myDocsFile = findFolder(fsView, "My Documents", fsRoots[0]); if(myDocsFile != null) { Bookmark mydocsBookmark = createDefaultBookmark("My Documents", myDocsFile.getAbsolutePath()); bookmarks.add(mydocsBookmark); } /* Create My Network Places bookmark */ File myNetworkPlacesFile = findFolder(fsView, "My Network Places", fsRoots[0]); if(myNetworkPlacesFile != null) { DefaultBookmark myNetworkPlacesBookmark = createDefaultBookmark("My Network Places", myDocsFile.getAbsolutePath()); myNetworkPlacesBookmark.setDynamic(true); myNetworkPlacesBookmark.setGroup(true); bookmarks.add(myNetworkPlacesBookmark); File[] children = fsView.getFiles(myNetworkPlacesFile, false); if(children != null) { for(int i=0;i<children.length;i++) { DefaultBookmark crtBookmark = createShellFolderBookmark(children[i]); crtBookmark.setParent(myNetworkPlacesBookmark); myNetworkPlacesBookmark.addChild(crtBookmark); } } } } } return (Bookmark[])bookmarks.toArray(new Bookmark[]{}); } private DefaultBookmark createShellFolderBookmark(File file) { if(file instanceof ShellFolder) { return new ShellFolderBookmark((ShellFolder)file); } else { return null; } } private File findFolder(FileSystemView fsView, String name, File parent) { File[] children = fsView.getFiles(parent, false); for(int i=0;i<children.length;i++) { if(children[i].getName().equalsIgnoreCase(name) || children[i].toString().equalsIgnoreCase(name)) { return children[i]; } } return null; } protected DefaultBookmark createDefaultBookmark(String label, String value) { DefaultBookmark bmk = new DefaultBookmark(); bmk.setLabel(label); bmk.setValue(value); bmk.setGroup(false); return bmk; } } Index: DefaultBookmark.java =================================================================== RCS file: /cvsroot/jcommander/plugins/org.jcommander.phileas.bookmarks/src/org/jcommander/phileas/bookmarks/DefaultBookmark.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** DefaultBookmark.java 21 Mar 2006 17:01:13 -0000 1.5 --- DefaultBookmark.java 27 Apr 2006 14:07:43 -0000 1.6 *************** *** 18,21 **** --- 18,22 ---- protected ImageDescriptor icon; protected boolean group=true; + private boolean dynamic; public DefaultBookmark(String text) { *************** *** 48,51 **** --- 49,56 ---- } + public void addChild(Bookmark child) { + this.children.add(child); + } + public void addChildren(Bookmark[] children) { for(int i=0;i<children.length;i++) { *************** *** 97,101 **** public boolean isDynamicGroup() { ! return false; } --- 102,110 ---- public boolean isDynamicGroup() { ! return dynamic; ! } ! ! public void setDynamic(boolean dynamic) { ! this.dynamic = dynamic; } *************** *** 107,109 **** --- 116,122 ---- this.group = group; } + + public void setParent(Bookmark parent) { + this.parent = parent; + } } --- NEW FILE: ShellFolderBookmark.java --- package org.jcommander.phileas.bookmarks; import java.io.FileNotFoundException; import sun.awt.shell.ShellFolder; /** * An implementation of the Bookmark class which supports ShellFolder files. * * WARNING Please note that this is most probably a Windows specific feature that works only on Sun JREs. * * @author sky_halud */ public class ShellFolderBookmark extends DefaultBookmark{ protected ShellFolder shellFolder; public ShellFolderBookmark(ShellFolder shellFolder) { this.shellFolder = shellFolder; setLabel(shellFolder.getDisplayName()); } public String getValue() { try { return shellFolder.getLinkLocation().getAbsolutePath(); } catch (FileNotFoundException e) { return ""; } } } |