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 134643
Collapse All | Expand All

(-)a/subversion/src/org/netbeans/modules/subversion/ui/commit/Bundle.properties (-1 / +7 lines)
Lines 179-182 Link Here
179
179
180
LBL_Advanced=&Advanced:
180
LBL_Advanced=&Advanced:
181
LBL_CommitDialog_FilesToCommit=&Files to Commit:
181
LBL_CommitDialog_FilesToCommit=&Files to Commit:
182
LBL_ResolvingConflicts=Resolving Conflicts...
182
LBL_ResolvingConflicts=Resolving Conflicts...
183
184
#popup for commit message
185
CTL_MenuItem_SelectAll=Select &All
186
CTL_MenuItem_Cut=Cu&t
187
CTL_MenuItem_Copy=Cop&y
188
CTL_MenuItem_Paste=&Paste
(-)a/subversion/src/org/netbeans/modules/subversion/ui/commit/CommitMessageMouseAdapter.java (+103 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2011 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
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 *
40
 * Portions Copyrighted 2011 Sun Microsystems, Inc.
41
 */
42
package org.netbeans.modules.subversion.ui.commit;
43
44
import java.awt.Component;
45
import java.awt.event.ActionEvent;
46
import java.awt.event.ActionListener;
47
import java.awt.event.InputEvent;
48
import java.awt.event.KeyEvent;
49
import java.awt.event.MouseAdapter;
50
import java.awt.event.MouseEvent;
51
import javax.swing.JMenuItem;
52
import javax.swing.JPopupMenu;
53
import javax.swing.KeyStroke;
54
import javax.swing.text.JTextComponent;
55
import org.openide.actions.CopyAction;
56
import org.openide.actions.CutAction;
57
import org.openide.actions.PasteAction;
58
import org.openide.util.actions.CallbackSystemAction;
59
import org.openide.util.actions.SystemAction;
60
61
/**
62
 * Mouse adapter for the commit message component.
63
 * 
64
 * @author Mario Schroeder
65
 */
66
public class CommitMessageMouseAdapter extends MouseAdapter {
67
68
    private CommitPopupBuilder popupBuilder;
69
70
    /**
71
     * Creates a new context popupMenu for a text component.
72
     * @param textComponent 
73
     */
74
    public CommitMessageMouseAdapter() {
75
76
        popupBuilder = new CommitPopupBuilder();
77
    }
78
79
    @Override
80
    public void mousePressed(MouseEvent e) {
81
        
82
        if (e.getModifiers() == InputEvent.BUTTON3_MASK) { 
83
            show(e.getComponent(), e.getX(), e.getY());
84
        }
85
    }
86
87
    /**
88
     * Shows the popup popupMenu if the invoker is a instance of JTextComponent.
89
     */
90
    private void show(Component invoker, int x, int y) {
91
        
92
        //to avoid class cast exception in action listener
93
        if (invoker instanceof JTextComponent) {
94
            JTextComponent textComponent = (JTextComponent)invoker;
95
            JPopupMenu popupMenu = popupBuilder.getPopup(textComponent);
96
            popupMenu.setInvoker(invoker);
97
            popupMenu.show(invoker, x, y);
98
        }
99
    }
100
101
   
102
103
}
(-)a/subversion/src/org/netbeans/modules/subversion/ui/commit/CommitPanel.java (+1 lines)
Lines 373-378 Link Here
373
        jScrollPane1.setViewportView(messageTextArea);
373
        jScrollPane1.setViewportView(messageTextArea);
374
        messageTextArea.getAccessibleContext().setAccessibleName(getMessage("ACSN_CommitForm_Message")); // NOI18N
374
        messageTextArea.getAccessibleContext().setAccessibleName(getMessage("ACSN_CommitForm_Message")); // NOI18N
375
        messageTextArea.getAccessibleContext().setAccessibleDescription(getMessage("ACSD_CommitForm_Message")); // NOI18N
375
        messageTextArea.getAccessibleContext().setAccessibleDescription(getMessage("ACSD_CommitForm_Message")); // NOI18N
376
        messageTextArea.addMouseListener(new CommitMessageMouseAdapter());
376
377
377
        Mnemonics.setLocalizedText(filesSectionButton, getMessage("LBL_CommitDialog_FilesToCommit")); // NOI18N
378
        Mnemonics.setLocalizedText(filesSectionButton, getMessage("LBL_CommitDialog_FilesToCommit")); // NOI18N
378
        Mnemonics.setLocalizedText(filesLabel, getMessage("CTL_CommitForm_FilesToCommit")); // NOI18N
379
        Mnemonics.setLocalizedText(filesLabel, getMessage("CTL_CommitForm_FilesToCommit")); // NOI18N
(-)a/subversion/src/org/netbeans/modules/subversion/ui/commit/CommitPopupBuilder.java (+134 lines)
Line 0 Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2011 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
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 *
40
 * Portions Copyrighted 2011 Sun Microsystems, Inc.
41
 */
42
package org.netbeans.modules.subversion.ui.commit;
43
44
import java.awt.Toolkit;
45
import java.awt.datatransfer.DataFlavor;
46
import java.awt.event.KeyEvent;
47
import javax.swing.Action;
48
import javax.swing.ActionMap;
49
import javax.swing.JMenuItem;
50
import javax.swing.JPopupMenu;
51
import javax.swing.KeyStroke;
52
import javax.swing.text.DefaultEditorKit;
53
import javax.swing.text.JTextComponent;
54
import org.openide.awt.Mnemonics;
55
import org.openide.util.NbBundle;
56
57
/**
58
 * Builder for the popup menu.
59
 * 
60
 * @author Mario Schroeder
61
 */
62
class CommitPopupBuilder {
63
    
64
    private JPopupMenu popupPresenter;
65
    
66
    private Action cutAction;
67
    
68
    private Action copyAction;
69
    
70
    private Action pasteAction;
71
    
72
    private Action selectAllAction;
73
        
74
    /**
75
     * Returns the popup menu.
76
     * @param component the text component which calls the method
77
     * @return a poup menu
78
     */
79
    JPopupMenu getPopup(JTextComponent component) {
80
        
81
        if(popupPresenter == null){
82
            build(component.getActionMap());
83
        }
84
        
85
        boolean textSelected = component.getSelectedText() != null;       
86
        
87
        cutAction.setEnabled(textSelected);
88
        copyAction.setEnabled(textSelected);
89
        
90
        boolean hasClipboardText = Toolkit.getDefaultToolkit().getSystemClipboard()
91
            .isDataFlavorAvailable(DataFlavor.stringFlavor);
92
        
93
        pasteAction.setEnabled(hasClipboardText);
94
        
95
        return popupPresenter;
96
    }
97
98
    /**
99
     * This method builds the popup menu.
100
     */
101
    private void build(ActionMap actionMap) {
102
        
103
        popupPresenter = new JPopupMenu();
104
        
105
        cutAction = actionMap.get(DefaultEditorKit.cutAction);
106
        copyAction = actionMap.get(DefaultEditorKit.copyAction);
107
        pasteAction = actionMap.get(DefaultEditorKit.pasteAction);
108
        selectAllAction = actionMap.get(DefaultEditorKit.selectAllAction);
109
        
110
        popupPresenter.add(createMenuItem("CTL_MenuItem_Cut", KeyEvent.VK_X, cutAction));
111
        popupPresenter.add(createMenuItem("CTL_MenuItem_Copy", KeyEvent.VK_C, copyAction));
112
        popupPresenter.add(createMenuItem("CTL_MenuItem_Paste", KeyEvent.VK_V, pasteAction));
113
        popupPresenter.addSeparator();
114
        popupPresenter.add(createMenuItem("CTL_MenuItem_SelectAll", KeyEvent.VK_A, selectAllAction));
115
    }
116
    
117
    /**
118
     * Creates a new menu item.
119
     * @param msgKey key for the message within resource bundle.
120
     * @param key key for the accelerator
121
     * @param action the underlying action for the menuitem
122
     * @return a new menu item
123
     */
124
    private JMenuItem createMenuItem(String msgKey, int key, Action action) {
125
        
126
        String msg = NbBundle.getMessage(getClass(), msgKey);
127
        JMenuItem item = new JMenuItem(action);        
128
        Mnemonics.setLocalizedText(item, msg);
129
        int keyMask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
130
        item.setAccelerator(KeyStroke.getKeyStroke(key, keyMask, false));
131
        return item;
132
    }
133
134
}

Return to bug 134643