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; 12765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 13765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.model.property.editor.TextDisplayPropertyEditor; 14765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.model.property.editor.complex.IComplexPropertyEditor; 15765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.model.property.editor.presentation.PropertyEditorPresentation; 16765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.model.property.table.PropertyTable; 17765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.model.property.table.PropertyTooltipProvider; 18765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.model.property.table.PropertyTooltipTextProvider; 19765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 20765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.graphics.Point; 21765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 22765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport java.util.List; 23765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 24765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/** 25765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Implementation of {@link Property} that shows given inner {@link Property}'s using 26765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * {@link IComplexPropertyEditor}. 27765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 28765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @author scheglov_ke 29765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @coverage core.model.property 30765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 31765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepublic class ComplexProperty extends Property { 32765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private final String m_title; 33765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private String m_text; 34765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private String m_tooltip; 35765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private boolean m_modified; 36765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private Property[] m_properties; 37765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 38765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 39765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 40765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Constructors 41765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 42765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 43765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public ComplexProperty(String title, String text) { 44765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye this(title, text, new Property[0]); 45765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 46765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 47765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public ComplexProperty(String title, String text, Property[] properties) { 48765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye super(new ComplexPropertyEditor()); 49765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_title = title; 50765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_text = text; 51765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye setText(text); 52765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye setProperties(properties); 53765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 54765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 55765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 56765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 57765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Access 58765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 59765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 60765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 61765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets the text. 62765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 63765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public void setText(String text) { 64765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_text = text; 65765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 66765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 67765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 68765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @return the text to display as value. 69765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 70765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public String getText() throws Exception { 71765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return m_text; 72765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 73765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 74765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 75765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets the tooltip text. 76765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 77765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public void setTooltip(String tooltip) { 78765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_tooltip = tooltip; 79765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 80765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 81765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 82765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Specifies the {@link PropertyEditorPresentation}, for example to displaying "..." button. 83765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 84765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public void setEditorPresentation(PropertyEditorPresentation presentation) { 85765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye ((ComplexPropertyEditor) getEditor()).m_presentation = presentation; 86765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 87765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 88765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 89765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @return the sub-properties. 90765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 91765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public Property[] getProperties() { 92765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return m_properties; 93765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 94765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 95765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 96765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets the sub-properties. 97765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 98765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public void setProperties(Property[] properties) { 99765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_properties = properties; 100765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 101765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 102765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 103765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets the sub-properties. 104765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 105765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public void setProperties(List<Property> properties) { 106765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye Property[] propertiesArray = properties.toArray(new Property[properties.size()]); 107765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye setProperties(propertiesArray); 108765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 109765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 110765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 111765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets the "modified" flag. 112765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 113765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public void setModified(boolean modified) { 114765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye m_modified = modified; 115765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 116765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 117765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 118765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 119765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Property 120765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 121765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 122765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 123765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public String getTitle() { 124765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return m_title; 125765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 126765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 127765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 128765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public boolean isModified() throws Exception { 129765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return m_modified; 130765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 131765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 132765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 133765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public Object getValue() throws Exception { 134765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return null; 135765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 136765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 137765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 138765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public void setValue(Object value) throws Exception { 139765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 140765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 141765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 142765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 143765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Adapter 144765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 145765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 146765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 147765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public <T> T getAdapter(Class<T> adapter) { 148765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye if (adapter == PropertyTooltipProvider.class && m_tooltip != null) { 149765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return adapter.cast(new PropertyTooltipTextProvider() { 150765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 151765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye protected String getText(Property property) throws Exception { 152765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return m_tooltip; 153765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 154765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye }); 155765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 156765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return super.getAdapter(adapter); 157765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 158765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 159765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 160765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 161765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // ComplexPropertyEditor 162765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 163765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 164765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private static final class ComplexPropertyEditor extends TextDisplayPropertyEditor 165765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye implements 166765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye IComplexPropertyEditor { 167765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye private PropertyEditorPresentation m_presentation; 168765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 169765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 170765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 171765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // IComplexPropertyEditor 172765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 173765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 174765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public Property[] getProperties(Property property) throws Exception { 175765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return ((ComplexProperty) property).getProperties(); 176765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 177765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 178765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 179765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 180765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // TextDisplayPropertyEditor 181765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 182765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 183765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 184765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye protected String getText(Property property) throws Exception { 185765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return ((ComplexProperty) property).getText(); 186765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 187765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 188765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 189765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 190765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // PropertyEditor 191765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 192765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 193765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 194765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public boolean activate(PropertyTable propertyTable, Property property, Point location) 195765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye throws Exception { 196765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return false; 197765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 198765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 199765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 200765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 201765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Presentation 202765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 203765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 204765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye @Override 205765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public PropertyEditorPresentation getPresentation() { 206765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return m_presentation; 207765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 208765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 209765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye} 210