package org.geogebra.web.web.gui.layout.panels; import org.geogebra.common.gui.view.consprotocol.ConstructionProtocolView.ColumnData; import org.geogebra.common.gui.view.consprotocol.ConstructionProtocolView.RowData; import org.geogebra.common.main.App; import org.geogebra.common.main.Localization; import org.geogebra.common.util.debug.Log; import org.geogebra.web.html5.main.AppW; import org.geogebra.web.web.gui.images.AppResources; import org.geogebra.web.web.gui.images.ImgResourceHelper; import org.geogebra.web.web.gui.util.ImageOrText; import org.geogebra.web.web.gui.util.PopupMenuButtonW; import org.geogebra.web.web.gui.util.PopupMenuHandler; import org.geogebra.web.web.gui.util.StyleBarW; import org.geogebra.web.web.gui.view.consprotocol.ConstructionProtocolViewW; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.cellview.client.Column; public class ConstructionProtocolStyleBarW extends StyleBarW implements PopupMenuHandler { private ConstructionProtocolViewW cpView; private PopupMenuButtonW btnColumns; String[] tableColumns = {}; boolean[] show = {}; public ConstructionProtocolStyleBarW(ConstructionProtocolViewW cpw, AppW app) { super(app, App.VIEW_CONSTRUCTION_PROTOCOL); cpView = cpw; addButtons(); addViewButton(); } protected void addButtons() { int k0 = 0; for (int k = 0; k < cpView.getData().getColumnCount(); k++) { ColumnData colData = cpView.getData().getColumns()[k]; // On web there is no all columns yet, so temporary must hide // some // column on stylebar too if (!"No.".equals(colData.getTitle()) && !"ToolbarIcon".equals(colData.getTitle()) && !"Command".equals(colData.getTitle()) && !"Caption".equals(colData.getTitle()) && !"Breakpoint".equals(colData.getTitle())) { tableColumns[k0] = colData.getTranslatedTitle(); show[k0] = colData.isVisible(); k0++; } } btnColumns = new PopupMenuButtonW(app, ImageOrText.convert(tableColumns), -1, 1, org.geogebra.common.gui.util.SelectionTable.MODE_TEXT, true, false, show, null); ImageResource ic = AppResources.INSTANCE.header_column(); ImgResourceHelper.setIcon(ic, btnColumns); btnColumns.addPopupHandler(this); btnColumns.setKeepVisible(false); add(btnColumns); } @Override public void setOpen(boolean showStyleBar) { // TODO Auto-generated method stub } @Override public void fireActionPerformed(PopupMenuButtonW actionButton) { if (actionButton == btnColumns) { // which item was selected in the menu int selIndex = btnColumns.getSelectedIndex(); // which column should be add or remove int colIndex = 0; for (int i = 0; i < selIndex + 1; i++) { if (btnColumns.isSelected(i)) { colIndex++; } } if (show[selIndex]) { // adding a new column for the table Column<RowData, ?> col = cpView .getColumn(tableColumns[selIndex]); Localization loc = app.getLocalization(); cpView.getTable().insertColumn(colIndex, col, loc.getPlain(tableColumns[selIndex])); cpView.getData().columns[selIndex + 1].setVisible(true); } else { // removing a column from the table Log.debug("remove!"); cpView.getTable().removeColumn(colIndex + 1); cpView.getData().columns[selIndex + 1].setVisible(false); } } } }