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 *******************************************************************************/ 11 package org.eclipse.wb.internal.core.model.property.editor.presentation; 12 13 import com.google.common.collect.Lists; 14 15 import org.eclipse.wb.internal.core.model.property.Property; 16 import org.eclipse.wb.internal.core.model.property.table.PropertyTable; 17 18 import java.util.List; 19 20 /** 21 * Implementation of {@link PropertyEditorPresentation} that contains zero or more other 22 * {@link PropertyEditorPresentation}'s. 23 * 24 * @author scheglov_ke 25 * @coverage core.model.property.editor 26 */ 27 public class CompoundPropertyEditorPresentation extends PropertyEditorPresentation { 28 private final List<PropertyEditorPresentation> m_presentations = Lists.newArrayList(); 29 30 //////////////////////////////////////////////////////////////////////////// 31 // 32 // Access 33 // 34 //////////////////////////////////////////////////////////////////////////// 35 /** 36 * Adds child {@link PropertyEditorPresentation}.<br> 37 * Child {@link PropertyEditorPresentation}'s are displayed from right to left. 38 */ add(PropertyEditorPresentation presentation)39 public void add(PropertyEditorPresentation presentation) { 40 m_presentations.add(presentation); 41 } 42 43 //////////////////////////////////////////////////////////////////////////// 44 // 45 // PropertyEditorPresentation 46 // 47 //////////////////////////////////////////////////////////////////////////// 48 @Override show(PropertyTable propertyTable, Property property, int x, int y, int width, int height)49 public int show(PropertyTable propertyTable, 50 Property property, 51 int x, 52 int y, 53 int width, 54 int height) { 55 int sumWidth = 0; 56 for (PropertyEditorPresentation presentation : m_presentations) { 57 int presentationWidth = presentation.show(propertyTable, property, x, y, width, height); 58 sumWidth += presentationWidth; 59 width -= presentationWidth; 60 } 61 return sumWidth; 62 } 63 64 @Override hide(PropertyTable propertyTable, Property property)65 public void hide(PropertyTable propertyTable, Property property) { 66 for (PropertyEditorPresentation presentation : m_presentations) { 67 presentation.hide(propertyTable, property); 68 } 69 } 70 } 71