• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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