Changeset 3514


Ignore:
Timestamp:
Mar 14, 2008, 12:59:54 AM (13 years ago)
Author:
yura
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • devel-tools/trunk/eclipse/org.refal.rfpdt.ui/src/org/refal/rfpdt/ui/actions/IndentAction.java

    r3508 r3514  
    2626public class IndentAction implements IEditorActionDelegate {
    2727
    28         private RfpEditor editor;
     28    private RfpEditor editor;
    2929
    30         public IndentAction() {
    31         }
     30    public IndentAction () {}
    3231
    33         public void run(IAction action) {
    34                 this.run();
    35         }
     32    public void run (IAction action) {
     33        this.run();
     34    }
    3635
    37         public void run() {
     36    public void run () {
    3837
    39                 if (editor == null)
    40                         return;
     38        if (editor == null)
     39            return;
    4140
    42                 if (!editor.validateEditorInputState())
    43                         return;
     41        if (!editor.validateEditorInputState())
     42            return;
    4443
    45                 ITextSelection selection = getSelection();
    46                 final IDocument document = getDocument();
     44        ITextSelection selection = getSelection();
     45        final IDocument document = getDocument();
    4746
    48                 if (document != null) {
     47        if (document != null) {
    4948
    50                         final int offset = selection.getOffset();
    51                         final int length = selection.getLength();
    52                         final Position end = new Position(offset + length);
    53                         final int firstLine, nLines;
     49            final int offset = selection.getOffset();
     50            final int length = selection.getLength();
     51            final Position end = new Position(offset + length);
     52            final int firstLine, nLines;
    5453
    55                         try {
    56                                 document.addPosition(end);
    57                                 firstLine = document.getLineOfOffset(offset);
    58                                 // check for marginal (zero-length) lines
    59                                 int minusOne = length == 0 ? 0 : 1;
    60                                 nLines = document.getLineOfOffset(offset + length - minusOne) - firstLine + 1;
    61                         } catch (BadLocationException e) {
    62                                 // will only happen on concurrent modification
    63                                 RfpCorePlugin.log(new Status(IStatus.ERROR, RfpCorePlugin.getPluginId(), IStatus.OK, "", e)); //$NON-NLS-1$
    64                                 return;
    65                         }
     54            try {
     55                document.addPosition(end);
     56                firstLine = document.getLineOfOffset(offset);
     57                // check for marginal (zero-length) lines
     58                int minusOne = length == 0 ? 0 : 1;
     59                nLines = document.getLineOfOffset(offset + length - minusOne) - firstLine + 1;
     60            } catch (BadLocationException e) {
     61                // will only happen on concurrent modification
     62                RfpCorePlugin.log(new Status(IStatus.ERROR, RfpCorePlugin.getPluginId(), IStatus.OK, "", e)); //$NON-NLS-1$
     63                return;
     64            }
    6665
    67                         Runnable runnable = new Runnable() {
    68                                 public void run() {
    69                                         IRewriteTarget target = (IRewriteTarget) editor.getAdapter(IRewriteTarget.class);
    70                                         if (target != null)
    71                                                 target.beginCompoundChange();
     66            Runnable runnable = new Runnable() {
     67                public void run () {
     68                    IRewriteTarget target = (IRewriteTarget) editor.getAdapter(IRewriteTarget.class);
     69                    if (target != null)
     70                        target.beginCompoundChange();
    7271
    73                                         try {
    74                                                 for (int line = firstLine; line < firstLine + nLines; line++) {
    75                                                         IRegion lineRegion = document.getLineInformation(line);
    76                                                         int lineOffset = lineRegion.getOffset();
    77                                                         int lineLength = lineRegion.getLength();
    78                                                         int offset;
    79                                                         for (offset = lineOffset; offset < lineOffset + lineLength; offset++)
    80                                                                 if (!Character.isWhitespace(document.getChar(offset)))
    81                                                                         break;
     72                    try {
     73                        for (int line = firstLine; line < firstLine + nLines; line++) {
     74                            IRegion lineRegion = document.getLineInformation(line);
     75                            int lineOffset = lineRegion.getOffset();
     76                            int lineLength = lineRegion.getLength();
     77                            int offset;
     78                            for (offset = lineOffset; offset < lineOffset + lineLength; offset++)
     79                                if (!Character.isWhitespace(document.getChar(offset)))
     80                                    break;
    8281                            String text;
    83                             if (offset < lineOffset + lineLength && document.getChar(offset) == '}' && new Document(document).getPartition(offset).getType() == IDocument.DEFAULT_CONTENT_TYPE)
     82                            if (offset < lineOffset + lineLength
     83                                    && document.getChar(offset) == '}'
     84                                    && new Document(document).getPartition(offset).getType() == IDocument.DEFAULT_CONTENT_TYPE)
    8485                                text = RfpAutoIndentStrategy.getRightBraceIndent(document, offset);
    8586                            else
    8687                                text = RfpAutoIndentStrategy.autoIndentAfterNewLine(document, lineOffset);
    87                                                         document.replace(lineOffset, offset - lineOffset, text);
    88                                                 }
    89                                                 document.removePosition(end);
    90                                         } catch (BadLocationException e) {
    91                                                 // will only happen on concurrent modification
    92                                                 RfpCorePlugin.log(new Status(IStatus.ERROR, RfpCorePlugin.getPluginId(), IStatus.OK,
    93                                                                 "ConcurrentModification in IndentAction", e)); //$NON-NLS-1$
     88                            document.replace(lineOffset, offset - lineOffset, text);
     89                        }
     90                        document.removePosition(end);
     91                    } catch (BadLocationException e) {
     92                        // will only happen on concurrent modification
     93                        RfpCorePlugin.log("ConcurrentModification in IndentAction", e); //$NON-NLS-1$
    9494
    95                                         } finally {
    96                                                 if (target != null)
    97                                                         target.endCompoundChange();
    98                                         }
    99                                 }
    100                         };
     95                    } finally {
     96                        if (target != null)
     97                            target.endCompoundChange();
     98                    }
     99                }
     100            };
    101101
    102                         if (nLines > 57) {
    103                                 Display display = editor.getEditorSite()
    104                                                 .getWorkbenchWindow().getShell().getDisplay();
    105                                 BusyIndicator.showWhile(display, runnable);
    106                         } else
    107                                 runnable.run();
    108                 }
    109         }
     102            if (nLines > 57) {
     103                Display display = editor.getEditorSite().getWorkbenchWindow().getShell().getDisplay();
     104                BusyIndicator.showWhile(display, runnable);
     105            } else
     106                runnable.run();
     107        }
     108    }
    110109
    111         /**
    112          * Returns the document currently displayed in the editor, or
    113          * <code>null</code> if none can be obtained.
    114          *
    115          * @return the current document or <code>null</code>
    116          */
    117         protected IDocument getDocument() {
    118                 if (editor != null) {
     110    /**
     111     * Returns the document currently displayed in the editor, or <code>null</code> if none can be obtained.
     112     *
     113     * @return the current document or <code>null</code>
     114     */
     115    protected IDocument getDocument () {
     116        if (editor != null) {
    119117
    120                         IDocumentProvider provider = editor.getDocumentProvider();
    121                         IEditorInput input = editor.getEditorInput();
    122                         if (provider != null && input != null)
    123                                 return provider.getDocument(input);
     118            IDocumentProvider provider = editor.getDocumentProvider();
     119            IEditorInput input = editor.getEditorInput();
     120            if (provider != null && input != null)
     121                return provider.getDocument(input);
    124122
    125                 }
    126                 return null;
    127         }
     123        }
     124        return null;
     125    }
    128126
    129         /**
    130         * Returns the editor's selection provider.
    131         *
    132         * @return the editor's selection provider or <code>null</code>
    133         */
    134         protected ISelectionProvider getSelectionProvider() {
    135                 if (editor != null) {
    136                         return editor.getSelectionProvider();
    137                 }
    138                 return null;
    139         }
     127    /**
     128    * Returns the editor's selection provider.
     129    *
     130    * @return the editor's selection provider or <code>null</code>
     131    */
     132    protected ISelectionProvider getSelectionProvider () {
     133        if (editor != null) {
     134            return editor.getSelectionProvider();
     135        }
     136        return null;
     137    }
    140138
    141         /**
    142          * Returns the selection on the editor or an invalid selection if none can
    143          * be obtained. Returns never <code>null</code>.
    144         *
    145         * @return the current selection, never <code>null</code>
    146         */
    147         protected ITextSelection getSelection() {
    148                 ISelectionProvider provider = getSelectionProvider();
    149                 if (provider != null) {
     139    /**
     140     * Returns the selection on the editor or an invalid selection if none can be obtained. Returns never
     141     * <code>null</code>.
     142    *
     143    * @return the current selection, never <code>null</code>
     144    */
     145    protected ITextSelection getSelection () {
     146        ISelectionProvider provider = getSelectionProvider();
     147        if (provider != null) {
    150148
    151                         ISelection selection = provider.getSelection();
    152                         if (selection instanceof ITextSelection)
    153                                 return (ITextSelection) selection;
    154                 }
     149            ISelection selection = provider.getSelection();
     150            if (selection instanceof ITextSelection)
     151                return (ITextSelection) selection;
     152        }
    155153
    156                 // null object
    157                 return TextSelection.emptySelection();
    158         }
     154        // null object
     155        return TextSelection.emptySelection();
     156    }
    159157
    160         public void setActiveEditor(IAction action, IEditorPart editor) {
    161                 if (editor instanceof RfpEditor)
    162                         this.editor = (RfpEditor) editor;
    163                 else
    164                         this.editor = null;
    165         }
     158    public void setActiveEditor (IAction action, IEditorPart editor) {
     159        if (editor instanceof RfpEditor)
     160            this.editor = (RfpEditor) editor;
     161        else
     162            this.editor = null;
     163    }
    166164
    167         public void selectionChanged(IAction action, ISelection selection) {
    168         }
     165    public void selectionChanged (IAction action, ISelection selection) {}
    169166}
Note: See TracChangeset for help on using the changeset viewer.