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.presentation;
12765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
13765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport com.google.common.collect.Lists;
14765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
15765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.model.property.Property;
16765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.model.property.table.PropertyTable;
17765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
18765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport java.util.List;
19765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
20765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/**
21765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Implementation of {@link PropertyEditorPresentation} that contains zero or more other
22765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * {@link PropertyEditorPresentation}'s.
23765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *
24765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @author scheglov_ke
25765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @coverage core.model.property.editor
26765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */
27765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepublic class CompoundPropertyEditorPresentation extends PropertyEditorPresentation {
28765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  private final List<PropertyEditorPresentation> m_presentations = Lists.newArrayList();
29765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
30765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
31765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
32765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // Access
33765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
34765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
35765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  /**
36765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Adds child {@link PropertyEditorPresentation}.<br>
37765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   * Child {@link PropertyEditorPresentation}'s are displayed from right to left.
38765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye   */
39765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public void add(PropertyEditorPresentation presentation) {
40765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    m_presentations.add(presentation);
41765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
42765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
43765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
44765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
45765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  // PropertyEditorPresentation
46765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  //
47765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  ////////////////////////////////////////////////////////////////////////////
48765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  @Override
49765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public int show(PropertyTable propertyTable,
50765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      Property property,
51765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      int x,
52765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      int y,
53765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      int width,
54765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      int height) {
55765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    int sumWidth = 0;
56765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    for (PropertyEditorPresentation presentation : m_presentations) {
57765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      int presentationWidth = presentation.show(propertyTable, property, x, y, width, height);
58765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      sumWidth += presentationWidth;
59765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      width -= presentationWidth;
60765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
61765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    return sumWidth;
62765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
63765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye
64765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  @Override
65765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  public void hide(PropertyTable propertyTable, Property property) {
66765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    for (PropertyEditorPresentation presentation : m_presentations) {
67765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye      presentation.hide(propertyTable, property);
68765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye    }
69765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye  }
70765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye}
71