diff --git a/resources/detail.png b/resources/detail.png new file mode 100644 index 0000000..ad542f3 Binary files /dev/null and b/resources/detail.png differ diff --git a/resources/overview.png b/resources/overview.png new file mode 100644 index 0000000..9eb554f Binary files /dev/null and b/resources/overview.png differ diff --git a/src/bookmark/constant/Constant.java b/src/bookmark/constant/Constant.java index 4ba091e..55923b2 100644 --- a/src/bookmark/constant/Constant.java +++ b/src/bookmark/constant/Constant.java @@ -5,4 +5,7 @@ public class Constant { public static final int PARENT = 1; public static final int CHILD = 0; + public static final String ID = "bookmark.views.BookmarkView"; + public static final String DATA_STORE_KEY = "bookmark_datasource"; + } diff --git a/src/bookmark/utils/PathController.java b/src/bookmark/utils/PathController.java new file mode 100644 index 0000000..73a6a6d --- /dev/null +++ b/src/bookmark/utils/PathController.java @@ -0,0 +1,41 @@ +package bookmark.utils; + +import java.io.File; + +public class PathController { + + public static String conversion(String path) { + String ret = path; + String separatore = File.separator; + String sepAlfa = "/"; + String sepBeta = "\\"; + if (path.lastIndexOf(sepAlfa) != -1 || path.lastIndexOf(sepBeta) != -1) { + if (path.lastIndexOf(separatore) == -1) { + // devo switchare + if (separatore.equals(sepAlfa)) { + ret = path.replace(sepBeta, sepAlfa); + } else if (separatore.equals(sepBeta)) { + ret = path.replace(sepAlfa, sepBeta); + } + } + } + return ret; + } + + public static boolean check(String path) { + boolean ret = false; + String sepCheck = ""; + String sepAlfa = "/"; + String sepBeta = "\\"; + if (!File.separator.equals(sepAlfa)) { + sepCheck = sepAlfa; + } else if (!File.separator.equals(sepBeta)) { + sepCheck = sepBeta; + } + if (!sepCheck.equals("") && path.lastIndexOf(sepCheck) != -1) { + ret = true; + } + return ret; + } + +} diff --git a/src/bookmark/views/BookmarkView.java b/src/bookmark/views/BookmarkView.java index b28142b..4a40232 100644 --- a/src/bookmark/views/BookmarkView.java +++ b/src/bookmark/views/BookmarkView.java @@ -1,64 +1,52 @@ package bookmark.views; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.ui.part.*; -import org.eclipse.jface.viewers.*; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.graphics.Image; -import org.eclipse.jface.action.*; -import org.eclipse.jface.dialogs.InputDialog; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.ui.*; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.swt.SWT; -import org.eclipse.core.runtime.Path; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.ObjectInputStream; import org.eclipse.core.runtime.preferences.InstanceScope; -import org.eclipse.ui.part.FileEditorInput; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.core.resources.ResourcesPlugin; -import org.osgi.service.prefs.BackingStoreException; +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IDoubleClickListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.part.ViewPart; import org.osgi.service.prefs.Preferences; import com.google.gson.Gson; import bookmark.constant.Constant; -import bookmark.utils.ValidationUtils; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; - -import org.eclipse.jdt.core.ICompilationUnit; +import bookmark.views.action.AddAllBookmarkAction; +import bookmark.views.action.AddBookmarkAction; +import bookmark.views.action.AddFolderAction; +import bookmark.views.action.CutAction; +import bookmark.views.action.DeleteAction; +import bookmark.views.action.DoubleClickAction; +import bookmark.views.action.PasteAction; +import bookmark.views.action.RenameAction; +import bookmark.views.viewer.NameSorter; +import bookmark.views.viewer.ViewContentProvider; +import bookmark.views.viewer.ViewLabelProvider; /** - * This sample class demonstrates how to plug-in a new workbench view. The view - * shows data obtained from the model. The sample creates a dummy model on the - * fly, but a real implementation would connect to the model available either in - * this or another plug-in (e.g. the workspace). The view is connected to the - * model using a content provider. + * This sample class demonstrates how to plug-in a new workbench view. The view shows data obtained from the model. The sample creates a dummy model on the fly, but a real implementation would connect + * to the model available either in this or another plug-in (e.g. the workspace). The view is connected to the model using a content provider. *
- * The view uses a label provider to define how model objects should be - * presented in the view. Each view can present the same model objects using - * different labels and icons, if needed. Alternatively, a single label provider - * can be shared between views in order to ensure that objects of the same type - * are presented in the same way everywhere. + * The view uses a label provider to define how model objects should be presented in the view. Each view can present the same model objects using different labels and icons, if needed. Alternatively, + * a single label provider can be shared between views in order to ensure that objects of the same type are presented in the same way everywhere. *
*/
-
public class BookmarkView extends ViewPart {
- /**
- * The ID of the view as specified by the extension.
- */
- public static final String ID = "bookmark.views.BookmarkView";
- public static final String DATA_STORE_KEY = "bookmark_datasource";
-
private TreeViewer viewer;
private Action addFolderAction;
@@ -68,57 +56,10 @@ public class BookmarkView extends ViewPart {
private Action renameAction;
private Action doubleClickAction;
- class ViewContentProvider implements IStructuredContentProvider, ITreeContentProvider {
-
- public void inputChanged(Viewer v, Object oldInput, Object newInput) {
- }
-
- public void dispose() {
- }
+ private Action cutAction;
+ private Action pasteAction;
+ private Mark marker;
- public Object[] getElements(Object parent) {
- return getChildren(parent);
- }
-
- public Object getParent(Object child) {
- if (child instanceof TreeObject) {
- return ((TreeObject) child).getParent();
- }
- return null;
- }
-
- public Object[] getChildren(Object parent) {
- if (parent instanceof TreeParent) {
- return ((TreeParent) parent).getChildren();
- }
- return new Object[0];
- }
-
- public boolean hasChildren(Object parent) {
- if (parent instanceof TreeParent)
- return ((TreeParent) parent).hasChildren();
- return false;
- }
- }
-
- class ViewLabelProvider extends LabelProvider {
-
- public String getText(Object obj) {
- return obj.toString();
- }
-
- public Image getImage(Object obj) {
- String imageKey = ISharedImages.IMG_OBJ_FILE;
- if (obj instanceof TreeParent)
- imageKey = ISharedImages.IMG_OBJ_FOLDER;
- return PlatformUI.getWorkbench().getSharedImages().getImage(imageKey);
- // if need to change customize image
- // return new Image(null, new FileInputStream("images/file.gif"));
- }
- }
-
- class NameSorter extends ViewerSorter {
- }
/**
* The constructor.
@@ -127,8 +68,7 @@ public BookmarkView() {
}
/**
- * This is a callback that will allow us to create the viewer and initialize
- * it.
+ * This is a callback that will allow us to create the viewer and initialize it.
*/
public void createPartControl(Composite parent) {
viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
@@ -144,10 +84,61 @@ public void createPartControl(Composite parent) {
// Create the help context id for the viewer's control
PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), "bookmark.viewer");
- makeActions();
- hookContextMenu();
- hookDoubleClickAction();
- contributeToActionBars();
+ this.makeActions();
+ this.hookContextMenu();
+ this.hookDoubleClickAction();
+ this.contributeToActionBars();
+ }
+
+ /**
+ * Passing the focus request to the viewer's control.
+ */
+ public void setFocus() {
+ viewer.getControl().setFocus();
+ }
+
+ private TreeParent loadPersistantData() {
+ Preferences prefs = InstanceScope.INSTANCE.getNode(Constant.ID);
+
+ String json_str = prefs.get(Constant.DATA_STORE_KEY, "");
+
+ if (json_str == "") {
+ // no data source yet, do initialization
+ TreeParent invisibleRoot = new TreeParent("");
+ return invisibleRoot;
+ } else {
+ Gson gson = new Gson();
+ byte[] byteDataArray = gson.fromJson(json_str, byte[].class);
+
+ // deserialize object from byteDataArray
+ ByteArrayInputStream b = new ByteArrayInputStream(byteDataArray);
+ ObjectInputStream o;
+ TreeParent invisibleRoot = null;
+ try {
+ o = new ObjectInputStream(b);
+ invisibleRoot = (TreeParent) o.readObject();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (ClassNotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return invisibleRoot;
+ }
+ }
+
+ @SuppressWarnings("deprecation")
+ private void makeActions() {
+ this.addFolderAction = new AddFolderAction(viewer);
+ this.addBookmarkAction = new AddBookmarkAction(viewer, getSite().getWorkbenchWindow().getSelectionService());
+ this.addAllBookmarkAction = new AddAllBookmarkAction(viewer);
+ this.deleteAction = new DeleteAction(viewer);
+ this.renameAction = new RenameAction(viewer);
+ this.doubleClickAction = new DoubleClickAction(viewer);
+ this.marker = new Mark();
+ this.cutAction = new CutAction(viewer, marker);
+ this.pasteAction = new PasteAction(viewer, marker);
}
private void hookContextMenu() {
@@ -165,6 +156,9 @@ public void menuAboutToShow(IMenuManager manager) {
manager.add(deleteAction);
manager.add(renameAction);
manager.add(addAllBookmarkAction);
+
+ manager.add(cutAction);
+ manager.add(pasteAction);
} else {
manager.add(deleteAction);
}
@@ -172,6 +166,9 @@ public void menuAboutToShow(IMenuManager manager) {
manager.add(addBookmarkAction);
manager.add(addFolderAction);
manager.add(addAllBookmarkAction);
+
+ manager.add(cutAction);
+ manager.add(pasteAction);
}
}
});
@@ -180,6 +177,14 @@ public void menuAboutToShow(IMenuManager manager) {
getSite().registerContextMenu(menuMgr, viewer);
}
+ private void hookDoubleClickAction() {
+ viewer.addDoubleClickListener(new IDoubleClickListener() {
+ public void doubleClick(DoubleClickEvent event) {
+ doubleClickAction.run();
+ }
+ });
+ }
+
private void contributeToActionBars() {
IActionBars bars = getViewSite().getActionBars();
fillLocalPullDown(bars.getMenuManager());
@@ -194,403 +199,9 @@ private void fillLocalToolBar(IToolBarManager manager) {
manager.add(this.addBookmarkAction);
manager.add(this.addFolderAction);
manager.add(this.deleteAction);
+
+ manager.add(this.cutAction);
+ manager.add(this.pasteAction);
}
- @SuppressWarnings("deprecation")
- private void makeActions() {
-
- // remove selected folder or bookmark
- this.deleteAction = new Action() {
- public void run() {
- // get invisibleRoot
- TreeParent invisibleRoot = (TreeParent) viewer.getInput();
-
- // get selection
- ISelection selection = viewer.getSelection();
- Object obj = ((IStructuredSelection) selection).getFirstElement();
- if (obj == null) {
- showMessage("No selection in Bookmark View.");
- } else {
- TreeObject target = (TreeObject) obj;
- // confirm dialog
- String title = "Confirm";
- String question = "Do you really want to delelte this whole node?";
- boolean answer = MessageDialog.openConfirm(null, title, question);
- if (answer) {
- invisibleRoot.removeSelectedChild(target);
- }
- // keep expand situation
- Object[] expandedElements = viewer.getExpandedElements();
- TreePath[] expandedTreePaths = viewer.getExpandedTreePaths();
-
- // update data source
- viewer.setInput(invisibleRoot);
-
- viewer.setExpandedElements(expandedElements);
- viewer.setExpandedTreePaths(expandedTreePaths);
-
- // save to persistent
- BookmarkView.savePersistantData(invisibleRoot);
- }
- }
- };
- this.deleteAction.setText("Delete");
- this.deleteAction.setToolTipText("Delete selected folder or bookmark.");
- this.deleteAction.setImageDescriptor(
- PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_ETOOL_DELETE));
-
- // use user input to add parent
- this.addFolderAction = new Action() {
- public void run() {
- String parentName;
- // create an input dialog to get user input
- String dialogTitle = "Input";
- String dialogMessage = "Please enter folder name:";
- String initialValue = "";
- InputDialog dlg = new InputDialog(null, dialogTitle, dialogMessage, initialValue,
- ValidationUtils.getIInputValidatorInstance());
- dlg.open();
- if (dlg.getReturnCode() != Window.OK) {
- return;
- } else {
- parentName = dlg.getValue();
- }
-
- // new a folder
- TreeParent newParent = new TreeParent(parentName);
- // get invisible root
- TreeParent invisibleRoot = (TreeParent) viewer.getInput();
-
- // get selection
- ISelection selection = viewer.getSelection();
- Object obj = ((IStructuredSelection) selection).getFirstElement();
- if (obj == null) {
- // no selection, default to add to the invisibleRoot
- invisibleRoot.addChild(newParent);
- } else {
- invisibleRoot.addChild((TreeObject) obj, newParent);
- }
-
- // keep expand situation
- Object[] expandedElements = viewer.getExpandedElements();
- TreePath[] expandedTreePaths = viewer.getExpandedTreePaths();
-
- // update data source
- viewer.setInput(invisibleRoot);
-
- viewer.setExpandedElements(expandedElements);
- viewer.setExpandedTreePaths(expandedTreePaths);
-
- // save to persistent
- BookmarkView.savePersistantData(invisibleRoot);
- }
- };
- this.addFolderAction.setText("Add folder here");
- this.addFolderAction.setToolTipText("Add folder here");
- this.addFolderAction.setImageDescriptor(
- PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJ_FOLDER));
-
- // add book mark to selected parent
- this.addBookmarkAction = new Action() {
- public void run() {
- // get active editor info
- String relativePath = "";
- String projectName = "";
-
- IWorkbench wb = PlatformUI.getWorkbench();
- IWorkbenchWindow window = wb.getActiveWorkbenchWindow();
- IWorkbenchPage page = window.getActivePage();
- IEditorPart editor = page.getActiveEditor();
-
- if (editor != null) {
- IFileEditorInput input = (IFileEditorInput) editor.getEditorInput();
- IFile file = input.getFile();
- relativePath = file.getProjectRelativePath().toOSString();
- projectName = file.getProject().getName();
- } else {
- // check selection from package explorer
- ISelectionService service = getSite().getWorkbenchWindow().getSelectionService();
- IStructuredSelection packageExploerSelection = (IStructuredSelection) service
- .getSelection("org.eclipse.jdt.ui.PackageExplorer");
- if (packageExploerSelection != null) {
- Object obj = packageExploerSelection.getFirstElement();
- if (obj == null) {
- showMessage("No selection in package explorer");
- return;
- } else {
- // get file info for selection from package explorer
- IResource resource = ((ICompilationUnit) obj).getResource();
-
- if (resource.getType() == IResource.FILE) {
- IFile ifile = (IFile) resource;
- relativePath = ifile.getProjectRelativePath().toOSString();
- projectName = ifile.getProject().getName();
- }
- }
- } else {
- showMessage("No active editor or selection in package explorer");
- return;
- }
- }
-
- // create leaf with file info
- TreeObject child = new TreeObject(relativePath, projectName);
-
- // get invisibleRoot
- TreeParent invisibleRoot = (TreeParent) viewer.getInput();
-
- // get selection
- ISelection selection = viewer.getSelection();
- Object obj = ((IStructuredSelection) selection).getFirstElement();
- if (obj == null) {
- // default to insert invisibleRoot
- invisibleRoot.addChild(child);
- } else {
- TreeObject targetParent = (TreeObject) obj;
- invisibleRoot.addChild(targetParent, child);
- }
-
- // keep expand situation
- Object[] expandedElements = viewer.getExpandedElements();
- TreePath[] expandedTreePaths = viewer.getExpandedTreePaths();
-
- // update data source
- viewer.setInput(invisibleRoot);
-
- viewer.setExpandedElements(expandedElements);
- viewer.setExpandedTreePaths(expandedTreePaths);
-
- // save to persistent
- BookmarkView.savePersistantData(invisibleRoot);
- }
- };
- this.addBookmarkAction.setText("Add bookmark here");
- this.addBookmarkAction.setToolTipText("Add bookmark here");
- this.addBookmarkAction.setImageDescriptor(
- PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJS_BKMRK_TSK));
-
- addAllBookmarkAction = new Action() {
- public void run() {
- // get active editor info
- String relativePath = "";
- String projectName = "";
-
- IWorkbench wb = PlatformUI.getWorkbench();
- IWorkbenchWindow window = wb.getActiveWorkbenchWindow();
- IWorkbenchPage page = window.getActivePage();
- IEditorPart[] editors = page.getEditors();
- if (editors != null) {
- for (int i = 0; i < editors.length; i++) {
- IEditorPart editor = editors[i];
-
- IFileEditorInput input = (IFileEditorInput) editor.getEditorInput();
- IFile file = input.getFile();
- relativePath = file.getProjectRelativePath().toOSString();
- projectName = file.getProject().getName();
-
- // create leaf with file info
- TreeObject child = new TreeObject(relativePath, projectName);
-
- // get invisibleRoot
- TreeParent invisibleRoot = (TreeParent) viewer.getInput();
-
- // get selection
- ISelection selection = viewer.getSelection();
- Object obj = ((IStructuredSelection) selection).getFirstElement();
- if (obj == null) {
- // default to insert invisibleRoot
- invisibleRoot.addChild(child);
- } else {
- TreeObject targetParent = (TreeObject) obj;
- invisibleRoot.addChild(targetParent, child);
- }
-
- // keep expand situation
- Object[] expandedElements = viewer.getExpandedElements();
- TreePath[] expandedTreePaths = viewer.getExpandedTreePaths();
-
- // update data source
- viewer.setInput(invisibleRoot);
-
- viewer.setExpandedElements(expandedElements);
- viewer.setExpandedTreePaths(expandedTreePaths);
-
- // save to persistent
- BookmarkView.savePersistantData(invisibleRoot);
- }
- } else {
- showMessage("No active editor");
- return;
- }
-
- }
- };
- this.addAllBookmarkAction.setText("Add opened files here");
- this.addAllBookmarkAction.setToolTipText("Add opened files here");
- this.addAllBookmarkAction.setImageDescriptor(
- PlatformUI.getWorkbench().getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJS_BKMRK_TSK));
-
- // rename the node
- renameAction = new Action() {
- public void run() {
-
- ISelection selection = viewer.getSelection();
- Object obj = ((IStructuredSelection) selection).getFirstElement();
-
- if (obj != null) {
- TreeObject treeObject = (TreeObject) obj;
- if (treeObject.flag == Constant.PARENT) {
-
- String parentName = treeObject.getName();
- // create an input dialog to get user input
- String dialogTitle = "Input";
- String dialogMessage = "Please enter folder name:";
- InputDialog dlg = new InputDialog(null, dialogTitle, dialogMessage, parentName,
- ValidationUtils.getIInputValidatorInstance());
- dlg.open();
- if (dlg.getReturnCode() != Window.OK) {
- return;
- } else {
- parentName = dlg.getValue();
- }
-
- treeObject.setName(parentName);
- }
- }
-
- TreeParent invisibleRoot = (TreeParent) viewer.getInput();
- viewer.setInput(invisibleRoot);
- BookmarkView.savePersistantData(invisibleRoot);
- }
- };
-
- this.renameAction.setText("Rename");
- this.renameAction.setToolTipText("Rename the folder.");
-
- // double click action to open file
- doubleClickAction = new Action() {
- public void run() {
- ISelection selection = viewer.getSelection();
- Object obj = ((IStructuredSelection) selection).getFirstElement();
-
- if (obj != null) {
- TreeObject treeObject = (TreeObject) obj;
- if (treeObject.flag == 1) {
- // expand and collapse folder when double click
- if (viewer.getExpandedState(treeObject)) {
- viewer.collapseToLevel(treeObject, 1);
- } else {
- viewer.expandToLevel(treeObject, 1);
- }
- return;
- }
- String relativePath = treeObject.getName();
- IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot();
- IProject project = workspaceRoot.getProject(treeObject.getProjectName());
- IFile file1 = project.getFile((new Path(relativePath)));
- IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- IWorkbenchPage page = window.getActivePage();
- IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry()
- .getDefaultEditor(file1.getName());
-
- // if no right editor to find, use default text editor
- try {
- if (desc == null) {
- page.openEditor(new FileEditorInput(file1), "org.eclipse.ui.DefaultTextEditor");
- } else {
- page.openEditor(new FileEditorInput(file1), desc.getId());
- }
- } catch (PartInitException e) {
- e.printStackTrace();
- }
- }
- }
- };
- }
-
- private void hookDoubleClickAction() {
- viewer.addDoubleClickListener(new IDoubleClickListener() {
- public void doubleClick(DoubleClickEvent event) {
- doubleClickAction.run();
- }
- });
- }
-
- private void showMessage(String message) {
- MessageDialog.openInformation(viewer.getControl().getShell(), "Bookmark View", message);
- }
-
- /**
- * Passing the focus request to the viewer's control.
- */
- public void setFocus() {
- viewer.getControl().setFocus();
- }
-
- /**
- * Use eclipse Preferences API to make data persistent
- *
- * @param dataSource
- */
- private static void savePersistantData(TreeParent dataSource) {
- Preferences prefs = InstanceScope.INSTANCE.getNode(ID);
-
- // change object to string
- Gson gson = new Gson();
-
- // change object byte array
- ByteArrayOutputStream b = new ByteArrayOutputStream();
- ObjectOutputStream o;
- try {
- o = new ObjectOutputStream(b);
- o.writeObject(dataSource);
- } catch (IOException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
-
- byte[] byteDataArray = b.toByteArray();
-
- // use gson to change byte array to string
- String json_str = gson.toJson(byteDataArray);
-
- prefs.put(DATA_STORE_KEY, json_str);
- try {
- // store to disk
- prefs.flush();
- } catch (BackingStoreException e) {
- e.printStackTrace();
- }
- }
-
- private TreeParent loadPersistantData() {
- Preferences prefs = InstanceScope.INSTANCE.getNode(ID);
-
- String json_str = prefs.get(DATA_STORE_KEY, "");
-
- if (json_str == "") {
- // no data source yet, do initialization
- TreeParent invisibleRoot = new TreeParent("");
- return invisibleRoot;
- } else {
- Gson gson = new Gson();
- byte[] byteDataArray = gson.fromJson(json_str, byte[].class);
-
- // deserialize object from byteDataArray
- ByteArrayInputStream b = new ByteArrayInputStream(byteDataArray);
- ObjectInputStream o;
- TreeParent invisibleRoot = null;
- try {
- o = new ObjectInputStream(b);
- invisibleRoot = (TreeParent) o.readObject();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return invisibleRoot;
- }
- }
}
\ No newline at end of file
diff --git a/src/bookmark/views/Mark.java b/src/bookmark/views/Mark.java
new file mode 100644
index 0000000..27d3935
--- /dev/null
+++ b/src/bookmark/views/Mark.java
@@ -0,0 +1,29 @@
+package bookmark.views;
+
+public class Mark {
+
+ private TreeObject node;
+ private Boolean mode;
+
+ public TreeObject getNode() {
+ return node;
+ }
+
+ public void setNode(TreeObject node) {
+ this.node = node;
+ }
+
+ public Boolean getMode() {
+ return mode;
+ }
+
+ public void setMode(Boolean mode) {
+ this.mode = mode;
+ }
+
+ public void resetMark() {
+ this.node = null;
+ this.mode = null;
+ }
+
+}
\ No newline at end of file
diff --git a/src/bookmark/views/TreeObject.java b/src/bookmark/views/TreeObject.java
index 8c81d46..9d2eab0 100644
--- a/src/bookmark/views/TreeObject.java
+++ b/src/bookmark/views/TreeObject.java
@@ -17,9 +17,10 @@
*/
public class TreeObject implements IAdaptable, Serializable {
private static final long serialVersionUID = -4275221961856278045L;
- private String name;
+
private TreeParent parent;
- protected int flag;
+ private String name;
+ private int flag;
private String projectName;
public TreeObject(String name) {
@@ -42,6 +43,14 @@ public void setName(String name) {
this.name = name;
}
+ public int getFlag() {
+ return flag;
+ }
+
+ public void setFlag(int flag) {
+ this.flag = flag;
+ }
+
public String getProjectName() {
return this.projectName;
}
@@ -55,7 +64,13 @@ public TreeParent getParent() {
}
public String toString() {
- return getName();
+ StringBuffer sb = new StringBuffer();
+ if (!getProjectName().isEmpty()) {
+ sb.append(getProjectName());
+ sb.append(" > ");
+ }
+ sb.append(getName());
+ return sb.toString();
}
/**
diff --git a/src/bookmark/views/TreeParent.java b/src/bookmark/views/TreeParent.java
index 1b2972f..b4de25b 100644
--- a/src/bookmark/views/TreeParent.java
+++ b/src/bookmark/views/TreeParent.java
@@ -3,6 +3,7 @@
import java.util.ArrayList;
import bookmark.constant.Constant;
+import bookmark.utils.PathController;
/*
* The content provider class is responsible for
@@ -23,13 +24,28 @@ public class TreeParent extends TreeObject {
public TreeParent(String name) {
super(name);
- this.flag = Constant.PARENT;
+ this.setFlag(Constant.PARENT);
children = new ArrayList