Package com.subgraph.vega.application.workspaces

Source Code of com.subgraph.vega.application.workspaces.WorkspaceLockStateSourceProvider

/*******************************************************************************
* Copyright (c) 2011 Subgraph.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Subgraph - initial API and implementation
******************************************************************************/
package com.subgraph.vega.application.workspaces;

import java.util.HashMap;
import java.util.Map;

import org.eclipse.ui.AbstractSourceProvider;
import org.eclipse.ui.ISources;

import com.subgraph.vega.api.events.IEvent;
import com.subgraph.vega.api.events.IEventHandler;
import com.subgraph.vega.api.model.IModel;
import com.subgraph.vega.api.model.WorkspaceLockStatusEvent;
import com.subgraph.vega.application.Activator;

public class WorkspaceLockStateSourceProvider extends AbstractSourceProvider {
  final static String WORKSPACE_LOCK_STATE = "vega.workspaceLockState";
  final static String WORKSPACE_LOCKED = "locked";
  final static String WORKSPACE_UNLOCKED = "unlocked";
 
  private boolean isLocked = false;
 
  public WorkspaceLockStateSourceProvider() {
    final IModel model = Activator.getDefault().getModel();
    model.addWorkspaceListener(new IEventHandler() {
      @Override
      public void handleEvent(IEvent event) {
        if(event instanceof WorkspaceLockStatusEvent)
          handleWorkspaceLockStatus((WorkspaceLockStatusEvent) event);       
      }
    });   
  }

  private void handleWorkspaceLockStatus(WorkspaceLockStatusEvent event) {
    boolean state = event.isLockEvent();
    if(state != isLocked) {
      isLocked = state;
      fireSourceChanged(ISources.WORKBENCH, WORKSPACE_LOCK_STATE, getCurrentWorkspaceLockState());
    }
  }
 
 
  @Override
  public void dispose() {
  }

  @Override
  synchronized public Map<?,?> getCurrentState() {
    Map<String, String> stateMap = new HashMap<String, String>(1);
    stateMap.put(WORKSPACE_LOCK_STATE, getCurrentWorkspaceLockState());
    return stateMap;
  }

  private String getCurrentWorkspaceLockState() {
    if(isLocked)
      return WORKSPACE_LOCKED;
    else
      return WORKSPACE_UNLOCKED;
  }

  @Override
  public String[] getProvidedSourceNames() {
    return new String[] { WORKSPACE_LOCK_STATE };
  }

}
TOP

Related Classes of com.subgraph.vega.application.workspaces.WorkspaceLockStateSourceProvider

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.