KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > xsl > actions > TransformAction


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19 package org.netbeans.modules.xsl.actions;
20
21 import org.openide.nodes.Node;
22 import org.openide.util.HelpCtx;
23 import org.openide.util.actions.CookieAction;
24
25 import org.netbeans.api.xml.cookies.TransformableCookie;
26 import org.netbeans.modules.xml.core.actions.CollectXMLAction;
27
28 import org.netbeans.modules.xsl.XSLDataObject;
29 import org.netbeans.modules.xsl.transform.TransformPerformer;
30
31 /**
32  * Perform Transform action on XML document.
33  * <p>
34  * It should be cancellable in future.
35  *
36  * @author Libor Kramolis
37  */

38 public class TransformAction extends CookieAction implements CollectXMLAction.XMLAction {
39     /** Serial Version UID */
40     private static final long serialVersionUID = -640535981015250507L;
41
42     private static TransformPerformer recentPerfomer;
43
44     protected boolean enable(Node[] activatedNodes) {
45         return super.enable(activatedNodes) && ready();
46     }
47
48     /**
49      * Avoid spawing next transformatio until recent one is finished.
50      * This check should be replaced by cancellable actions in future.
51      */

52     private boolean ready() {
53         if (recentPerfomer == null) {
54             return true;
55         } else {
56             if (recentPerfomer.isActive()) {
57                 return false;
58             } else {
59                 recentPerfomer = null;
60                 return true;
61             }
62         }
63     }
64
65     /** */
66     protected Class JavaDoc[] cookieClasses () {
67         return new Class JavaDoc[] { TransformableCookie.class, XSLDataObject.class };
68     }
69
70     /** All selected nodes must be XML one to allow this action. */
71     protected int mode () {
72         return MODE_ALL;
73     }
74
75
76     /** Human presentable name. */
77     public String JavaDoc getName() {
78         return Util.THIS.getString ("NAME_transform_action");
79     }
80
81     /** Do not slow by any icon. */
82     protected String JavaDoc iconResource () {
83         return "org/netbeans/modules/xsl/resources/xsl_transformation.png"; // NOI18N
84
}
85
86     /** Provide accurate help. */
87     public HelpCtx getHelpCtx () {
88         return new HelpCtx (TransformAction.class);
89     }
90
91
92     /** Check all selected nodes. */
93     protected void performAction (Node[] nodes) {
94         recentPerfomer = new TransformPerformer (nodes);
95         recentPerfomer.perform();
96     }
97     
98     protected boolean asynchronous() {
99         return false;
100     }
101
102 }
103
Popular Tags