diff -r 000000000000 -r 61163b28edca frameworkplugins/com.nokia.s60tools.ui/src/com/nokia/s60tools/ui/actions/CopyFromStringProviderToClipboardAction.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frameworkplugins/com.nokia.s60tools.ui/src/com/nokia/s60tools/ui/actions/CopyFromStringProviderToClipboardAction.java Tue Jan 12 13:17:53 2010 -0600 @@ -0,0 +1,129 @@ +/* +* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +package com.nokia.s60tools.ui.actions; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.jface.action.Action; + +import com.nokia.s60tools.ui.ICopyActionHandler; +import com.nokia.s60tools.ui.IStringProvider; +import com.nokia.s60tools.ui.internal.Messages; + +/** + * This is an example of reusable copy handler action + * that utilizes ICopyActionHandler interface + * and acts as client for a concrete copy handler subclassed + * from AbstractTextClipboardCopyHandler class. + * + * Usage: + * + * + *
+ *   public class MyStringProvider implements IStringProvider{
+ *      public String getString(){return "myString";}    
+ *   }
+ *   
+ *   ...
+ *   
+ *   List list = new List(...) //List from org.eclipse.swt.widgets
+ *   MyStringProvider myStringProvider = new MyStringProvider();
+ *   StringArrayClipboardCopyHandler copyHandler = new StringArrayClipboardCopyHandler();		
+ *   Action myCopyAction = new CopyFromStringProviderToClipboardAction(myStringProvider,
+ *                                                           new ICopyActionHandler[]{ copyHandler });
+ *                                                           
+ *   MenuManager menuMgr = new MenuManager("#PopupCopyMenu");
+ *   menuMgr.addMenuListener(new IMenuListener() {
+ * 			public void menuAboutToShow(IMenuManager manager) {
+ *				ThisClass.this.fillViewContextMenu(manager);
+ *			}
+ *		});
+ *	 Menu menu = menuMgr.createContextMenu(list);
+ *	 list.setMenu(menu);   
+ *
+ *  ...
+ *
+ * 	 private void fillViewContextMenu(IMenuManager manager) {
+ *		manager.add(actionCompPropertiesDataCopy);
+ *		manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+ *	 }  
+ *                                                      
+ * 
+ *
+ * + * @see com.nokia.s60tools.ui.ICopyActionHandler + * @see com.nokia.s60tools.ui.AbstractTextClipboardCopyHandler + */ +public class CopyFromStringProviderToClipboardAction extends Action{ + + + /** + * Array of copy handler candidates offering copying services. + * The list is gone through until copy handler supporting the selected + * objects has been found. + */ + private final ICopyActionHandler[] copyHandlerArr; + private final IStringProvider stringProvider; + + /** + * Constructor using default description (Copy) and tooltip text + * (Copies the selected information to clipboard). + * @param stringProvider Class which provides a String. + * @param copyHandlerArr Array of copy handler candidates offering copying services. + */ + public CopyFromStringProviderToClipboardAction(IStringProvider stringProvider, ICopyActionHandler[] copyHandlerArr){ + this.stringProvider = stringProvider; + this.copyHandlerArr = copyHandlerArr; + setText(Messages.getString("CopyFromTableViewerAction.Copy_Action_Text")); //$NON-NLS-1$ + setToolTipText(Messages.getString("CopyFromTableViewerAction.Copy_Action_Tooltip")); //$NON-NLS-1$ + } + + /** + * Constructor allowing creator to define description and + * tooltip text. + * @param stringProvider Class which provides a String + * @param copyHandlerArr Array of copy handler candidates offering copying services. + * @param actionDescrText Action's text that is visible in menus etc. + * @param actionTooltipText Hover text shown when mouse cursor is over the action. + */ + public CopyFromStringProviderToClipboardAction(IStringProvider stringProvider, ICopyActionHandler[] copyHandlerArr, + String actionDescrText, String actionTooltipText){ + this.stringProvider = stringProvider; + this.copyHandlerArr = copyHandlerArr; + setText(actionDescrText); + setToolTipText(actionTooltipText); + } + + /* (non-Javadoc) + * @see org.eclipse.jface.action.IAction#run() + */ + public void run() { + + List objList = new ArrayList(1); + objList.add(stringProvider.getString()); + for (int i = 0; i < copyHandlerArr.length; i++) { + ICopyActionHandler handler = copyHandlerArr[i]; + if(handler.acceptAndCopy(objList)){ + // Handler accepted the input + break; + } + + } + } +}