package org.geogebra.web.web.gui.view.algebra;
import java.util.ArrayList;
import org.geogebra.common.awt.GPoint;
import org.geogebra.common.gui.SetLabels;
import org.geogebra.common.kernel.StringTemplate;
import org.geogebra.common.kernel.geos.GeoElement;
import org.geogebra.common.main.Feature;
import org.geogebra.common.main.Localization;
import org.geogebra.common.main.OptionType;
import org.geogebra.web.html5.main.AppW;
import org.geogebra.web.web.css.MaterialDesignResources;
import org.geogebra.web.web.gui.menubar.MainMenu;
import org.geogebra.web.web.javax.swing.GPopupMenuW;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.MenuItem;
public class ContextMenuMore implements SetLabels {
protected GPopupMenuW wrappedPopup;
protected Localization loc;
private AppW app;
private RadioTreeItem item;
/**
* Creates new context menu
*
* @param item
* application
*/
ContextMenuMore(RadioTreeItem item) {
app = item.getApplication();
loc = app.getLocalization();
this.item = item;
wrappedPopup = new GPopupMenuW(app);
if (app.has(Feature.NEW_TOOLBAR)) {
wrappedPopup.getPopupPanel().addStyleName("matMenu");
} else {
wrappedPopup.getPopupPanel().addStyleName("mioMenu");
}
buildGUI();
}
private void buildGUI() {
wrappedPopup.clearItems();
addDuplicateItem();
addDeleteItem();
// wrappedPopup.addSeparator();
addPropertiesItem();
}
public void show(GPoint p) {
wrappedPopup.show(p);
}
public void show(int x, int y) {
wrappedPopup.show(new GPoint(x, y));
}
private void addDuplicateItem() {
String img = MaterialDesignResources.INSTANCE.duplicate_black()
.getSafeUri()
.asString();
MenuItem mi = new MenuItem(MainMenu.getMenuBarHtml(img,
loc.getMenu("Duplicate"), true), true,
new Command() {
@Override
public void execute() {
RadioTreeItem input = item.getAV().getInputTreeItem();
String dup = "";
if ("".equals(item.geo.getDefinition(StringTemplate.defaultTemplate))) {
dup = item.geo.getValueForInputBar();
} else {
dup = item.geo.getDefinitionForEditorNoLabel();
}
item.selectItem(false);
input.setText(dup);
input.setFocus(true, true);
}
});
mi.setEnabled(item.geo.isAlgebraDuplicateable());
wrappedPopup.addItem(mi);
}
private void addDeleteItem() {
String img = MaterialDesignResources.INSTANCE.delete_black()
.getSafeUri()
.asString();
MenuItem mi = new MenuItem(MainMenu.getMenuBarHtml(img,
loc.getPlain("Delete"), true), true,
new Command() {
@Override
public void execute() {
item.geo.remove();
}
});
wrappedPopup.addItem(mi);
}
private void addPropertiesItem() {
String img = MaterialDesignResources.INSTANCE.settings_black()
.getSafeUri()
.asString();
MenuItem mi = new MenuItem(MainMenu.getMenuBarHtml(img,
loc.getMenu("Settings"), true), true,
new Command() {
@Override
public void execute() {
ArrayList<GeoElement> list = new ArrayList<GeoElement>();
list.add(item.geo);
app.getDialogManager().showPropertiesDialog(OptionType.ALGEBRA,
list);
}
});
wrappedPopup.addItem(mi);
}
@Override
public void setLabels() {
buildGUI();
}
}