org.eclipse.core.resources.IWorkspace#addResourceChangeListener ( )源码实例Demo

下面列出了org.eclipse.core.resources.IWorkspace#addResourceChangeListener ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: google-cloud-eclipse   文件: ModelRefreshTests.java
/** Record and return the set of files altered when running the provided block. */
private static Set<IFile> recordChangedFilesDuring(IWorkspace workspace, ICoreRunnable block)
    throws CoreException {
  Set<IFile> changed = new LinkedHashSet<>();
  IResourceChangeListener listener =
      event -> {
        try {
          changed.addAll(ResourceUtils.getAffectedFiles(event.getDelta()).values());
        } catch (CoreException ex) {
          throw new RuntimeException(ex);
        }
      };
  workspace.addResourceChangeListener(listener);
  try {
    block.run(new NullProgressMonitor());
  } finally {
    workspace.removeResourceChangeListener(listener);
  }
  return changed;
}
 
源代码2 项目: gef   文件: DotGraphView.java
private void toggleResourceListener() {
	IWorkspace workspace = ResourcesPlugin.getWorkspace();
	ISelectionService service = getSite().getWorkbenchWindow()
			.getSelectionService();
	if (listenToDotContent) {
		IWorkbenchPart activeEditor = PlatformUI.getWorkbench()
				.getActiveWorkbenchWindow().getActivePage()
				.getActiveEditor();
		checkActiveEditorAndUpdateGraph(activeEditor);
		workspace.addResourceChangeListener(resourceChangeListener,
				IResourceChangeEvent.POST_BUILD
						| IResourceChangeEvent.POST_CHANGE);
		service.addSelectionListener(selectionChangeListener);
	} else {
		workspace.removeResourceChangeListener(resourceChangeListener);
		service.removeSelectionListener(selectionChangeListener);
	}
}
 
public void addWorkplaceListener(){
	   IWorkspace workspace = ResourcesPlugin.getWorkspace(); 
	   workspace.addResourceChangeListener(new IResourceChangeListener() {
		
		public void resourceChanged(IResourceChangeEvent event) {
			//刷新项目导航视图
			Display.getDefault().syncExec(new Runnable() {		
				public void run() {
					IViewPart findView = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()
							.findView("net.heartsome.cat.common.ui.navigator.view");
					if(null == findView){
						return ;
					}
					IAction refreshActionHandler = findView.getViewSite().getActionBars()
							.getGlobalActionHandler(ActionFactory.REFRESH.getId());
					if(null == refreshActionHandler){
						return;
					}
					refreshActionHandler.run();
				}
			});
		}
	});
}
 
/**
 * Returns the IHierarchicalDataModel. If one does not exists, this method
 * will create one and register a workspace listener.
 *
 * @return
 */
public static IHierarchicalDataModel getHierarchicalDataModel() {
	IHierarchicalDataModelGetFileModel getModel = new GetFileModelFactory();
	final HierarchicalDataModel model = new HierarchicalDataModel(getModel);

	IResourceChangeListener listener = new IResourceChangeListener() {

		@Override
		public void resourceChanged(IResourceChangeEvent event) {
			IResourceDelta delta = event.getDelta();
			if (delta != null) {
				try {
					delta.accept(new DeltaVisitor(model));
				} catch (CoreException e) {
					// our visitor does not throw CoreException
				}
			}
		}
	};
	IWorkspace workspace = ResourcesPlugin.getWorkspace();
	workspace.addResourceChangeListener(listener);

	return model;
}
 
