This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 191394
Collapse All | Expand All

(-)a/api.debugger/apichanges.xml (+18 lines)
Lines 445-450 Link Here
445
        <issue number="190080"/>
445
        <issue number="190080"/>
446
    </change>
446
    </change>
447
447
448
    <change id="EvaluateAction">
449
        <api name="DebuggerCoreAPI"/>
450
        <summary>Evaluate action is made generic, based on action providers.</summary>
451
        <version major="1" minor="29"/>
452
        <date day="12" month="11" year="2010"/>
453
        <author login="mentlicher"/>
454
        <compatibility binary="compatible" source="compatible" addition="yes"/>
455
        <description>
456
             <p>
457
             Evaluate action is moved from JPDA Debugger into Debugger Core UI module.
458
             ActionsManager.ACTION_EVALUATE constant was added for use by debugger-specific
459
             provider (ActionsProvider) of Evaluate action.
460
             </p>
461
        </description>
462
        <class package="org.netbeans.api.debugger" name="ActionsManager" />
463
        <issue number="191394"/>
464
    </change>
465
448
</changes>
466
</changes>
449
467
450
  <!-- Now the surrounding HTML text and document structure: -->
468
  <!-- Now the surrounding HTML text and document structure: -->
(-)a/api.debugger/manifest.mf (-1 / +1 lines)
Lines 1-5 Link Here
1
Manifest-Version: 1.0
1
Manifest-Version: 1.0
2
OpenIDE-Module: org.netbeans.api.debugger/1
2
OpenIDE-Module: org.netbeans.api.debugger/1
3
OpenIDE-Module-Localizing-Bundle: org/netbeans/api/debugger/Bundle.properties
3
OpenIDE-Module-Localizing-Bundle: org/netbeans/api/debugger/Bundle.properties
4
OpenIDE-Module-Specification-Version: 1.28
4
OpenIDE-Module-Specification-Version: 1.29
5
OpenIDE-Module-Layer: org/netbeans/api/debugger/layer.xml
5
OpenIDE-Module-Layer: org/netbeans/api/debugger/layer.xml
(-)a/api.debugger/src/org/netbeans/api/debugger/ActionsManager.java (-1 / +5 lines)
Lines 113-119 Link Here
113
     * @since 1.24 */
113
     * @since 1.24 */
114
    public static final Object              ACTION_NEW_WATCH = "newWatch";
114
    public static final Object              ACTION_NEW_WATCH = "newWatch";
115
115
116
    
116
    /** Action constant for Evaluate Action.
117
     *  @since 1.29 */
118
    public static final Object              ACTION_EVALUATE = "evaluate";
119
120
117
    // variables ...............................................................
121
    // variables ...............................................................
118
    
122
    
119
    private Vector                  listener = new Vector ();
123
    private Vector                  listener = new Vector ();
(-)a/debugger.jpda.ui/src/org/netbeans/modules/debugger/jpda/resources/mf-layer.xml (-9 / +1 lines)
Lines 119-125 Link Here
119
    <folder name="Actions">
119
    <folder name="Actions">
120
        <folder name="Debug">
120
        <folder name="Debug">
121
            <file name="org-netbeans-modules-debugger-jpda-ui-actions-ToggleMethodFieldBreakpointAction.instance"/>
121
            <file name="org-netbeans-modules-debugger-jpda-ui-actions-ToggleMethodFieldBreakpointAction.instance"/>
122
            <file name="org-netbeans-modules-debugger-jpda-ui-actions-EvaluateAction.instance"/>
123
            <file name="org-netbeans-modules-debugger-jpda-ui-debugging-ThreadsHistoryAction.instance"/>
122
            <file name="org-netbeans-modules-debugger-jpda-ui-debugging-ThreadsHistoryAction.instance"/>
124
            <file name="org-netbeans-modules-debugger-jpda-ui-actions-SetCurrentThreadFromHistoryAction.instance"/>
123
            <file name="org-netbeans-modules-debugger-jpda-ui-actions-SetCurrentThreadFromHistoryAction.instance"/>
