From b3471aa9c523af7178394a7d5eb79582dea3617a Mon Sep 17 00:00:00 2001 From: fforcina Date: Fri, 2 Oct 2020 12:39:25 +0200 Subject: [PATCH] upgrade --- resources/detail.png | Bin 0 -> 17722 bytes resources/overview.png | Bin 0 -> 113777 bytes src/bookmark/constant/Constant.java | 3 + src/bookmark/utils/PathController.java | 41 ++ src/bookmark/views/BookmarkView.java | 607 +++++-------------------- src/bookmark/views/Mark.java | 29 ++ src/bookmark/views/TreeObject.java | 21 +- src/bookmark/views/TreeParent.java | 33 +- 8 files changed, 224 insertions(+), 510 deletions(-) create mode 100644 resources/detail.png create mode 100644 resources/overview.png create mode 100644 src/bookmark/utils/PathController.java create mode 100644 src/bookmark/views/Mark.java diff --git a/resources/detail.png b/resources/detail.png new file mode 100644 index 0000000000000000000000000000000000000000..ad542f335e92fc392c1107bcf7602ffbb5519baf GIT binary patch literal 17722 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

dT;*c{963xk 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 QNr2-8Q>(M3r*HiDAL9mw&j0`b literal 0 HcmV?d00001 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(); } public void addChild(TreeObject child) { - children.add(child); - child.setParent(this); + boolean absent = true; + for (TreeObject elem : children) { + if ( + ( + elem.getName().equals(child.getName()) + || PathController.conversion(elem.getName()).equals(child.getName()) + ) + && elem.getProjectName().equals(child.getProjectName()) + ) { + absent = false; + break; + } + } + if (absent) { + children.add(child); + child.setParent(this); + } } public void removeChild(TreeObject child) { @@ -52,8 +68,7 @@ public boolean hasChildren() { /** * Add child to specified target node * - * Use recursion way to add child, if child is leaf, to find his parent and - * add to its parent + * Use recursion way to add child, if child is leaf, to find his parent and add to its parent * * @param obj * @param path @@ -61,7 +76,7 @@ public boolean hasChildren() { public boolean addChild(TreeObject target, TreeObject child) { TreeObject[] children = this.getChildren(); for (int i = 0; i < children.length; i++) { - if (children[i].flag == Constant.PARENT) { + if (children[i].getFlag() == Constant.PARENT) { // if target is folder if (target == children[i]) { // insert child @@ -74,7 +89,7 @@ public boolean addChild(TreeObject target, TreeObject child) { if (is_ok) { return true; } - } else if (children[i].flag == Constant.CHILD) { + } else if (children[i].getFlag() == Constant.CHILD) { if (children[i] == target) { TreeParent parent = children[i].getParent(); parent.addChild(child); @@ -94,7 +109,7 @@ public boolean addChild(TreeObject target, TreeObject child) { public boolean removeSelectedChild(TreeObject target) { TreeObject[] children = this.getChildren(); for (int i = 0; i < children.length; i++) { - if (children[i].flag == Constant.PARENT) { + if (children[i].getFlag() == Constant.PARENT) { // if target is folder if (target == children[i]) { // delete child @@ -107,7 +122,7 @@ public boolean removeSelectedChild(TreeObject target) { if (is_ok) { return true; } - } else if (children[i].flag == Constant.CHILD) { + } else if (children[i].getFlag() == Constant.CHILD) { if (children[i] == target) { TreeParent parent = children[i].getParent(); parent.removeChild(target);