源代码5 项目: gemfirexd-oss   文件: DerbyServerUtils.java
public void startDerbyServer( IProject proj) throws CoreException {
	String args = CommonNames.START_DERBY_SERVER;
	String vmargs="";
	DerbyProperties dprop=new DerbyProperties(proj);
	//Starts the server as a Java app
	args+=" -h "+dprop.getHost()+ " -p "+dprop.getPort();
	
	//Set Derby System Home from the Derby Properties
	if((dprop.getSystemHome()!=null)&& !(dprop.getSystemHome().equals(""))){
		vmargs=CommonNames.D_SYSTEM_HOME+dprop.getSystemHome();
	}
	String procName="["+proj.getName()+"] - "+CommonNames.DERBY_SERVER+" "+CommonNames.START_DERBY_SERVER+" ("+dprop.getHost()+ ", "+dprop.getPort()+")";
	ILaunch launch = DerbyUtils.launch(proj, procName ,		
	CommonNames.DERBY_SERVER_CLASS, args, vmargs, CommonNames.START_DERBY_SERVER);
	IProcess ip=launch.getProcesses()[0];
	//set a name to be seen in the Console list
	ip.setAttribute(IProcess.ATTR_PROCESS_LABEL,procName);
	
	// saves the mapping between (server) process and project
	//servers.put(launch.getProcesses()[0], proj);
	servers.put(ip, proj);
	// register a listener to listen, when this process is finished
	DebugPlugin.getDefault().addDebugEventListener(listener);
	//Add resource listener
	IWorkspace workspace = ResourcesPlugin.getWorkspace();
	
	workspace.addResourceChangeListener(rlistener);
	setRunning(proj, Boolean.TRUE);
	Shell shell = new Shell();
	MessageDialog.openInformation(
		shell,
		CommonNames.PLUGIN_NAME,
		Messages.D_NS_ATTEMPT_STARTED+dprop.getPort()+".");

}
 
源代码6 项目: xds-ide   文件: XdsResourceChangeListener.java
/**
 * Installs the {@link IWorkspace#addResourceChangeListener(IResourceChangeListener)}
 */
public XdsResourceChangeListener() {
	try {
		IWorkspace workspace = ResourcesPlugin.getWorkspace();
		if (workspace != null) {
			workspace.addResourceChangeListener(this);
		}
	} catch (java.lang.IllegalStateException e) {
	}
}
 
源代码7 项目: tlaplus   文件: ProblemViewResourceListener.java
public void postWorkbenchWindowOpen() {
	// Check if there have been any markers set already
	showOrHideProblemView();
	
	// ...and listen for new markers
	final IWorkspace workspace = ResourcesPlugin.getWorkspace();
	workspace.addResourceChangeListener(this, IResourceChangeEvent.POST_BUILD);
}
 
源代码8 项目: tlaplus   文件: ToolboxExplorerResourceListener.java
public void postWorkbenchWindowOpen() {
	// We might have missed events during Toolbox startup when there was
	// a workspace but no UI yet.
	resourceChanged(null);
	
	// update CNF viewers
	final IWorkspace workspace = ResourcesPlugin.getWorkspace();
	workspace.addResourceChangeListener(this);
}
 
源代码9 项目: gemfirexd-oss   文件: DerbyServerUtils.java
public void startDerbyServer( IProject proj) throws CoreException {
	String args = CommonNames.START_DERBY_SERVER;
	String vmargs="";
	DerbyProperties dprop=new DerbyProperties(proj);
	//Starts the server as a Java app
	args+=" -h "+dprop.getHost()+ " -p "+dprop.getPort();
	
	//Set Derby System Home from the Derby Properties
	if((dprop.getSystemHome()!=null)&& !(dprop.getSystemHome().equals(""))){
		vmargs=CommonNames.D_SYSTEM_HOME+dprop.getSystemHome();
	}
	String procName="["+proj.getName()+"] - "+CommonNames.DERBY_SERVER+" "+CommonNames.START_DERBY_SERVER+" ("+dprop.getHost()+ ", "+dprop.getPort()+")";
	ILaunch launch = DerbyUtils.launch(proj, procName ,		
	CommonNames.DERBY_SERVER_CLASS, args, vmargs, CommonNames.START_DERBY_SERVER);
	IProcess ip=launch.getProcesses()[0];
	//set a name to be seen in the Console list
	ip.setAttribute(IProcess.ATTR_PROCESS_LABEL,procName);
	
	// saves the mapping between (server) process and project
	//servers.put(launch.getProcesses()[0], proj);
	servers.put(ip, proj);
	// register a listener to listen, when this process is finished
	DebugPlugin.getDefault().addDebugEventListener(listener);
	//Add resource listener
	IWorkspace workspace = ResourcesPlugin.getWorkspace();
	
	workspace.addResourceChangeListener(rlistener);
	setRunning(proj, Boolean.TRUE);
	Shell shell = new Shell();
	MessageDialog.openInformation(
		shell,
		CommonNames.PLUGIN_NAME,
		Messages.D_NS_ATTEMPT_STARTED+dprop.getPort()+".");

}
 
