1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/*
2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *  Licensed to the Apache Software Foundation (ASF) under one or more
3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *  contributor license agreements.  See the NOTICE file distributed with
4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *  this work for additional information regarding copyright ownership.
5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *  The ASF licenses this file to You under the Apache License, Version 2.0
6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *  (the "License"); you may not use this file except in compliance with
7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *  the License.  You may obtain a copy of the License at
8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *     http://www.apache.org/licenses/LICENSE-2.0
10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *  Unless required by applicable law or agreed to in writing, software
12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *  distributed under the License is distributed on an "AS IS" BASIS,
13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *  See the License for the specific language governing permissions and
15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *  limitations under the License.
16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.apache.harmony.javax.security.auth.callback;
19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport java.io.Serializable;
21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class ConfirmationCallback implements Callback, Serializable {
25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    private static final long serialVersionUID = -9095656433782481624L;
27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static final int YES = 0; // default options
29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static final int NO = 1;
31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static final int CANCEL = 2;
33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static final int OK = 3;
35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static final int YES_NO_OPTION = 0; // options type
37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static final int YES_NO_CANCEL_OPTION = 1;
39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static final int OK_CANCEL_OPTION = 2;
41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static final int UNSPECIFIED_OPTION = -1;
43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static final int INFORMATION = 0; // messages type
45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static final int WARNING = 1;
47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static final int ERROR = 2;
49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    private String prompt;
51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    private int messageType;
53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
54d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    private int optionType = UNSPECIFIED_OPTION;
55d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
56d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    private int defaultOption;
57d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
58d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    private String[] options;
59d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
60d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    private int selection;
61d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
62d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public ConfirmationCallback(int messageType, int optionType, int defaultOption) {
63d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        super();
64d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        if (messageType > ERROR || messageType < INFORMATION) {
65d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            throw new IllegalArgumentException("auth.16"); //$NON-NLS-1$
66d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
67d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
68d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        switch (optionType) {
69d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            case YES_NO_OPTION:
70d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                if (defaultOption != YES && defaultOption != NO) {
71d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    throw new IllegalArgumentException("auth.17"); //$NON-NLS-1$
72d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                }
73d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                break;
74d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            case YES_NO_CANCEL_OPTION:
75d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                if (defaultOption != YES && defaultOption != NO && defaultOption != CANCEL) {
76d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    throw new IllegalArgumentException("auth.17"); //$NON-NLS-1$
77d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                }
78d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                break;
79d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            case OK_CANCEL_OPTION:
80d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                if (defaultOption != OK && defaultOption != CANCEL) {
81d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    throw new IllegalArgumentException("auth.17"); //$NON-NLS-1$
82d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                }
83d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                break;
84d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            default:
85d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                throw new IllegalArgumentException("auth.18"); //$NON-NLS-1$
86d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
87d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.messageType = messageType;
88d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.optionType = optionType;
89d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.defaultOption = defaultOption;
90d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
91d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
92d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public ConfirmationCallback(int messageType, String[] options, int defaultOption) {
93d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        super();
94d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        if (messageType > ERROR || messageType < INFORMATION) {
95d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            throw new IllegalArgumentException("auth.16"); //$NON-NLS-1$
96d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
97d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
98d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        if (options == null || options.length == 0) {
99d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            throw new IllegalArgumentException("auth.1A"); //$NON-NLS-1$
100d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
101d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        for (int i = 0; i < options.length; i++) {
102d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            if (options[i] == null || options[i].length() == 0) {
103d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                throw new IllegalArgumentException("auth.1A"); //$NON-NLS-1$
104d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            }
105d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
106d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        if (0 > defaultOption || defaultOption >= options.length) {
107d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            throw new IllegalArgumentException("auth.17"); //$NON-NLS-1$
108d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
109d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        // FIXME:System.arraycopy(options, 0 , new String[this.options.length],
110d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        // 0, this.options.length);
111d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.options = options;
112d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.defaultOption = defaultOption;
113d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.messageType = messageType;
114d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
115d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
116d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public ConfirmationCallback(String prompt, int messageType, int optionType,
117d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            int defaultOption) {
118d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        super();
119d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        if (prompt == null || prompt.length() == 0) {
120d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            throw new IllegalArgumentException("auth.14"); //$NON-NLS-1$
121d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
122d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
123d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        if (messageType > ERROR || messageType < INFORMATION) {
124d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            throw new IllegalArgumentException("auth.16"); //$NON-NLS-1$
125d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
126d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
127d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        switch (optionType) {
128d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            case YES_NO_OPTION:
129d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                if (defaultOption != YES && defaultOption != NO) {
130d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    throw new IllegalArgumentException("auth.17"); //$NON-NLS-1$
131d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                }
132d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                break;
133d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            case YES_NO_CANCEL_OPTION:
134d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                if (defaultOption != YES && defaultOption != NO && defaultOption != CANCEL) {
135d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    throw new IllegalArgumentException("auth.17"); //$NON-NLS-1$
136d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                }
137d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                break;
138d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            case OK_CANCEL_OPTION:
139d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                if (defaultOption != OK && defaultOption != CANCEL) {
140d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    throw new IllegalArgumentException("auth.17"); //$NON-NLS-1$
141d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                }
142d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                break;
143d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            default:
144d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                throw new IllegalArgumentException("auth.18"); //$NON-NLS-1$
145d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
146d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.prompt = prompt;
147d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.messageType = messageType;
148d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.optionType = optionType;
149d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.defaultOption = defaultOption;
150d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
151d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
152d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public ConfirmationCallback(String prompt, int messageType, String[] options,
153d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            int defaultOption) {
154d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        super();
155d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        if (prompt == null || prompt.length() == 0) {
156d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            throw new IllegalArgumentException("auth.14"); //$NON-NLS-1$
157d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
158d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
159d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        if (messageType > ERROR || messageType < INFORMATION) {
160d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            throw new IllegalArgumentException("auth.16"); //$NON-NLS-1$
161d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
162d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
163d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        if (options == null || options.length == 0) {
164d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            throw new IllegalArgumentException("auth.1A"); //$NON-NLS-1$
165d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
166d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        for (int i = 0; i < options.length; i++) {
167d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            if (options[i] == null || options[i].length() == 0) {
168d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                throw new IllegalArgumentException("auth.1A"); //$NON-NLS-1$
169d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            }
170d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
171d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        if (0 > defaultOption || defaultOption >= options.length) {
172d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            throw new IllegalArgumentException("auth.17"); //$NON-NLS-1$
173d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
174d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        // FIXME:System.arraycopy(options, 0 , new String[this.options.length],
175d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        // 0, this.options.length);
176d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.options = options;
177d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.defaultOption = defaultOption;
178d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.messageType = messageType;
179d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.prompt = prompt;
180d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
181d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
182d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public String getPrompt() {
183d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return prompt;
184d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
185d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
186d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public int getMessageType() {
187d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return messageType;
188d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
189d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
190d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public int getDefaultOption() {
191d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return defaultOption;
192d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
193d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
194d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public String[] getOptions() {
195d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return options;
196d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
197d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
198d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public int getOptionType() {
199d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return optionType;
200d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
201d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
202d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public int getSelectedIndex() {
203d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return selection;
204d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
205d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
206d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public void setSelectedIndex(int selection) {
207d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        if (options != null) {
208d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            if (0 <= selection && selection <= options.length) {
209d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                this.selection = selection;
210d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            } else {
211d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                throw new ArrayIndexOutOfBoundsException("auth.1B"); //$NON-NLS-1$
212d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            }
213d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        } else {
214d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            switch (optionType) {
215d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                case YES_NO_OPTION:
216d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    if (selection != YES && selection != NO) {
217d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                        throw new IllegalArgumentException("auth.19"); //$NON-NLS-1$
218d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    }
219d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    break;
220d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                case YES_NO_CANCEL_OPTION:
221d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    if (selection != YES && selection != NO && selection != CANCEL) {
222d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                        throw new IllegalArgumentException("auth.19"); //$NON-NLS-1$
223d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    }
224d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    break;
225d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                case OK_CANCEL_OPTION:
226d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    if (selection != OK && selection != CANCEL) {
227d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                        throw new IllegalArgumentException("auth.19"); //$NON-NLS-1$
228d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    }
229d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen                    break;
230d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            }
231d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            this.selection = selection;
232d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
233d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
234d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
235