|
From: David C. <dc...@us...> - 2005-10-16 19:03:46
|
Update of /cvsroot/rubyeclipse/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31047/src/org/rubypeople/rdt/internal/ui Modified Files: RubyPlugin.java Added Files: ProjectUpgradeListener.java Log Message: Refactored Listener for project opener. Index: RubyPlugin.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/RubyPlugin.java,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** RubyPlugin.java 1 Oct 2005 23:10:44 -0000 1.15 --- RubyPlugin.java 16 Oct 2005 19:03:37 -0000 1.16 *************** *** 1,10 **** package org.rubypeople.rdt.internal.ui; - import org.eclipse.core.internal.events.ResourceChangeEvent; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; - import org.eclipse.core.resources.IResourceChangeEvent; - import org.eclipse.core.resources.IResourceChangeListener; - import org.eclipse.core.resources.IResourceDelta; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.ResourcesPlugin; --- 1,14 ---- + /* + * Copyright (c) 2003-2005 RubyPeople. + * + * This file is part of the Ruby Development Tools (RDT) plugin for eclipse. + * RDT is subject to the "Common Public License (CPL) v 1.0". You may not use + * RDT except in compliance with the License. For further information see + * org.rubypeople.rdt/rdt.license. + */ package org.rubypeople.rdt.internal.ui; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspace; import org.eclipse.core.resources.ResourcesPlugin; *************** *** 12,16 **** import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; - import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Platform; import org.eclipse.core.runtime.Status; --- 16,19 ---- *************** *** 128,149 **** }); ! ResourcesPlugin.getWorkspace().addResourceChangeListener(new IResourceChangeListener() { ! ! public void resourceChanged(IResourceChangeEvent event) { ! int eventType = event.getType(); ! if (eventType == ResourceChangeEvent.POST_CHANGE) { ! IResourceDelta delta = event.getDelta(); ! int deltaKind = delta.getKind(); ! if (deltaKind == IResourceDelta.CHANGED && event.getResource() == null && event.getDelta().getFullPath().equals(new Path("/"))) ! upgradeOldProjects(); ! } ! ! }}); upgradeOldProjects(); String generateRdocOption = Platform.getDebugOption(RubyPlugin.PLUGIN_ID + "/generaterdoc"); RDocUtility.setDebugging(generateRdocOption == null ? false : generateRdocOption.equalsIgnoreCase("true")); } ! private void upgradeOldProjects() { Job job = new Job("Upgrade Old Ruby Projects") { --- 131,145 ---- }); ! listenForNewProjects(); upgradeOldProjects(); String generateRdocOption = Platform.getDebugOption(RubyPlugin.PLUGIN_ID + "/generaterdoc"); RDocUtility.setDebugging(generateRdocOption == null ? false : generateRdocOption.equalsIgnoreCase("true")); } + + private void listenForNewProjects() { + ResourcesPlugin.getWorkspace().addResourceChangeListener(new ProjectUpgradeListener(this)); + } ! void upgradeOldProjects() { Job job = new Job("Upgrade Old Ruby Projects") { --- NEW FILE: ProjectUpgradeListener.java --- /* * Author: David Corbin * * Copyright (c) 2005 RubyPeople. * * This file is part of the Ruby Development Tools (RDT) plugin for eclipse. * RDT is subject to the "Common Public License (CPL) v 1.0". You may not use * RDT except in compliance with the License. For further information see * org.rubypeople.rdt/rdt.license. */ package org.rubypeople.rdt.internal.ui; import org.eclipse.core.internal.events.ResourceChangeEvent; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResourceChangeEvent; import org.eclipse.core.resources.IResourceChangeListener; import org.eclipse.core.resources.IResourceDelta; import org.eclipse.core.runtime.Path; final class ProjectUpgradeListener implements IResourceChangeListener { private final RubyPlugin plugin; public ProjectUpgradeListener(RubyPlugin plugin) { this.plugin = plugin; } public void resourceChanged(IResourceChangeEvent event) { if (event.getType() == ResourceChangeEvent.POST_CHANGE) { handlePostChangeEvent(event); } } private void handlePostChangeEvent(IResourceChangeEvent event) { IResourceDelta delta = event.getDelta(); // System.out.println(delta.getKind()+"; prp=" // + delta.getProjectRelativePath()+"; res=" // +delta.getResource() + "; fullpath"+ // delta.getFullPath() ); // IResourceDelta[] children = delta.getAffectedChildren(); // for (int i=0; i < children.length; i++) { // System.out.println(" "+children[i].getResource()); // } if ((delta.getKind() == IResourceDelta.CHANGED)) { handleDeltaChange(delta); } } private void handleDeltaChange(IResourceDelta delta) { IResourceDelta[] deltas = delta.getAffectedChildren(); for (int i=0; i<deltas.length; i++) { if (isProject(deltas[i])) { plugin.upgradeOldProjects(); return; } } } private boolean isProject(IResourceDelta child) { Object project = child.getResource().getAdapter(IProject.class); boolean isProject = project != null; return isProject; } private boolean isRootPath(IResourceChangeEvent event) { return event.getDelta().getFullPath().equals(new Path("/")); } } |