源代码10 项目: APICloud-Studio   文件: MarkerManager.java
private MarkerManager()
{
	IWorkspace workspace = ResourcesPlugin.getWorkspace();
	workspace.addResourceChangeListener(new IResourceChangeListener()
	{
		public void resourceChanged(IResourceChangeEvent event)
		{
			handleResourceChanged();
		}
	}, IResourceChangeEvent.PRE_BUILD);
}
 
源代码11 项目: slr-toolkit   文件: BibtexEntryView.java
/**
 * The constructor.
 */
public BibtexEntryView() {
	super();
	IWorkspace workspace = ResourcesPlugin.getWorkspace();
	workspace.addResourceChangeListener(markerChangeListener);
	workspace.addResourceChangeListener(projectChangeListener);
	initializeEditingDomain();
}
 
/**
 * Creates a new <code>ProjectActionGroup</code>. The group requires
 * that the selection provided by the given selection provider is of type
 * {@link IStructuredSelection}.
 *
 * @param site the site that will own the action group.
 * @param selectionProvider the selection provider used instead of the
 *  page selection provider.
 *
 * @since 3.4
 */
public ProjectActionGroup(IWorkbenchSite site, ISelectionProvider selectionProvider) {
	fSelectionProvider= selectionProvider;
	ISelection selection= selectionProvider.getSelection();

	fCloseAction= new CloseResourceAction(site);
	fCloseAction.setActionDefinitionId(IWorkbenchCommandConstants.PROJECT_CLOSE_PROJECT);

	fCloseUnrelatedAction= new CloseUnrelatedProjectsAction(site);
	fCloseUnrelatedAction.setActionDefinitionId(IWorkbenchCommandConstants.PROJECT_CLOSE_UNRELATED_PROJECTS);

	fOpenAction= new OpenProjectAction(site);
	fOpenAction.setActionDefinitionId(IWorkbenchCommandConstants.PROJECT_OPEN_PROJECT);
	if (selection instanceof IStructuredSelection) {
		IStructuredSelection s= (IStructuredSelection)selection;
		fOpenAction.selectionChanged(s);
		fCloseAction.selectionChanged(s);
		fCloseUnrelatedAction.selectionChanged(s);
	}

	fSelectionChangedListener= new ISelectionChangedListener() {
		public void selectionChanged(SelectionChangedEvent event) {
			ISelection s= event.getSelection();
			if (s instanceof IStructuredSelection) {
				performSelectionChanged((IStructuredSelection) s);
			}
		}
	};
	selectionProvider.addSelectionChangedListener(fSelectionChangedListener);

	IWorkspace workspace= ResourcesPlugin.getWorkspace();
	workspace.addResourceChangeListener(fOpenAction);
	workspace.addResourceChangeListener(fCloseAction);
	workspace.addResourceChangeListener(fCloseUnrelatedAction);
}
 
源代码13 项目: saros   文件: SarosSessionTest.java
private static IWorkspace createWorkspaceMock(final List<Object> workspaceListeners) {

    final IWorkspace workspace = createMock(IWorkspace.class);

    workspace.addResourceChangeListener(isA(IResourceChangeListener.class), anyInt());

    expectLastCall()
        .andStubAnswer(
            new IAnswer<Object>() {

              @Override
              public Object answer() throws Throwable {
                workspaceListeners.add(getCurrentArguments()[0]);
                return null;
              }
            });

    workspace.removeResourceChangeListener(isA(IResourceChangeListener.class));

    expectLastCall()
        .andStubAnswer(
            new IAnswer<Object>() {

              @Override
              public Object answer() throws Throwable {
                workspaceListeners.remove(getCurrentArguments()[0]);
                return null;
              }
            });

    replay(workspace);

    PowerMock.mockStaticPartial(ResourcesPlugin.class, "getWorkspace");
    ResourcesPlugin.getWorkspace();
    expectLastCall().andReturn(workspace).anyTimes();
    PowerMock.replay(ResourcesPlugin.class);

    return workspace;
  }
 
