001 /*
002 * file CcClearPromptCallback.java
003 *
004 * Licensed Materials - Property of IBM
005 * Restricted Materials of IBM
006 *
007 * com.ibm.rational.wvcm.stp.cc.CcClearPromptCallback
008 *
009 * (C) Copyright IBM Corporation 2008, 2011. All Rights Reserved.
010 * Note to U.S. Government Users Restricted Rights: Use, duplication or
011 * disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
012 */
013
014 package com.ibm.rational.wvcm.stp.cc;
015
016 import java.util.List;
017
018 /**
019 * <p>Interface for handling ClearPrompt user interaction requests.
020 * </p>
021 * <p>ClearCase trigger scripts may use ClearPrompt to interactively prompt the
022 * user for various kinds of input or responses. CM API applications that wish
023 * to handle these ClearPrompt requests must implement this interface and
024 * register the implementation object with the ClearCase provider via
025 * <code>CcProvider.registerClearPromptCallback</code>.
026 * </p>
027 * <p>See the clearprompt manual page - <code>cleartool man clearprompt</code> -
028 * for more information.
029 * </p>
030 */
031 public interface CcClearPromptCallback {
032
033 /**
034 * ClearPrompt message type.
035 */
036 public enum MsgType {
037 BOX, OK, WARNING, ERROR
038 }
039
040 /**
041 * Possible responses for {@link CcClearPromptCallback#promptForProceed(String, ProceedOrAbort, List, MsgType)} method.
042 */
043 public enum ProceedOrAbort {
044 PROCEED, ABORT
045 }
046
047 /**
048 * Possible responses for {@link CcClearPromptCallback#promptForYesOrNo(String, YesOrNo, List, MsgType)} method.
049 */
050 public enum YesOrNo {
051 YES, NO, ABORT
052 }
053
054 /**
055 * Callback methods may throw this exception to indicate that the user
056 * wishes to abort the current ClearCase operation - the operation that
057 * caused the trigger to fire.
058 */
059 public class AbortException extends Exception {
060 }
061
062 /**
063 * Prompt the user for one or more lines of text.
064 * @param promptMsg Prompt message to display
065 * @param defaultResponse Default response to display
066 * @param multiLineOk Allow user to enter multiple lines
067 * @param maskInput Mask user input for password entry
068 * @return user's response string
069 * @exception AbortException to indicate the user wants to abort the
070 * current ClearCase operation
071 */
072 public String
073 promptForText(
074 String promptMsg,
075 String defaultResponse,
076 boolean multiLineOk,
077 boolean maskInput)
078 throws AbortException;
079
080 /**
081 * Ask the user for a "yes" or "no" response to a question.
082 * @param promptMsg Prompt message to display
083 * @param defaultChoice Default response to display
084 * @param choices Optional subset of responses to display
085 * @param msgType message type: OK, WARNING, ERROR, BOX
086 * @return user's response: YES, NO, or ABORT
087 */
088 public YesOrNo
089 promptForYesOrNo(
090 String promptMsg,
091 YesOrNo defaultChoice,
092 List<YesOrNo> choices,
093 MsgType msgType);
094
095 /**
096 * Ask the user whether to proceed with the current ClearCase operation
097 * or abort it.
098 * @param promptMsg Prompt message to display
099 * @param defaultChoice Default response to display
100 * @param choices Optional subset of responses to display
101 * @param msgType message type: OK, WARNING, ERROR, BOX
102 * @return user's response: PROCEED or ABORT
103 */
104 public ProceedOrAbort
105 promptForProceed(
106 String promptMsg,
107 ProceedOrAbort defaultChoice,
108 List<ProceedOrAbort> choices,
109 MsgType msgType);
110
111 /**
112 * Ask the user to select a single item from a list of choices.
113 * @param promptMsg Prompt message to display
114 * @param choices Possible choices
115 * @return user's selection from list of possible choices
116 * @exception AbortException to indicate the user wants to abort the
117 * current ClearCase operation
118 */
119 public String
120 promptForChoice(
121 String promptMsg,
122 List<String> choices)
123 throws AbortException;
124
125 /**
126 * Ask the user to select zero or more items from a list of choices.
127 * @param promptMsg Prompt message to display
128 * @param choices Possible choices
129 * @return user's selection(s) from list of possible choices
130 * @exception AbortException to indicate the user wants to abort the
131 * current ClearCase operation
132 */
133 public List<String>
134 promptForMultiChoice(
135 String promptMsg,
136 List<String> choices)
137 throws AbortException;
138 }