/* * Copyright 2011 Uwe Krueger. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.mandelsoft.mand.tool; import javax.swing.tree.TreePath; import com.mandelsoft.mand.QualifiedMandelName; import com.mandelsoft.mand.util.MandelListFolder; import com.mandelsoft.mand.util.MandelListFolderTree; import com.mandelsoft.swing.DnDTreeModel; /** * * @author Uwe Krueger */ public interface MandelListFolderTreeModel extends DnDTreeModel { void clear(); MandelListFolderTree getFolderTree(); MandelListTableModel getMandelListModel(Object folder); MandelListTableModel getRootModel(); boolean isLocalFolder(MandelListFolder f); boolean isModifiable(); void setModifiable(boolean modifiable); MandelListFolder getChild(MandelListFolder parent, String name); MandelListFolderTreeModel getEffectiveFolderTreeModel(); //////////////////////////////////////////////////////////////// // tree interface //////////////////////////////////////////////////////////////// MandelListFolder getRoot(); boolean isLeaf(Object node); Object getChild(Object parent, int index); int getChildCount(Object parent); int getIndexOfChild(Object parent, Object child); void valueForPathChanged(TreePath path, Object newValue); //////////////////////////////////////////////////////////////// // extended tree interface //////////////////////////////////////////////////////////////// boolean isPathModifiable(TreePath path); boolean isPathListModifiable(TreePath path); boolean isPathTransferable(TreePath path); //////////////////////////////////////////////////////////////// // list ops //////////////////////////////////////////////////////////////// void add(MandelListFolder f, QualifiedMandelName name); void addAll(MandelListFolder f, QualifiedMandelName[] list); void remove(MandelListFolder f, QualifiedMandelName name); //////////////////////////////////////////////////////////////// // folder ops //////////////////////////////////////////////////////////////// MandelListFolder insertFolder(String name, MandelListFolder parent); boolean insertFolders(int index, MandelListFolder[] folders, MandelListFolder parent); void moveFolders(int index, MandelListFolder[] folders, MandelListFolder parent); void removeFolder(MandelListFolder node); void setThumbnailName(MandelListFolder folder, QualifiedMandelName name); boolean isMoving(); void save(); void addMandelListFolderTreeModelListener(MandelListFolderTreeModelListener l); void removeMandelListFolderTreeModelListener(MandelListFolderTreeModelListener l); MandelListFolderTreeModelListener[] getMandelListFolderTreeModelListeners(); static public class Util { public static boolean folderMetaModifiable(MandelListFolderTreeModel m, TreePath p) { if (p==null) return false; return m.isPathModifiable(p) && m.isPathEditable(p); } public static boolean folderModifiable(MandelListFolderTreeModel m, TreePath p) { if (p==null) return false; return m.isPathModifiable(p); } public static boolean folderContentModifiable(MandelListFolderTreeModel m, TreePath p) { if (p==null) return false; return m.isPathListModifiable(p); //&&!((MandelListFolder)p.getLastPathComponent()).isLeaf(); } } }