You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2012/05/03 17:47:27 UTC

svn commit: r1333513 - /directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/EditorsUtils.java

Author: pamarcelot
Date: Thu May  3 15:47:27 2012
New Revision: 1333513

URL: http://svn.apache.org/viewvc?rev=1333513&view=rev
Log:
Part of a fix for DIRSTUDIO-811(Review and remove any source file under Eclipse Public License (EPL) v 1.0)

Added:
    directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/EditorsUtils.java

Added: directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/EditorsUtils.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/EditorsUtils.java?rev=1333513&view=auto
==============================================================================
--- directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/EditorsUtils.java (added)
+++ directory/studio/trunk/plugins/schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/editors/EditorsUtils.java Thu May  3 15:47:27 2012
@@ -0,0 +1,145 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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 org.apache.directory.studio.schemaeditor.view.editors;
+
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.ListDialog;
+
+
+/**
+ * This class implements a utility class for the editors.
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ */
+public class EditorsUtils
+{
+    /**
+     * Saves all the dirty editors (asking the user if they need to be saved or not).
+     *
+     * @return <code>true</code> if all the dirty editors were saved successfully,
+     *          <code>false</code> if not (if the user decided to not save them, or 
+     *          if an error occurred when saving).
+     */
+    public static boolean saveAllDirtyEditors()
+    {
+        IWorkbench workbench = PlatformUI.getWorkbench();
+        IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow();
+        List<IEditorPart> dirtyEditorsList = getDirtyEditorsList( workbench );
+
+        if ( dirtyEditorsList.size() > 0 )
+        {
+            // Creating the dialog to ask the user if the dirty editors must be saved
+            ListDialog dialog = new ListDialog( workbenchWindow.getShell() );
+            dialog.setTitle( Messages.getString( "EditorsUtils.SaveDialogTitle" ) ); //$NON-NLS-1$
+            dialog.setMessage( Messages.getString( "EditorsUtils.SaveDialogMessage" ) ); //$NON-NLS-1$
+            dialog.setLabelProvider( new LabelProvider()
+            {
+                public Image getImage( Object element )
+                {
+                    return ( ( IEditorPart ) element ).getTitleImage();
+                }
+
+
+                public String getText( Object element )
+                {
+                    IEditorPart editorPart = ( IEditorPart ) element;
+
+                    StringBuilder sb = new StringBuilder();
+                    sb.append( editorPart.getTitle() );
+
+                    String tooltip = editorPart.getTitleToolTip();
+
+                    if ( ( tooltip != null ) && ( !"".equals( tooltip ) ) )
+                    {
+                        sb.append( " [" );
+                        sb.append( tooltip );
+                        sb.append( "]" );
+                    }
+
+                    return sb.toString();
+                }
+            } );
+            dialog.setContentProvider( new ArrayContentProvider() );
+            dialog.setHelpAvailable( false );
+            dialog.setAddCancelButton( true );
+            dialog.setInput( dirtyEditorsList );
+
+            // Opening the dialog
+            if ( dialog.open() != Dialog.OK )
+            {
+                // Cancel
+                return false;
+            }
+
+            // Forcing the save of all dirty editors
+            return workbenchWindow.getWorkbench().saveAllEditors( false );
+        }
+
+        return true;
+    }
+
+
+    /**
+     * Returns a list of all editors having unsaved content.
+     * 
+     * @return a list of all dirty editors.
+     */
+    public static List<IEditorPart> getDirtyEditorsList( IWorkbench workbench )
+    {
+        List<IEditorPart> dirtyEditorsList = new ArrayList<IEditorPart>();
+
+        if ( workbench != null )
+        {
+            List<IEditorInput> processedInputs = new ArrayList<IEditorInput>();
+
+            for ( IWorkbenchWindow workbenchWindow : workbench.getWorkbenchWindows() )
+            {
+                for ( IWorkbenchPage workbenchPage : workbenchWindow.getPages() )
+                {
+                    for ( IEditorPart editor : workbenchPage.getDirtyEditors() )
+                    {
+                        IEditorInput input = editor.getEditorInput();
+
+                        if ( !processedInputs.contains( input ) )
+                        {
+                            processedInputs.add( input );
+                            dirtyEditorsList.add( editor );
+                        }
+                    }
+                }
+            }
+        }
+
+        return dirtyEditorsList;
+    }
+}