125
                <!--attr name="instanceCreate" methodvalue="org.openide.awt.Actions.alwaysEnabled"/>
124
                <!--attr name="instanceCreate" methodvalue="org.openide.awt.Actions.alwaysEnabled"/>
Lines 258-268 Link Here
258
                <attr name="originalFile" stringvalue="Actions/Debug/org-netbeans-modules-debugger-ui-actions-AddWatchAction.instance"/>
257
                <attr name="originalFile" stringvalue="Actions/Debug/org-netbeans-modules-debugger-ui-actions-AddWatchAction.instance"/>
259
                <attr name="position" intvalue="2500"/>
258
                <attr name="position" intvalue="2500"/>
260
            </file>
259
            </file>
261
            <file name="org-netbeans-modules-debugger-ui-actions-EvaluateAction.shadow">
260
        </folder>
262
                <attr name="originalFile" stringvalue="Actions/Debug/org-netbeans-modules-debugger-jpda-ui-actions-EvaluateAction.instance"/>
263
                <attr name="position" intvalue="2600"/>
264
            </file>
265
            </folder>
266
        <folder name="Window">
261
        <folder name="Window">
267
            <folder name="Debug">
262
            <folder name="Debug">
268
                <file name="org-netbeans-modules-debugger-jpda-ui-actions-DebuggingViewAction.shadow">
263
                <file name="org-netbeans-modules-debugger-jpda-ui-actions-DebuggingViewAction.shadow">
Lines 283-291 Link Here
283
        <!-- <file name="D-9.shadow">  TODO: Redefine, conflicts with Actions/View/org.netbeans.modules.cnd.classview-ClassViewAction.instance, defined in org.netbeans.modules.cnd.classview/1
278
        <!-- <file name="D-9.shadow">  TODO: Redefine, conflicts with Actions/View/org.netbeans.modules.cnd.classview-ClassViewAction.instance, defined in org.netbeans.modules.cnd.classview/1
284
            <attr name="originalFile" stringvalue="Actions/Debug/org-netbeans-modules-debugger-jpda-ui-actions-GoToHitAction.instance"/>
279
            <attr name="originalFile" stringvalue="Actions/Debug/org-netbeans-modules-debugger-jpda-ui-actions-GoToHitAction.instance"/>
285
        </file> -->
280
        </file> -->
286
        <file name="D-F9.shadow">
287
            <attr name="originalFile" stringvalue="Actions/Debug/org-netbeans-modules-debugger-jpda-ui-actions-EvaluateAction.instance"/>
288
        </file>
289
    </folder>
281
    </folder>
290
282
291
    <folder name="Windows2">
283
    <folder name="Windows2">
(-)a/debugger.jpda.ui/src/org/netbeans/modules/debugger/jpda/ui/actions/EvaluateAction.java (-165 lines)
Removed Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * Contributor(s):
28
 *
29
 * The Original Software is NetBeans. The Initial Developer of the Original
30
 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
31
 * Microsystems, Inc. All Rights Reserved.
32
 *
33
 * If you wish your version of this file to be governed by only the CDDL
34
 * or only the GPL Version 2, indicate your decision by adding
35
 * "[Contributor] elects to include this software in this distribution
36
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
37
 * single choice of license, a recipient has the option to distribute
38
 * your version of this file under either the CDDL, the GPL Version 2 or
39
 * to extend the choice of license to its licensees as provided above.
40
 * However, if you add GPL Version 2 code and therefore, elected the GPL
41
 * Version 2 license, then the option applies only if the new code is
42
 * made subject to such option by the copyright holder.
43
 */