源代码14 项目: thym   文件: ConfigEditor.java
ResourceChangeListener(ConfigEditor editorPart, Composite container) {
	this.editorPart = editorPart;
	final IWorkspace workspace = ResourcesPlugin.getWorkspace();
	workspace.addResourceChangeListener(this);
	container.addDisposeListener(new DisposeListener() {
		public void widgetDisposed(DisposeEvent e) {
			workspace.removeResourceChangeListener(ResourceChangeListener.this);
		}
	});
}
 
public CodewindFilewatcherdConnection(String baseHttpUrl, File pathToCwctl, ICodewindProjectTranslator translator,
		IAuthTokenProvider authTokenProvider /* nullable */) {

	if (pathToCwctl == null) {
		throw new RuntimeException("A valid path to the Codewind CLI is required: " + pathToCwctl);
	}

	if (!pathToCwctl.exists() || !pathToCwctl.canExecute()) {
		throw new RuntimeException(this.getClass().getSimpleName() + " was passed an invalid installer path: "
				+ pathToCwctl.getPath());
	}

	this.clientUuid = UUID.randomUUID().toString();

	String url = baseHttpUrl;
	if (!url.startsWith("http://") && !url.startsWith("https://")) {
		throw new IllegalArgumentException("Argument should begin with http:// or https://.");
	}

	// Log to the workspace .metadata directory, rather than to the console.
	File metadataDirectory = new File(ResourcesPlugin.getWorkspace().getRoot().getLocation().toFile().getPath(),
			".metadata");
	FWLogger logger = FWLogger.getInstance();
	logger.setOutputLogsToScreen(false);
	logger.setRollingFileLoggerOutputDir(metadataDirectory);

	this.translator = translator;

	listener = new CodewindResourceChangeListener(this);

	IWorkspace workspace = ResourcesPlugin.getWorkspace();
	workspace.addResourceChangeListener(listener);

	// We use the native Eclipse-resource-listener-based watch service for projects
	// inside the workspace, and the Java-NIO-JVM-based watch service for folders
	// outside the workspace (eg the standalone Codewind settings directory).
	this.platformWatchService = new EclipseResourceWatchService();
	this.fileWatcher = new Filewatcher(url, clientUuid, platformWatchService, new JavaNioWatchService(),
			pathToCwctl.getPath(), authTokenProvider);

	this.baseHttpUrl = url;

}
 
源代码16 项目: xtext-xtend   文件: UIResourceChangeRegistryTest.java
@Inject
@Override
public void init(final IWorkspace workspace) {
  workspace.addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
}
 
源代码17 项目: tlaplus   文件: WorkspaceSpecManager.java
/**
 * Constructor
 */
