/* * Copyright (c) 2015, UltraMixer Digital Audio Solutions <info@ultramixer.com>, Seth J. Morabito <sethm@loomcom.com> * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package com.ultramixer.jarbundler; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Represents an Info.plist Service specifying a service provided by the application. * * Port Name - The name of the port the application monitors for incoming service requests. * * * Message - The name of the instance method to invoke for the service. * In Objective-C, the instance method must be of the form messageName:userData:error:. * In Java, the instance method must be of the form messageName(NSPasteBoard,String). * * * Menu Item - The text to add to the Services menu. The value must be unique. * You can use a slash character "/" to specify a submenu. For example, Mail/Send * would appear in the Services Menu as a menu named Mail with an item named Send. * * * Send Types - A list of the data type names that can be read by the service. * The NSPasteboard class description lists several common data types. * * * Return Types - A list of the data type names that can be returned by the service. * The NSPasteboard class description lists several common data types. * You must specify either Return Types, Send Types or both. * * You must specify either Send Types, Return Types or both. * * * Key Equivalent - This attribute is optional. The keyboard equivalent used to invoke * the service menu command. The value has to be a single character. Users invoke this * keyboard equivalent by pressing the Command and Shift key modifiers along with the character. * * * User Data - This attribute is optional. The value is free choosable and is passed * to the method as second parameter. * * * Timeout - This attribute is optional. It indicates the number of milliseconds * Services should wait for a response from the application providing * a service when a respond is required. * * * <service portname="jarBundler" * message="processRequest" * menuitem="JarBundler/Process Request" * sendtypes="NSStringPboardType,NSFilenamesPboardType" * returntypes="NSStringPboardType" * keyequivalent="p" * userdata="a string passed to the method" * timeout="5000" /> */ public class Service { private static final List EMPTYLIST = new ArrayList(0); /** The name of the port the application monitors for incoming service requests. */ private String portName = null; /** * * The name of the instance method to invoke for the service. * In Objective-C, the instance method must be of the form messageName:userData:error:. * * In Java, the instance method must be of the form messageName(NSPasteBoard,String). */ private String message = null; /** * * The text to add to the Services menu. The value must be unique. * * You can use a slash character "/" to specify a submenu. For example, Mail/Send * * would appear in the Services Menu as a menu named Mail with an item named Send. */ private String menuItem = null; /** * A list of the data type names that can be read by the service. * * The NSPasteboard class description lists several common data types. * * You must specify either Send Types, Return Types or both. */ private String[] sendTypes = null; /** * A list of the data type names that can be returned by the service. * * The NSPasteboard class description lists several common data types. * * You must specify either Return Types, Send Types or both. */ private String[] returnTypes = null; /** * This attribute is optional. The keyboard equivalent used to invoke * * the service menu command. The value has to be a single character. Users invoke this * * keyboard equivalent by pressing the Command and Shift key modifiers along with the character. * */ private String keyEquivalent = null; /** * * This attribute is optional. The value is free choosable and is passed * * to the method as second parameter. * */ private String userData = null; /** * * This attribute is optional. It indicates the number of milliseconds * * Services should wait for a response from the application providing * * a service when a respond is required. * */ private String timeout = null; public void setPortName(String portName) { this.portName = portName; } public String getPortName() { return portName; } public void setMessage(String message) { this.message = message; } public String getMessage() { return message; } public void setMenuItem(String menuItem) { this.menuItem = menuItem; } public String getMenuItem() { return menuItem; } public void setSendTypes(String sendTypes) { this.sendTypes = sendTypes.split("[\\s,]"); } public List getSendTypes() { return (sendTypes == null) ? EMPTYLIST : Arrays.asList(sendTypes); } public void setReturnTypes(String returnTypes) { this.returnTypes = returnTypes.split("[\\s,]"); } public List getReturnTypes() { return (returnTypes == null) ? EMPTYLIST : Arrays.asList(returnTypes); } public void setKeyEquivalent(String keyEquivalent) { this.keyEquivalent = keyEquivalent; } public String getKeyEquivalent() { return keyEquivalent; } public void setUserData(String userData) { this.userData = userData; } public String getUserData() { return userData; } public void setTimeout(String timeout) { this.timeout = timeout; } public String getTimeout() { return timeout; } }