44
45
package org.netbeans.modules.debugger.jpda.ui.actions;
46
47
import java.awt.event.ActionEvent;
48
import java.beans.PropertyChangeEvent;
49
import java.beans.PropertyChangeListener;
50
import java.lang.ref.Reference;
51
import java.lang.ref.WeakReference;
52
import javax.swing.AbstractAction;
53
import javax.swing.Action;
54
import javax.swing.SwingUtilities;
55
import org.netbeans.api.debugger.DebuggerEngine;
56
import org.netbeans.api.debugger.DebuggerManager;
57
import org.netbeans.api.debugger.DebuggerManagerAdapter;
58
import org.netbeans.api.debugger.jpda.JPDADebugger;
59
import org.netbeans.modules.debugger.jpda.ui.CodeEvaluator;
60
import org.openide.util.NbBundle;
61
62
/**
63
 * Invokes the expression evaluator GUI
64
 *
65
 * @author Martin Entlicher
66
 */
67
public class EvaluateAction extends AbstractAction implements PropertyChangeListener,
68
                                                              Runnable {
69
70
    private EnableListener listener;
71
    private transient Reference lastDebuggerRef = new WeakReference(null);
72
73
    public EvaluateAction () {
74
//        listener = new EnableListener (this);
75
//        DebuggerManager.getDebuggerManager().addDebuggerListener(
76
//                DebuggerManager.PROP_CURRENT_ENGINE,
77
//                listener);
78
        putValue (
79
            Action.NAME,
80
            NbBundle.getMessage(EvaluateAction.class, "CTL_Evaluate") // NOI18N
81
        );
82
//        checkEnabled();
83
    }
84
85
    private synchronized boolean canBeEnabled() {
86
        DebuggerEngine de = DebuggerManager.getDebuggerManager().getCurrentEngine();
87
        if (de == null) return false;
88
        JPDADebugger debugger = de.lookupFirst(null, JPDADebugger.class);
89
        JPDADebugger lastDebugger = (JPDADebugger) lastDebuggerRef.get();
90
        if (lastDebugger != null && debugger != lastDebugger) {
91
            lastDebugger.removePropertyChangeListener(
92
                    JPDADebugger.PROP_CURRENT_THREAD,
93
                    this);
94
            lastDebuggerRef = new WeakReference(null);
95
        }
96
        if (debugger != null) {
97
            lastDebuggerRef = new WeakReference(debugger);
98
            debugger.addPropertyChangeListener(
99
                    JPDADebugger.PROP_CURRENT_THREAD,
100
                    this);
101
            return (debugger.getCurrentThread() != null);
102
        } else {
103
            return false;
104
        }
105
    }
106
107
    private void checkEnabled() {
108
        SwingUtilities.invokeLater(this);
109
    }
110
111
    public void run() {
112
        setEnabled(canBeEnabled());
113
    }
114
115
    public void actionPerformed (ActionEvent evt) {
116
//        DebuggerEngine de = DebuggerManager.getDebuggerManager().getCurrentEngine();
117
//        if (de == null) return;
118
//        JPDADebugger debugger = de.lookupFirst(null, JPDADebugger.class);
119
//        if (debugger == null) return;
120
121
        CodeEvaluator.openEvaluator();
122
123
        // Evaluator2.open(debugger);
124
    }
125
126
    public void propertyChange(PropertyChangeEvent propertyChangeEvent) {
127
        SwingUtilities.invokeLater(new Runnable() {
128
            public void run() {
129
                synchronized (this) {
130
                    JPDADebugger lastDebugger = (JPDADebugger) lastDebuggerRef.get();
131
                    if (lastDebugger != null) {
132
                        setEnabled(lastDebugger.getCurrentThread() != null);
133
                    }
134
                }
135
            }
136
        });
137
    }
138
139
    @Override
140
    protected void finalize() throws Throwable {
141
//        DebuggerManager.getDebuggerManager().removeDebuggerListener(
142
//                DebuggerManager.PROP_CURRENT_ENGINE,
143
//                listener);
144
    }
145
146
147
    private static class EnableListener extends DebuggerManagerAdapter {
148
149
        private Reference actionRef;
150
151
        public EnableListener(EvaluateAction action) {
152
            actionRef = new WeakReference(action);
153
        }
154
155
        @Override
156
        public void propertyChange(PropertyChangeEvent evt) {
157
            EvaluateAction action = (EvaluateAction) actionRef.get();
158
            if (action != null) {
159
                action.checkEnabled();
160
            }
161
        }
162
163
    }
164
165
}
(-)b8470e9b3bac (+105 lines)
Added Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * Contributor(s):
28
 *
