Package org.freeplane.plugin.workspace.components

Source Code of org.freeplane.plugin.workspace.components.ExpandedStateHandler

package org.freeplane.plugin.workspace.components;

import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;

import javax.swing.JTree;
import javax.swing.event.TreeExpansionEvent;
import javax.swing.event.TreeExpansionListener;
import javax.swing.event.TreeModelEvent;

import org.freeplane.core.util.LogUtils;
import org.freeplane.plugin.workspace.WorkspaceController;
import org.freeplane.plugin.workspace.model.AWorkspaceTreeNode;
import org.freeplane.plugin.workspace.model.WorkspaceModel;
import org.freeplane.plugin.workspace.model.WorkspaceModelEvent;
import org.freeplane.plugin.workspace.model.WorkspaceModelListener;
import org.freeplane.plugin.workspace.model.WorkspaceTreeModel;

public class ExpandedStateHandler implements TreeExpansionListener, WorkspaceModelListener {
  private Set<String> expandedNodeKeys = new LinkedHashSet<String>();
  private final JTree treeView;
 
  public ExpandedStateHandler(JTree tree) {
    this.treeView = tree;
  }

  public void treeExpanded(TreeExpansionEvent event) {
    final AWorkspaceTreeNode node = (AWorkspaceTreeNode)event.getPath().getLastPathComponent();
    expandedNodeKeys.add(node.getKey());
  }

  public void treeCollapsed(TreeExpansionEvent event) {
    final AWorkspaceTreeNode node = (AWorkspaceTreeNode)event.getPath().getLastPathComponent();
    expandedNodeKeys.remove(node.getKey());
   
  }

  public void treeNodesChanged(TreeModelEvent e) {
    //setExpandedState((WorkspaceModelEvent) e);
  }

  public void treeNodesInserted(TreeModelEvent e) {
    //setExpandedState((WorkspaceModelEvent) e);
  }

  public void treeNodesRemoved(TreeModelEvent e) {
    //setExpandedState((WorkspaceModelEvent) e);
  }

  public void treeStructureChanged(TreeModelEvent e) {
    WorkspaceTreeModel treeModel = WorkspaceController.getCurrentModel().getRoot().getModel();
    setExpandedStates(treeModel, false);
  }

  public void projectAdded(WorkspaceModelEvent event) {
    //setExpandedState(event);
    String key = ((AWorkspaceTreeNode) event.getTreePath().getLastPathComponent()).getKey()+"/"+event.getProject().getProjectID();
    expandedNodeKeys.add(key);
  }

  public void projectRemoved(WorkspaceModelEvent event) {
    //setExpandedState(event);
  }

  public void registerModel(WorkspaceModel model) {
    if(model == null) {
      return;
    }
    model.removeTreeModelListener(this);
    model.addWorldModelListener(this);   
  }
 
  public void setExpandedStates(WorkspaceTreeModel targetModel, boolean cleanInvalidEntries) {
    Iterator<String> iter = expandedNodeKeys.iterator();
    try {
      while(iter.hasNext()) {
        AWorkspaceTreeNode node = targetModel.getNode(iter.next());
        if(node != null) {
          treeView.expandPath(node.getTreePath());
        }
        else {
          if(cleanInvalidEntries) {
            iter.remove();
          }
        }
      }
    }
    catch (Exception e) {
      LogUtils.warn("Exception in org.freeplane.plugin.workspace.components.ExpandedStateHandler.setExpandedStates(targetModel, cleanInvalidEntries): aborted");
    }
  }

}
TOP

Related Classes of org.freeplane.plugin.workspace.components.ExpandedStateHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.