public WorkspaceSpecManager(final IProgressMonitor monitor)
{
    // initialize the spec life cycle manager
    lifecycleManager = new SpecLifecycleManager();

    final IWorkspace ws = ResourcesPlugin.getWorkspace();

    final String specLoadedName = PreferenceStoreHelper.getInstancePreferenceStore().getString(
            IPreferenceConstants.I_SPEC_LOADED);

    final IProject[] projects = ws.getRoot().getProjects();
    try
    {

        for (int i = 0; i < projects.length; i++)
        {
            // changed from projects[i].isAccessible()
            final IProject project = projects[i];
if (project.isOpen())
            {
                if (project.hasNature(TLANature.ID))
                {
		// Refresh the project in case the actual on-disk
		// representation and the cached Eclipse representation
		// have diverged. This can happen when e.g. another
		// Toolbox opens the project or the files get manually
		// edited. Without calling refresh, code down below 
                	// might throw exceptions due to out-of-sync problems.  
                	project.refreshLocal(IResource.DEPTH_INFINITE, monitor);
                    
                	final Spec spec = new Spec(project);
                    // Added by LL on 12 Apr 2011
                    // If spec.rootFile = null, then this is a bad spec. So
                    // we should report it and not perform addSpec(spec).  It
                    // would be nice if we could report it to the user, but
                    // it seems to be impossible to popup a window at this point
                    // in the code.
                    if (spec.getRootFile() == null)
                    {
                        Activator.getDefault().logError("The bad spec is: `" + project.getName() + "'", null);
                    } else
                    {
                        // This to threw a null pointer exception for Tom, probably causing the abortion
                        // of the Toolbox start. But it started on the next attempt.  Should we catch the
                        // and perhaps report the bad spec?
                        addSpec(spec);
                    }
                    
                    // load the spec if found
                    if (spec.getName().equals(specLoadedName))
                    {
                        this.setSpecLoaded(spec);
                    }
                }
            } else
            {
                // DELETE closed projects
                project.delete(IResource.FORCE | IResource.ALWAYS_DELETE_PROJECT_CONTENT, monitor);
            }
        }

        if (specLoadedName != null && !specLoadedName.equals("") && this.loadedSpec == null)
        {
            // there was a spec loaded but it was not found
            // explicit un-set it
            setSpecLoaded(null);
        }

    } catch (CoreException e)
    {
        Activator.getDefault().logError("Error initializing specification workspace", e);
    }

    ws.addResourceChangeListener(this);
    
    Platform.getAdapterManager().registerAdapters(this, IProject.class);
}
 
源代码18 项目: depan   文件: ResourceCache.java
protected void attachWorkspace(IWorkspace workspace) {
  workspace.addResourceChangeListener(this, IResourceChangeEvent.POST_CHANGE);
}
 
源代码19 项目: APICloud-Studio   文件: SVNProviderPlugin.java
public void start(BundleContext ctxt) throws Exception {
	super.start(ctxt);
	
	messageHandlers = getMessageHandlers();
	
	// register all the adapter factories
	adapterFactories = new SVNAdapterFactories();
	adapterFactories.startup(null);

       statusCacheManager = new StatusCacheManager();
       getPluginPreferences().addPropertyChangeListener(statusCacheManager);
       
	// Initialize SVN change listeners. Note tha the report type is important.
	IWorkspace workspace = ResourcesPlugin.getWorkspace();

	// this listener will listen to additions of svn meta directories
	teamPrivateListener = new TeamPrivateListener();

	// this listener will listen to modifications to files
	fileModificationManager = new FileModificationManager();
	getPluginPreferences().addPropertyChangeListener(fileModificationManager);

	// this listener will listen to modification to metafiles (files in .svn
	// subdir)
	metaFileSyncListener = new SyncFileChangeListener();

	revertManager = new RevertResourceManager();
	
	workspace.addResourceChangeListener(teamPrivateListener,
			IResourceChangeEvent.POST_CHANGE);
	workspace.addResourceChangeListener(statusCacheManager,
			IResourceChangeEvent.PRE_BUILD);
	workspace.addResourceChangeListener(metaFileSyncListener,
			IResourceChangeEvent.PRE_BUILD);
	workspace.addResourceChangeListener(fileModificationManager,
			IResourceChangeEvent.POST_CHANGE);
	workspace.addResourceChangeListener(revertManager, IResourceChangeEvent.PRE_BUILD);
	
	teamPrivateListener.registerSaveParticipant();
	fileModificationManager.registerSaveParticipant();

	// Must load the change set manager on startup since it listens to deltas
	getChangeSetManager();
	
}
 
源代码20 项目: thym   文件: WidgetModel.java
ResourceChangeListener() {
	final IWorkspace workspace = ResourcesPlugin.getWorkspace();
	workspace.addResourceChangeListener(this, IResourceChangeEvent.PRE_DELETE);
}