1765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/******************************************************************************* 2765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Copyright (c) 2011 Google, Inc. 3765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * All rights reserved. This program and the accompanying materials 4765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * are made available under the terms of the Eclipse Public License v1.0 5765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * which accompanies this distribution, and is available at 6765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * http://www.eclipse.org/legal/epl-v10.html 7765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 8765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Contributors: 9765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Google, Inc. - initial API and implementation 10765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *******************************************************************************/ 11765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepackage org.eclipse.wb.internal.core.model.property.editor; 12765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 13765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport com.google.common.base.Joiner; 14765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 15765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.jface.window.Window; 16765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.DesignerPlugin; 17765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.model.ModelMessages; 18765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.model.property.Property; 19765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.utils.ui.dialogs.StringsDialog; 20765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 21765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/** 22765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * {@link PropertyEditor} for array of {@link String}'s. 23765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 24765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @author scheglov_ke 25765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @coverage core.model.property.editor 26765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 27765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepublic final class StringArrayPropertyEditor extends TextDialogPropertyEditor { 28765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 29765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 30765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Instance 31765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 32765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 33765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public static final PropertyEditor INSTANCE = new StringArrayPropertyEditor(); 34765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 35765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private StringArrayPropertyEditor() { 36765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 37765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 38765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 39765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 40765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Presentation 41765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 42765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 43765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 44765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye protected String getText(Property property) throws Exception { 45765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye String[] items = getItems(property); 46765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return "[" + Joiner.on(", ").join(items) + "]"; 47765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 48765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 49765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 50765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @return the items specified in value of given {@link Property}. 51765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 52765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private static String[] getItems(Property property) throws Exception { 53765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye Object value = property.getValue(); 54765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye if (value instanceof String[]) { 55765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return (String[]) value; 56765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 57765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // no items 58765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return new String[0]; 59765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 60765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 61765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 62765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 63765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Editing 64765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 65765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 66765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 67765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye protected void openDialog(Property property) throws Exception { 68765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye StringsDialog itemsDialog = 69765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye new StringsDialog(DesignerPlugin.getShell(), 70765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye DesignerPlugin.getDefault(), 71765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye property.getTitle(), 72765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye ModelMessages.StringArrayPropertyEditor_itemsLabel, 73765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye ModelMessages.StringArrayPropertyEditor_hint); 74765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye itemsDialog.setItems(getItems(property)); 75765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // open dialog 76765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye if (itemsDialog.open() == Window.OK) { 77765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye property.setValue(itemsDialog.getItems()); 78765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 79765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 80765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye} 81