package org.geogebra.web.web.gui.properties; import java.util.ArrayList; import java.util.List; import org.geogebra.common.gui.dialog.options.model.GroupModel; import org.geogebra.common.gui.dialog.options.model.OptionsModel; import org.geogebra.common.main.Localization; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Widget; public class GroupOptionsPanel implements IOptionPanel { private List<IOptionPanel> panels; private String titleId; private FlowPanel mainWidget; private FlowPanel group; private Label titleLabel; private Localization loc; private GroupModel model; public GroupOptionsPanel(final String title, Localization loc, GroupModel model) { super(); this.titleId = title; this.loc = loc; titleLabel = new Label("misc"); mainWidget = new FlowPanel(); group = new FlowPanel(); mainWidget.add(titleLabel); mainWidget.add(group); this.model = model; titleLabel.setStyleName("panelTitle"); group.setStyleName("optionsPanelIndent"); panels = new ArrayList<IOptionPanel>(); setTitleLabel(); } public void add(IOptionPanel panel) { group.add(panel.getWidget()); panels.add(panel); } @Override public void setLabels() { setTitleLabel(); for (IOptionPanel panel: panels) { panel.setLabels(); } } protected void setTitleLabel() { titleLabel.setText(getTitle()); } private String getTitle() { String ret = loc.getMenu(titleId); if (ret.equals(titleId)) { // needed for eg Miscellaneous ret = loc.getPlain(titleId); } return ret; } @Override public Object updatePanel(Object[] geos) { boolean result = false; for (IOptionPanel panel: panels) { result = panel.updatePanel(geos) != null || result; } return result ? this : null; } @Override public Widget getWidget() { return mainWidget; } @Override public OptionsModel getModel() { return model; } }