29
 * The Original Software is NetBeans. The Initial Developer of the Original
30
 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
31
 * Microsystems, Inc. All Rights Reserved.
32
 *
33
 * If you wish your version of this file to be governed by only the CDDL
34
 * or only the GPL Version 2, indicate your decision by adding
35
 * "[Contributor] elects to include this software in this distribution
36
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
37
 * single choice of license, a recipient has the option to distribute
38
 * your version of this file under either the CDDL, the GPL Version 2 or
39
 * to extend the choice of license to its licensees as provided above.
40
 * However, if you add GPL Version 2 code and therefore, elected the GPL
41
 * Version 2 license, then the option applies only if the new code is
42
 * made subject to such option by the copyright holder.
43
 */
44
45
package org.netbeans.modules.debugger.jpda.ui.actions;
46
47
import java.awt.event.ActionEvent;
48
import java.beans.PropertyChangeEvent;
49
import java.beans.PropertyChangeListener;
50
import java.lang.ref.Reference;
51
import java.lang.ref.WeakReference;
52
import java.util.Collections;
53
import java.util.Set;
54
import javax.swing.AbstractAction;
55
import javax.swing.Action;
56
import javax.swing.SwingUtilities;
57
import org.netbeans.api.debugger.ActionsManager;
58
import org.netbeans.api.debugger.DebuggerEngine;
59
import org.netbeans.api.debugger.DebuggerManager;
60
import org.netbeans.api.debugger.DebuggerManagerAdapter;
61
import org.netbeans.api.debugger.jpda.JPDADebugger;
62
import org.netbeans.modules.debugger.jpda.ui.CodeEvaluator;
63
import org.netbeans.spi.debugger.ActionsProvider;
64
import org.netbeans.spi.debugger.ContextProvider;
65
import org.openide.util.NbBundle;
66
import org.openide.util.RequestProcessor;
67
68
/**
69
 * Invokes the expression evaluator GUI
70
 *
71
 * @author Martin Entlicher
72
 */
73
@ActionsProvider.Registration(path="netbeans-JPDASession", actions="evaluate")
74
public class EvaluateActionProvider extends JPDADebuggerAction {
75
76
    public EvaluateActionProvider(ContextProvider lookupProvider) {
77
        super (
78
            lookupProvider.lookupFirst(null, JPDADebugger.class)
79
        );
80
        getDebuggerImpl ().addPropertyChangeListener
81
            (JPDADebugger.PROP_CURRENT_THREAD, this);
82
    }
83
84
    @Override
85
    public Set getActions () {
86
        return Collections.singleton (ActionsManager.ACTION_EVALUATE);
87
    }
88
89
    @Override
90
    protected void checkEnabled (int debuggerState) {
91
        setEnabledSingleAction(getDebuggerImpl().getCurrentThread() != null);
92
    }
93
94
    @Override
95
    public void postAction(Object action, Runnable actionPerformedNotifier) {
96
        CodeEvaluator.openEvaluator();
97
    }
98
99
    @Override
100
    public void doAction(Object action) {
101
        // Not called since we override postAction().
102
        throw new UnsupportedOperationException("Not supported.");
103
    }
104
105
}
(-)a/spi.debugger.ui/src/org/netbeans/modules/debugger/resources/mf-layer.xml (+12 lines)
Lines 146-151 Link Here
146
                <attr name="instanceCreate" methodvalue="org.netbeans.modules.debugger.ui.actions.DebuggerAction.createStepOperationAction"/>
146
                <attr name="instanceCreate" methodvalue="org.netbeans.modules.debugger.ui.actions.DebuggerAction.createStepOperationAction"/>
147
                <attr name="instanceOf" stringvalue="javax.swing.Action"/>
147
                <attr name="instanceOf" stringvalue="javax.swing.Action"/>
148
            </file>    
148
            </file>    
