/*
GeoGebra - Dynamic Mathematics for Everyone
http://www.geogebra.org
This file is part of GeoGebra.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation.
*/
package org.geogebra.common.main;
import java.util.ArrayList;
import java.util.Collection;
import org.geogebra.common.awt.GPoint;
import org.geogebra.common.euclidian.EuclidianView;
import org.geogebra.common.euclidian.EuclidianViewInterfaceCommon;
import org.geogebra.common.euclidian.event.AbstractEvent;
import org.geogebra.common.gui.Editing;
import org.geogebra.common.gui.Layout;
import org.geogebra.common.gui.view.consprotocol.ConstructionProtocolNavigation;
import org.geogebra.common.gui.view.consprotocol.ConstructionProtocolView;
import org.geogebra.common.gui.view.spreadsheet.SpreadsheetViewInterface;
import org.geogebra.common.kernel.ModeSetter;
import org.geogebra.common.kernel.View;
import org.geogebra.common.kernel.geos.GeoElement;
import org.geogebra.common.kernel.geos.GeoImage;
import org.geogebra.common.kernel.geos.GeoPoint;
import org.geogebra.common.kernel.kernelND.GeoElementND;
import org.geogebra.common.main.settings.ConstructionProtocolSettings;
import org.geogebra.common.util.AsyncOperation;
/**
* This interface is almost the same as GuiManager, just it is an interface and
* doesn't implement anything, and contains only public methods. (So things from
* GuiManager were moved to here.)
*
* @author arpad
*
*/
public interface GuiManagerInterface {
public enum Help {
COMMAND, TOOL, GENERIC
}
public void updateMenubar();
public void updateMenubarSelection();
public DialogManager getDialogManager();
public void showPopupMenu(ArrayList<GeoElement> selectedGeos,
EuclidianViewInterfaceCommon euclidianViewInterfaceCommon,
GPoint mouseLoc);
public void showPopupChooseGeo(ArrayList<GeoElement> selectedGeos,
ArrayList<GeoElement> geos, EuclidianViewInterfaceCommon view,
GPoint p);
public void setMode(int mode, ModeSetter m);
public void redo();
public void undo();
public void setFocusedPanel(AbstractEvent event,
boolean updatePropertiesView);
public void loadImage(GeoPoint loc, Object object, boolean altDown,
EuclidianView view);
public boolean hasAlgebraViewShowing();
public boolean hasAlgebraView();
public void updateFonts();
public boolean isUsingConstructionProtocol();
public void getConsProtocolXML(StringBuilder sb);
public boolean isInputFieldSelectionListener();
public void showDrawingPadPopup(EuclidianViewInterfaceCommon view,
GPoint mouseLoc);
public void showDrawingPadPopup3D(EuclidianViewInterfaceCommon view,
GPoint mouseLoc);
public boolean hasSpreadsheetView();
public boolean hasDataCollectionView();
public void attachSpreadsheetView();
public void setShowView(boolean b, int viewID);
public void setShowView(boolean b, int viewID, boolean isPermanent);
public boolean showView(int viewID);
public View getConstructionProtocolData();
public Editing getCasView();
public boolean hasCasView();
public SpreadsheetViewInterface getSpreadsheetView();
public View getProbabilityCalculator();
public View getDataAnalysisView();
public View getPlotPanelView(int id);
public View getPropertiesView();
public boolean hasProbabilityCalculator();
public void getProbabilityCalculatorXML(StringBuilder sb);
public void getSpreadsheetViewXML(StringBuilder sb, boolean asPreference);
public void getDataCollectionViewXML(StringBuilder sb,
boolean asPreference);
public void getAlgebraViewXML(StringBuilder sb, boolean asPreference);
public void updateActions();
public void updateSpreadsheetColumnWidths();
public void updateConstructionProtocol();
public void updateAlgebraInput();
public void setShowAuxiliaryObjects(boolean flag);
public void updatePropertiesView();
/**
* tells the properties view that mouse has been pressed
*/
public void mousePressedForPropertiesView();
/**
* tells the properties view that mouse has been released
*
* @param creatorMode
* tells if ev is in creator mode (ie not move mode)
*/
public void mouseReleasedForPropertiesView(boolean creatorMode);
public boolean save();
/**
* tells the properties view to show slider tab
*/
public void showPropertiesViewSliderTab();
public boolean loadURL(String urlString);
public boolean loadURL(String urlString, boolean suppressErrorMsg);
public void updateGUIafterLoadFile(boolean success, boolean isMacroFile);
public void startEditing(GeoElement geoElement);
public boolean noMenusOpen();
public void openFile();
public Layout getLayout();
public void showGraphicExport();
public void showPSTricksExport();
public void showWebpageExport();
public void detachPropertiesView();
public boolean hasPropertiesView();
public void attachPropertiesView();
public void attachAlgebraView();
public void attachCasView();
public void attachConstructionProtocolView();
public void attachProbabilityCalculatorView();
public void attachDataAnalysisView();
public void detachDataAnalysisView();
public boolean hasDataAnalysisView();
/**
* Attach a view which by using the view ID.
*
* @author Florian Sonner
* @version 2008-10-21
*
* @param viewId
*/
public void attachView(int viewId);
public EuclidianView getActiveEuclidianView();
public void showAxesCmd();
public void showGridCmd();
public void doAfterRedefine(GeoElementND geo);
/**
* Detach a view which by using the view ID.
*
* @author Florian Sonner
* @version 2008-10-21
*
* @param viewId
*/
public void detachView(int viewId);
public void detachProbabilityCalculatorView();
public void detachCasView();
public void detachConstructionProtocolView();
public void detachSpreadsheetView();
public void detachAlgebraView();
public void openCommandHelp(String command);
public void openHelp(String page);
public void setLayout(Layout layout);
public void initialize();
public void resetSpreadsheet();
public void setScrollToShow(boolean b);
public void showURLinBrowser(String strURL);
public void updateToolbar();
public boolean hasEuclidianView2(int idx);
public void setLabels();
public View getEuclidianView2(int idx);
public boolean hasEuclidianView2EitherShowingOrNot(int idx);
public Editing getAlgebraView();
public void applyAlgebraViewSettings();
public void updateFrameSize();
public void clearInputbar();
public Object createFrame();
/**
*
* @return id of view which is setting the active toolbar
*/
public int getActiveToolbarId();
public ConstructionProtocolView getConstructionProtocolView();
public void setShowConstructionProtocolNavigation(boolean show, int id);
public void setShowConstructionProtocolNavigation(boolean show, int id,
boolean playButton, double playDelay, boolean showProtButton);
public void updateCheckBoxesForShowConstructinProtocolNavigation(int id);
public void setNavBarButtonPause();
public void setNavBarButtonPlay();
/*
* In web there are some drawable which not drawn on the canvas of euclidian
* view, but added for an AbsolutePanel which hides the canvas. (e.g.
* inputbox) When we remove all drawable, we must to clear this
* AbsolutePanel too.
*/
public void clearAbsolutePanels();
/**
* #3490 "Create sliders for a, b?" Create Sliders / Cancel Yes: create
* sliders and draw line No: go back into input bar and allow user to change
* input
*
* @param string
* eg "a, b"
* @return true/false
*/
public boolean checkAutoCreateSliders(String string,
AsyncOperation<String[]> callback);
public void applyCPsettings(ConstructionProtocolSettings cpSettings);
public ConstructionProtocolNavigation getConstructionProtocolNavigationIfExists();
ConstructionProtocolNavigation getConstructionProtocolNavigation(int id);
ConstructionProtocolNavigation getConstructionProtocolNavigation();
public Collection<ConstructionProtocolNavigation> getAllConstructionProtocolNavigations();
public void logout();
int getEuclidianViewCount();
public void addToToolbarDefinition(int mode);
public String getToolbarDefinition();
public void registerConstructionProtocolView(ConstructionProtocolView view);
public void updatePropertiesViewStylebar();
public String getToolImageURL(int mode, GeoImage geoImage);
public EuclidianViewInterfaceCommon getPlotPanelEuclidanView();
/**
* redraw Navigation Bars if necessary (eg step changed)
*/
public void updateNavBars();
public void replaceInputSelection(String string);
public void setInputText(String definitionForInputBar);
public void setImageCornersFromSelection(GeoImage geoImage);
public void refreshCustomToolsInToolBar();
public void getExtraViewsXML(StringBuilder sb);
public String getHelpURL(Help type, String pageName);
}