Package com.subgraph.vega.ui.scanner.alerts

Source Code of com.subgraph.vega.ui.scanner.alerts.ScopeTracker

package com.subgraph.vega.ui.scanner.alerts;

import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.ViewerFilter;

import com.subgraph.vega.api.events.IEvent;
import com.subgraph.vega.api.events.IEventHandler;
import com.subgraph.vega.api.model.IWorkspace;
import com.subgraph.vega.api.model.scope.ActiveScopeChangedEvent;
import com.subgraph.vega.api.model.scope.ITargetScope;

public class ScopeTracker {
 
  private final StructuredViewer viewer;
  private final IEventHandler scopeChangeListener;
 
  private IWorkspace currentWorkspace;
  private ViewerFilter activeScopeFilter;
  private boolean filterEnabled;
 
  ScopeTracker(StructuredViewer viewer) {
    this.viewer = viewer;
    this.scopeChangeListener = createScopeChangeListener();
  }
 
  private IEventHandler createScopeChangeListener() {
    return new IEventHandler() {
      @Override
      public void handleEvent(IEvent event) {
        if(event instanceof ActiveScopeChangedEvent) {
          changeActiveScope(((ActiveScopeChangedEvent)event).getActiveScope());
        }
      }
    };
  }
 
  private void changeActiveScope(ITargetScope activeScope) {
    if(currentWorkspace == null) {
      return;
    }
    if(activeScopeFilter != null) {
      viewer.removeFilter(activeScopeFilter);
      activeScopeFilter = null;
    }
    if(filterEnabled) {
      activeScopeFilter = new CurrentScopeFilter(currentWorkspace, activeScope);
      viewer.addFilter(activeScopeFilter);
    }
  }
 
  public void workspaceChanged(IWorkspace workspace) {
    if(currentWorkspace != null) {
      currentWorkspace.getTargetScopeManager().removeActiveScopeChangeListener(scopeChangeListener);
    }
    currentWorkspace = workspace;
    if(workspace != null) {
      final ITargetScope activeScope = workspace.getTargetScopeManager().addActiveScopeChangeListener(scopeChangeListener);
      changeActiveScope(activeScope);
    }
  }
 
  public void setFilterByScopeEnabled(boolean value) {
    filterEnabled = value;
    final ITargetScope activeScope = currentWorkspace.getTargetScopeManager().getActiveScope();
    changeActiveScope(activeScope);
  }
}
TOP

Related Classes of com.subgraph.vega.ui.scanner.alerts.ScopeTracker

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.