149
            <file name="org-netbeans-modules-debugger-ui-actions-EvaluateAction.instance">
150
                <attr name="instanceClass" stringvalue="org.netbeans.modules.debugger.ui.actions.DebuggerAction"/>
151
                <attr name="instanceCreate" methodvalue="org.netbeans.modules.debugger.ui.actions.DebuggerAction.createEvaluateAction"/>
152
                <attr name="instanceOf" stringvalue="javax.swing.Action"/>
153
            </file>
149
154
150
            <file name="org-netbeans-modules-debugger-ui-actions-DebugMainProjectAction.instance"/>
155
            <file name="org-netbeans-modules-debugger-ui-actions-DebugMainProjectAction.instance"/>
151
            <file name="org-netbeans-modules-debugger-ui-actions-DebugProjectAction.instance"/>
156
            <file name="org-netbeans-modules-debugger-ui-actions-DebugProjectAction.instance"/>
Lines 201-206 Link Here
201
                <attr name="originalFile" stringvalue="Actions/Debug/org-netbeans-modules-debugger-ui-actions-DebugTestFileAction.instance"/>
206
                <attr name="originalFile" stringvalue="Actions/Debug/org-netbeans-modules-debugger-ui-actions-DebugTestFileAction.instance"/>
202
                <attr name="position" intvalue="266"/>
207
                <attr name="position" intvalue="266"/>
203
            </file>
208
            </file>
209
            <file name="org-netbeans-modules-debugger-ui-actions-EvaluateAction.shadow">
210
                <attr name="originalFile" stringvalue="Actions/Debug/org-netbeans-modules-debugger-ui-actions-EvaluateAction.instance"/>
211
                <attr name="position" intvalue="2600"/>
212
            </file>
204
        </folder>
213
        </folder>
205
        
214
        
206
        <folder name="Window">
215
        <folder name="Window">
Lines 302-307 Link Here
302
        <file name="S-F8.shadow">
311
        <file name="S-F8.shadow">
303
            <attr name="originalFile" stringvalue="Actions/Debug/org-netbeans-modules-debugger-ui-actions-StepOperationAction.instance"/>
312
            <attr name="originalFile" stringvalue="Actions/Debug/org-netbeans-modules-debugger-ui-actions-StepOperationAction.instance"/>
304
        </file>
313
        </file>
314
        <file name="D-F9.shadow">
315
            <attr name="originalFile" stringvalue="Actions/Debug/org-netbeans-modules-debugger-ui-actions-EvaluateAction.instance"/>
316
        </file>
305
    </folder>
317
    </folder>
306
318
307
    <folder name="Windows2">
319
    <folder name="Windows2">
(-)a/spi.debugger.ui/src/org/netbeans/modules/debugger/ui/actions/Bundle.properties (+1 lines)
Lines 115-120 Link Here
115
#RunToCursorAction
115
#RunToCursorAction
116
CTL_Run_to_cursor_action_name=R&un to Cursor
116
CTL_Run_to_cursor_action_name=R&un to Cursor
117
117
118
CTL_Evaluate=Evaluate E&xpression...
118
119
119
#AddWatchPerformer
120
#AddWatchPerformer
120
CTL_WatchDialog_Title=New Watch
121
CTL_WatchDialog_Title=New Watch
(-)a/spi.debugger.ui/src/org/netbeans/modules/debugger/ui/actions/DebuggerAction.java (+6 lines)
Lines 282-287 Link Here
282
        return action;
282
        return action;
283
    }
283
    }
284
284
285
    public static DebuggerAction createEvaluateAction() {
286
        DebuggerAction action = new DebuggerAction(ActionsManager.ACTION_EVALUATE);
287
        action.putValue (Action.NAME, "CTL_Evaluate"); // NOI18N
288
        return action;
289
    }
290
285
    /**
291
    /**
286
     * Use this method to register an additional debugger action.
292
     * Use this method to register an additional debugger action.
287
     * Register in a module layer manually as follows:
293
     * Register in a module layer manually as follows:

Return to bug 191394