1/*******************************************************************************
2 * Copyright (c) 2011 Google, Inc.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 *    Google, Inc. - initial API and implementation
10 *******************************************************************************/
11package org.eclipse.wb.internal.core.utils.ui.dialogs;
12
13import com.google.common.base.Joiner;
14import com.google.common.collect.Lists;
15
16import org.eclipse.swt.widgets.Shell;
17import org.eclipse.ui.plugin.AbstractUIPlugin;
18import org.eclipse.wb.internal.core.utils.execution.ExecutionUtils;
19import org.eclipse.wb.internal.core.utils.execution.RunnableObjectEx;
20
21import java.io.BufferedReader;
22import java.io.StringReader;
23import java.util.List;
24
25/**
26 * The dialog for editing array of {@link String}'s.
27 *
28 * @author scheglov_ke
29 * @coverage core.ui
30 */
31public class StringsDialog extends TextDialog {
32  ////////////////////////////////////////////////////////////////////////////
33  //
34  // Constructor
35  //
36  ////////////////////////////////////////////////////////////////////////////
37  public StringsDialog(Shell parentShell,
38      AbstractUIPlugin plugin,
39      String titleText,
40      String headerText,
41      String footerText) {
42    super(parentShell, plugin, titleText, headerText, footerText);
43  }
44
45  ////////////////////////////////////////////////////////////////////////////
46  //
47  // Items
48  //
49  ////////////////////////////////////////////////////////////////////////////
50  /**
51   * Sets the items to edit.
52   */
53  public void setItems(String[] items) {
54    setText(Joiner.on('\n').join(items));
55  }
56
57  /**
58   * @return the edited items.
59   */
60  public String[] getItems() {
61    return ExecutionUtils.runObjectLog(new RunnableObjectEx<String[]>() {
62      @Override
63    public String[] runObject() throws Exception {
64        List<String> strings = Lists.newArrayList();
65        BufferedReader br = new BufferedReader(new StringReader(getText()));
66        while (true) {
67          String s = br.readLine();
68          if (s == null) {
69            break;
70          }
71          strings.add(s);
72        }
73        return strings.toArray(new String[strings.size()]);
74      }
75    }, new String[0]);
76  }
77}
78