Refactorization of the management of the actions in menus, button, shortcuts
[scilab.git] / scilab / modules / scinotes / src / java / org / scilab / modules / scinotes / actions / UnTabifyAction.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2009 - DIGITEO - Bruno JOFRET
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 package org.scilab.modules.scinotes.actions;
14
15 import javax.swing.KeyStroke;
16
17 import org.scilab.modules.gui.menuitem.MenuItem;
18 import org.scilab.modules.scinotes.SciNotes;
19 import org.scilab.modules.scinotes.ScilabEditorPane;
20 import org.scilab.modules.scinotes.TabManager;
21 import org.scilab.modules.scinotes.ScilabDocument;
22
23 /**
24  * Class Untabify action for SciNotes
25  * @author Sylvestre Koumar
26  *
27  */
28 public class UnTabifyAction extends DefaultAction {
29
30     /**
31      * Default constructor
32      * @param name the name of the action
33      * @param editor the editor
34      */
35     public UnTabifyAction(String name, SciNotes editor) {
36         super(name, editor);
37     }
38
39     /**
40      * Function doAction
41      */
42     public void doAction() {
43         ScilabEditorPane sep = (ScilabEditorPane) getEditor().getTextPane();
44         int start = sep.getSelectionStart();
45         int end   = sep.getSelectionEnd();
46         TabManager tab = sep.getTabManager();
47         ScilabDocument doc = (ScilabDocument) sep.getDocument();
48
49         doc.mergeEditsBegin();
50         if (start == end) {
51             tab.untabifyLine(start);
52         } else {
53             int[] ret = tab.untabifyLines(start, end - 1);
54             if (ret != null) {
55                 sep.setSelectionStart(ret[0]);
56                 sep.setSelectionEnd(ret[1]);
57             }
58         }
59         doc.mergeEditsEnd();
60     }
61
62     /**
63      * Create the MenuItem for untabify action
64      * @param label label of the menu
65      * @param editor Editor
66      * @param key KeyStroke
67      * @return a MenuItem
68      */
69     public static MenuItem createMenu(String label, SciNotes editor, KeyStroke key) {
70         return createMenu(label, null, new UnTabifyAction(label, editor), key);
71     }
72 }