Package org.freeplane.plugin.workspace.features

Source Code of org.freeplane.plugin.workspace.features.AWorkspaceModeExtension

package org.freeplane.plugin.workspace.features;

import java.net.URI;
import java.util.LinkedHashSet;
import java.util.Set;

import org.freeplane.core.extension.IExtension;
import org.freeplane.features.mode.ModeController;
import org.freeplane.plugin.workspace.components.IWorkspaceView;
import org.freeplane.plugin.workspace.event.AWorkspaceEvent;
import org.freeplane.plugin.workspace.event.IWorkspaceListener;
import org.freeplane.plugin.workspace.handler.IOController;
import org.freeplane.plugin.workspace.io.FileReadManager;
import org.freeplane.plugin.workspace.model.WorkspaceModel;
import org.freeplane.plugin.workspace.model.project.AWorkspaceProject;
import org.freeplane.plugin.workspace.model.project.ProjectLoader;

public abstract class AWorkspaceModeExtension implements IExtension {
  private final IOController workspaceIOController = new IOController();
  private final Set<IWorkspaceListener> listeners = new LinkedHashSet<IWorkspaceListener>();
  private ProjectLoader projectLoader;
 
  public AWorkspaceModeExtension(ModeController modeController) {
  }
  public abstract void start(ModeController modeController);
 
  public abstract WorkspaceModel getModel();
  public abstract void setModel(WorkspaceModel model);
  public abstract IWorkspaceView getView();
  public abstract FileReadManager getFileTypeManager();
  public abstract URI getDefaultProjectHome();
  public abstract AWorkspaceProject getCurrentProject();
  public abstract void save();
 
  public abstract void shutdown();
 
  public IOController getIOController() {
    return workspaceIOController;
  }

  public final void addWorkspaceListener(IWorkspaceListener listener) {
    if(listener == null) {
      return;
    }
    synchronized (listeners) {
      listeners.add(listener);
    }
  }
 
  public final void removeWorkspaceListener(IWorkspaceListener listener) {
    if(listener == null) {
      return;
    }
    synchronized (listeners) {
      listeners.remove(listener);
    }
  }
 
  public final void dispatchWorkspaceEvent(AWorkspaceEvent event) {
    synchronized (listeners) {
      for (IWorkspaceListener listener : listeners) {
        listener.handleWorkspaceEvent(event);
      }
    }
  }

  public ProjectLoader getProjectLoader() {
    if(this.projectLoader == null) {
      this.projectLoader = new ProjectLoader();
    }
    return this.projectLoader;
  }
 
  public void setProjectLoader(ProjectLoader loader) {
    this.projectLoader = loader;
  }
}
TOP

Related Classes of org.freeplane.plugin.workspace.features.AWorkspaceModeExtension

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.