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 */ 39 public void add(PropertyEditorPresentation presentation) { 40 m_presentations.add(presentation); 41 } 42 43 //////////////////////////////////////////////////////////////////////////// 44 // 45 // PropertyEditorPresentation 46 // 47 //////////////////////////////////////////////////////////////////////////// 48 @Override 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 65 public void hide(PropertyTable propertyTable, Property property) { 66 for (PropertyEditorPresentation presentation : m_presentations) { 67 presentation.hide(propertyTable, property); 68 } 69 } 70 } 71