|
What this is
Other links
The source code/* * Sun Public License Notice * * The contents of this file are subject to the Sun Public License * Version 1.0 (the "License"). You may not use this file except in * compliance with the License. A copy of the License is available at * http://www.sun.com/ * * The Original Code is NetBeans. The Initial Developer of the Original * Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun * Microsystems, Inc. All Rights Reserved. */ package org.netbeans.modules.cvsclient.actions; import java.text.*; import java.awt.event.ActionEvent; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.*; import org.openide.awt.JMenuPlus; import javax.swing.*; import javax.swing.event.*; import org.openide.awt.Actions; import org.openide.util.HelpCtx; import org.openide.util.NbBundle; import org.openide.util.SharedClassObject; import org.openide.util.actions.*; import org.openide.nodes.*; import org.openide.cookies.*; import org.openide.DialogDescriptor; import org.openide.*; import org.openide.loaders.*; import org.openide.filesystems.*; import org.netbeans.modules.vcscore.util.Table; import org.netbeans.modules.vcscore.actions.*; import org.netbeans.modules.javacvs.util.*; import org.netbeans.modules.javacvs.*; import org.netbeans.modules.cvsclient.*; import org.netbeans.modules.javacvs.commands.*; import org.openide.DialogDisplayer; /** * Action that displays a submenu of actions when presented in a menu or popup. * * @author mkleint */ public class CollectingAction extends org.netbeans.modules.vcscore.actions.ClusteringAction { private static final String POPUP_DEFAULT_FOLDER = "vcs/CvsClient/PopupMenu"; //NOI18N // private transient boolean firstPopupDialogShown = false; private transient boolean isOnDir; private transient boolean isOnRoot; private transient boolean isOnFile; private transient FileObject[] foArray; // private transient String commandToExecute = null; // private transient boolean wasCtrl_down = false; private transient int usedUiMode = 0; static final long serialVersionUID = -627768697097225916L; public CollectingAction() { super(); putValue(POPUP_DEFINITION_FOLDER, POPUP_DEFAULT_FOLDER); // delegateToAbstractAction(false); } public String getName () { return NbBundle.getBundle(CollectingAction.class).getString("CollectingAction.displayName"); // NOI18N } protected String iconResource () { return null; //"SampleActionIcon.gif"; } protected void createPresenter(JMenu menu, String menuPath){ /** * REDO This part.. the converting of fileobjects should be done for dir/root/file once only.. * in case there are submenus, this is inneffective, since the method is recursive.. * */ usedUiMode = NbJavaCvsFileSystem.MODE_NOVICE; isOnDir = false; isOnRoot = false; isOnFile = false; foArray = null; HashMap map = getSupporterMap(getActivatedNodes()); if (map == null) return; Iterator it = map.keySet().iterator(); while (it.hasNext()) { // should currently only happen once.. JavaCvsActionSupporter supp = (JavaCvsActionSupporter)it.next(); Set foSet = (Set)map.get(supp); if (foSet != null) { foArray = new FileObject[foSet.size()]; foArray = (FileObject[])foSet.toArray(foArray); foArray = supp.convertFileObjects(foArray); isOnRoot = supp.isOnRoot(foArray); isOnFile = supp.isOnFiles(foArray); isOnDir = supp.isOnDirectories(foArray); FileObject fo = foArray[0]; try { if (fo.getFileSystem() instanceof NbJavaCvsFileSystem) { NbJavaCvsFileSystem fs = (NbJavaCvsFileSystem)fo.getFileSystem(); if (fs.getUiMode() == NbJavaCvsFileSystem.MODE_ADVANCED) { usedUiMode = fs.getUiMode(); } else if (usedUiMode != NbJavaCvsFileSystem.MODE_ADVANCED && fs.getUiMode() == NbJavaCvsFileSystem.MODE_COMMAND_LINE) { usedUiMode = fs.getUiMode(); } } } catch (FileStateInvalidException exc) { } } } putValue(this.IS_SWITCHABLE_POPUP, usedUiMode == NbJavaCvsFileSystem.MODE_NOVICE ? Boolean.TRUE : Boolean.FALSE); super.createPresenter(menu, menuPath); foArray = null; } protected boolean checkItemEnable(ClusterItemVisualizer item) { if (item instanceof CallBackCommandAction) { CallBackCommandAction act = (CallBackCommandAction)item; return act.isEnabledShortcut(foArray, isOnDir, isOnRoot, isOnFile); } return item.isItemEnabled(this); } public void actionPerformed(java.awt.event.ActionEvent e){ // System.out.println("performing cvs client action.."); JavaCvsSettings settings = (JavaCvsSettings)SharedClassObject.findObject(JavaCvsSettings.class, true); if (settings.isFirstTimer() && usedUiMode == NbJavaCvsFileSystem.MODE_NOVICE && !isCTRLDown()) { if (showFirstTimerDialog(e)) super.actionPerformed(e); } else super.actionPerformed(e); /* Object obj = e.getSource(); if (obj instanceof JMenuItem) { JMenuItem item = (JMenuItem)obj; CallBackCommandAction action = (CallBackCommandAction)item.getClientProperty(CLIENT_PROP_ACTION); action.setSwitched(isCTRLDown()); action.performAction(getActivatedNodes(), this); } */ } /** * Function that shows off the warning About Default Switches * dialog and gives the possibility to cancel the command. * @return Should we proceed executing a CVS command */ private boolean showFirstTimerDialog(java.awt.event.ActionEvent e) { JPanel panel = new JPanel(); JLabel label1 = new JLabel(); JTextArea textArea = new JTextArea(); textArea.setEditable(false); textArea.setLineWrap(true); textArea.setWrapStyleWord(true); final JCheckBox box = new JCheckBox(); //final JCheckBox uiMode = new JCheckBox(); panel.setLayout(new java.awt.GridBagLayout()); StringBuffer buff = new StringBuffer(); buff.append(NbBundle.getBundle(CollectingAction.class).getString("CollectingAction.firstTimer1.text")); //NOI18N buff.append("\n\n"); buff.append(NbBundle.getBundle(CollectingAction.class).getString("CollectingAction.firstTimer2.text")); //NOI18N //buff.append("\n\n"); //buff.append(NbBundle.getBundle(CollectingAction.class).getString("CollectingAction.firstTimer3.text")); //NOI18N //buff.append("\n\n"); textArea.setText(buff.toString()); // hack to get the right bg color.. textArea.setBackground(label1.getBackground()); textArea.setRows(11); textArea.setColumns(50); //textArea.setPreferredSize(new Dimension(250, 200)); //textArea.setMinimumSize(new Dimension(250, 150)); GridBagConstraints gridBagConstraints1; gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.gridx = 0; gridBagConstraints1.gridy = 0; gridBagConstraints1.fill = java.awt.GridBagConstraints.BOTH;//HORIZONTAL; gridBagConstraints1.insets = new java.awt.Insets(12, 12, 0, 11); gridBagConstraints1.weighty = 1.0; panel.add(textArea, gridBagConstraints1); /* Actions.setMenuText(uiMode, NbBundle.getMessage(CollectingAction.class, "CollectingAction.interfaceMode.title"), true); //NOI18N uiMode.setSelected(false); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.gridx = 0; gridBagConstraints1.gridy = 3; gridBagConstraints1.insets = new java.awt.Insets(12, 12, 0, 11); gridBagConstraints1.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints1.weightx = 1.0; gridBagConstraints1.weighty = 0.0; panel.add(uiMode, gridBagConstraints1); */ Actions.setMenuText(box, NbBundle.getMessage(CollectingAction.class, "CollectingAction.firstTimerBox"), true); //NOI18N box.setSelected(false); gridBagConstraints1 = new java.awt.GridBagConstraints(); gridBagConstraints1.gridx = 0; gridBagConstraints1.gridy = 4; gridBagConstraints1.insets = new java.awt.Insets(12, 12, 0, 11); gridBagConstraints1.anchor = java.awt.GridBagConstraints.SOUTHWEST; gridBagConstraints1.weightx = 1.0; gridBagConstraints1.weighty = 0.0; panel.add(box, gridBagConstraints1); String title = NbBundle.getBundle(CollectingAction.class).getString("CollectingAction.firstTimer.title"); //NOI18N // panel.setPreferredSize(new Dimension(400, 200)); DialogDescriptor dd; String commandName = null; Object obj = e.getSource(); if (obj instanceof JMenuItem) { JMenuItem item = (JMenuItem)obj; ClusterItemVisualizer action = (ClusterItemVisualizer)item.getClientProperty(CLIENT_PROP_ACTION); commandName = action.getName(); commandName = Actions.cutAmpersand(commandName); // No mnemonics on the default button } if (commandName != null) { Object[] options = new Object[] { commandName, NotifyDescriptor.CANCEL_OPTION }; dd = new DialogDescriptor(panel, title, true, options, commandName, DialogDescriptor.DEFAULT_ALIGN, null, null); } else { dd = new DialogDescriptor(panel, title, true, NotifyDescriptor.OK_CANCEL_OPTION, NotifyDescriptor.OK_OPTION, null); } final DialogDescriptor ddFin = dd; Object retValue = DialogDisplayer.getDefault().notify(ddFin); // Assure, that one of the buttons was pressed. If not, do nothing. if (commandName == null && !NotifyDescriptor.OK_OPTION.equals(retValue) || commandName != null && !commandName.equals(retValue)) return false; if (box.isSelected()) { JavaCvsSettings settings = (JavaCvsSettings)SharedClassObject.findObject(JavaCvsSettings.class, true); settings.setFirstTimer(false); } return true; } } |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.