package org.geogebra.web.web.gui.layout.panels; import org.geogebra.common.euclidian.EuclidianConstants; import org.geogebra.common.main.App; import org.geogebra.common.main.Feature; import org.geogebra.common.main.settings.SpreadsheetSettings; import org.geogebra.web.html5.main.AppW; import org.geogebra.web.web.gui.view.spreadsheet.SpreadsheetStyleBarW; import org.geogebra.web.web.gui.view.spreadsheet.SpreadsheetViewW; import com.google.gwt.resources.client.ResourcePrototype; import com.google.gwt.user.client.ui.AbsolutePanel; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.Widget; /** * @author Arpad Fekete * * Top level GUI for the spreadsheet view * */ public class SpreadsheetDockPanelW extends NavigableDockPanelW { SpreadsheetStyleBarW sstylebar; SpreadsheetViewW sview; AbsolutePanel wrapview; public SpreadsheetDockPanelW(App appl) { super( App.VIEW_SPREADSHEET, // view id "Spreadsheet", // view title phrase getDefaultToolbar(), // toolbar string true, // style bar? 3, // menu order 'S' // menu shortcut ); app = (AppW)appl; } @Override protected Panel getViewPanel() { if (wrapview == null) { wrapview = new AbsolutePanel(); wrapview.addStyleName("SpreadsheetWrapView"); sview = (SpreadsheetViewW) app.getGuiManager().getSpreadsheetView(); wrapview.add(sview.getFocusPanel()); } return wrapview; } @Override protected Widget loadStyleBar() { if (sstylebar == null) { sstylebar = sview.getSpreadsheetStyleBar(); } return sstylebar; } @Override public void onResize() { super.onResize(); if (app != null && sview != null) { int width = getComponentInteriorWidth(); int height = getComponentInteriorHeight(); if (width <= 0 || height <= 0) { return; } wrapview.setPixelSize(width, height); sview.onResize(width, height); } } public SpreadsheetViewW getSpreadsheet() { return sview; } public App getApp() { return app; } private static String getDefaultToolbar() { StringBuilder sb = new StringBuilder(); sb.append(EuclidianConstants.MODE_MOVE); sb.append(" || "); sb.append(EuclidianConstants.MODE_SPREADSHEET_ONEVARSTATS); sb.append(" , "); sb.append(EuclidianConstants.MODE_SPREADSHEET_TWOVARSTATS); sb.append(" , "); sb.append(EuclidianConstants.MODE_SPREADSHEET_MULTIVARSTATS); sb.append(" || "); sb.append(EuclidianConstants.MODE_SPREADSHEET_CREATE_LIST); sb.append(" , "); sb.append(EuclidianConstants.MODE_SPREADSHEET_CREATE_LISTOFPOINTS); sb.append(" , "); sb.append(EuclidianConstants.MODE_SPREADSHEET_CREATE_MATRIX); sb.append(" , "); sb.append(EuclidianConstants.MODE_SPREADSHEET_CREATE_TABLETEXT); sb.append(" , "); sb.append(EuclidianConstants.MODE_SPREADSHEET_CREATE_POLYLINE); sb.append(" || "); sb.append(EuclidianConstants.MODE_SPREADSHEET_SUM); sb.append(" , "); sb.append(EuclidianConstants.MODE_SPREADSHEET_AVERAGE); sb.append(" , "); sb.append(EuclidianConstants.MODE_SPREADSHEET_COUNT); sb.append(" , "); sb.append(EuclidianConstants.MODE_SPREADSHEET_MAX); sb.append(" , "); sb.append(EuclidianConstants.MODE_SPREADSHEET_MIN); return sb.toString(); } @Override public boolean isStyleBarVisible() { if (app.isApplet() && !app.showMenuBar() && !app.isStyleBarAllowed()) { return false; } return super.isStyleBarVisible(); } @Override public boolean hasStyleBar() { SpreadsheetSettings settings = app.getSettings().getSpreadsheet(); if (settings == null) { return super.hasStyleBar(); } return super.hasStyleBar() && settings.showRowHeader() && settings.showColumnHeader(); } @Override public ResourcePrototype getIcon() { return getResources().menu_icon_spreadsheet(); } @Override protected ResourcePrototype getViewIcon() { if (app.has(Feature.DYNAMIC_STYLEBAR)) { return getResources().settings(); } return getResources().styleBar_spreadsheetView(); } }