/* * Copyright (c) 2000-2008 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jetbrains.teamcity.ui; import java.util.ArrayList; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IEditorReference; import org.eclipse.ui.IFileEditorInput; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.EditorPart; public class UIUtil { /** * Looking for editors contains unsaved data * * @param paths Paths of files interesting for * @return Array of editors. Never return null */ public static EditorPart[] findDirtyEditors(final String[] paths){ final ArrayList saveable = new ArrayList(paths.length); for(final IWorkbenchWindow wWindow : PlatformUI.getWorkbench().getWorkbenchWindows()){ for(final IWorkbenchPage wPage :wWindow.getPages()){ for(final IEditorReference eRef : wPage.getEditorReferences()){ final IEditorPart ePart = eRef.getEditor(false); if(ePart instanceof EditorPart && ((EditorPart)ePart).isDirty()){ final IEditorInput eInput = ePart.getEditorInput(); if (eInput instanceof IFileEditorInput && ((IFileEditorInput) eInput).getFile() != null && ((IFileEditorInput)eInput).getFile().getLocation() != null) { final String eEditorFilePath = ((IFileEditorInput)eInput).getFile().getLocation().toOSString(); if(eEditorFilePath != null){ for(final String path : paths){ if(eEditorFilePath.equalsIgnoreCase(path)){ saveable.add((EditorPart) ePart); continue; } } } } } } } } return saveable.toArray(new EditorPart[saveable.size()]); } }