use of com.codename1.ui.Button in project CodenameOne by codenameone.
the class SideMenuBar method createMenu.
private Form createMenu(final String placement) {
final Form m = new Form() {
private boolean pressedInRightPanel;
private boolean manualMotionLock;
protected boolean shouldSendPointerReleaseToOtherForm() {
return true;
}
void actionCommandImpl(Command cmd, ActionEvent ev) {
if (cmd instanceof SideMenuBar.CommandWrapper) {
cmd = ((SideMenuBar.CommandWrapper) cmd).cmd;
ev = new ActionEvent(cmd, ActionEvent.Type.Command);
}
final Command c = cmd;
final ActionEvent e = ev;
Display.getInstance().scheduleBackgroundTask(new Runnable() {
public void run() {
Display.getInstance().invokeAndBlock(new Runnable() {
public void run() {
while (Display.getInstance().getCurrent() != parent) {
try {
Thread.sleep(40);
} catch (Exception ex) {
}
}
}
});
Display.getInstance().callSerially(new Runnable() {
public void run() {
parent.actionCommandImpl(c, e);
}
});
}
});
}
protected void sizeChanged(int w, int h) {
Style formStyle = getStyle();
int width = w - (formStyle.getHorizontalMargins());
parent.sizeChangedInternal(w, h);
// close the menu
if (getWidth() != width) {
closeMenu();
}
super.sizeChanged(w, h);
}
public void pointerPressed(int x, int y) {
if (manualMotionLock) {
return;
}
super.pointerPressed(x, y);
if (rightPanel.contains(x, y)) {
pressedInRightPanel = true;
}
}
public void pointerDragged(int[] x, int[] y) {
if (manualMotionLock) {
return;
}
if (!transitionRunning && pressedInRightPanel) {
dragActivated = true;
pressedInRightPanel = false;
}
if (dragActivated) {
setMenuGlassPane(menu, placement);
draggedX = x[0];
repaint();
return;
}
super.pointerDragged(x, y);
}
public void pointerReleased(int x, int y) {
if (manualMotionLock) {
return;
}
super.pointerReleased(x, y);
boolean isRTLValue = isRTL();
if (placement == COMMAND_PLACEMENT_VALUE_RIGHT) {
isRTLValue = !isRTLValue;
}
int displayWidth = Display.getInstance().getDisplayWidth();
if (isRTLValue) {
if (!transitionRunning && dragActivated && x < (displayWidth - rightPanel.getWidth()) / 2) {
final Motion motion = Motion.createEaseInOutMotion(draggedX, rightPanel.getWidth(), 200);
motion.start();
registerAnimated(new Animation() {
public boolean animate() {
draggedX = motion.getValue();
if (motion.isFinished()) {
dragActivated = false;
Display.getInstance().getCurrent().setGlassPane(null);
deregisterAnimated(this);
}
return true;
}
public void paint(Graphics g) {
repaint();
}
});
return;
}
} else {
if (!transitionRunning && dragActivated && x > (displayWidth - rightPanel.getWidth()) / 2) {
final Motion motion = Motion.createEaseInOutMotion(draggedX, Display.getInstance().getDisplayWidth() - rightPanel.getWidth(), 200);
motion.start();
registerAnimated(new Animation() {
public boolean animate() {
draggedX = motion.getValue();
if (motion.isFinished()) {
dragActivated = false;
Display.getInstance().getCurrent().setGlassPane(null);
deregisterAnimated(this);
}
return true;
}
public void paint(Graphics g) {
repaint();
}
});
return;
}
}
if (dragActivated || rightPanel.contains(x, y)) {
setMenuGlassPane(menu, placement);
draggedX = x;
int start = x;
int end = 0;
if (isRTLValue) {
end = getWidth();
}
final Motion motion = Motion.createEaseInOutMotion(start, end, getUIManager().getThemeConstant("sideMenuAnimSpeedInt", 300));
motion.start();
manualMotionLock = true;
sideSwipePotential = false;
rightSideSwipePotential = false;
topSwipePotential = false;
registerAnimated(new Animation() {
public boolean animate() {
draggedX = motion.getValue();
if (motion.isFinished()) {
dragActivated = false;
}
return true;
}
public void paint(Graphics g) {
repaint();
if (draggedX == motion.getDestinationValue() && motion.isFinished()) {
parent.setTransitionInAnimator(CommonTransitions.createEmpty());
parent.show();
deregisterAnimated(this);
Display.getInstance().callSerially(new Runnable() {
public void run() {
clean();
}
});
}
}
});
}
}
public void keyReleased(int keyCode) {
if (keyCode == leftSK) {
if (transitionRunning) {
return;
}
closeMenu();
return;
}
super.keyReleased(keyCode);
}
};
m.setScrollable(false);
m.removeComponentFromForm(m.getTitleArea());
m.putClientProperty("Menu", "true");
m.setTransitionInAnimator(CommonTransitions.createEmpty());
m.setTransitionOutAnimator(CommonTransitions.createEmpty());
m.setBackCommand(new Command("") {
public void actionPerformed(ActionEvent evt) {
if (transitionRunning) {
return;
}
closeMenu();
}
});
m.setLayout(new BorderLayout());
if (Display.getInstance().areMutableImagesFast()) {
rightPanel = new Container(new BorderLayout());
} else {
rightPanel = new Container(new BorderLayout()) {
public void paintBackground(Graphics g) {
}
public void paintBackgrounds(Graphics g) {
}
public void paint(Graphics g) {
Component c = (Component) rightPanel.getClientProperty("$parent");
// not sure why its happening: https://code.google.com/p/codenameone/issues/detail?id=1072
if (c != null) {
boolean b = c.isVisible();
c.setVisible(true);
int x = getAbsoluteX();
g.translate(x, 0);
Container.sidemenuBarTranslation = x;
c.paintComponent(g, true);
Container.sidemenuBarTranslation = 0;
g.translate(-x, 0);
c.setVisible(b);
}
}
};
}
if (placement == COMMAND_PLACEMENT_VALUE_TOP) {
int v = 0;
if (Display.getInstance().isPortrait()) {
if (Display.getInstance().isTablet()) {
v = getUIManager().getThemeConstant("topMenuSizeTabPortraitInt", -1);
if (v < 0) {
v = m.getHeight() * 2 / 3;
} else {
v = m.getHeight() / 100 * v;
}
} else {
v = getUIManager().getThemeConstant("topMenuSizePortraitInt", -1);
if (v < 0) {
v = openButton.getHeight();
} else {
v = m.getHeight() / 100 * v;
}
}
} else {
if (Display.getInstance().isTablet()) {
v = getUIManager().getThemeConstant("topMenuSizeTabLandscapeInt", -1);
if (v < 0) {
v = m.getHeight() * 3 / 4;
} else {
v = m.getWidth() / 100 * v;
}
} else {
v = getUIManager().getThemeConstant("topMenuSizeLandscapeInt", -1);
if (v < 0) {
v = m.getHeight() * 4 / 10;
} else {
v = m.getHeight() / 100 * v;
}
}
}
rightPanel.setPreferredH(v);
} else {
if (Display.getInstance().isPortrait()) {
int v = 0;
if (Display.getInstance().isTablet()) {
v = getUIManager().getThemeConstant("sideMenuSizeTabPortraitInt", -1);
if (v < 0) {
v = m.getWidth() * 2 / 3;
} else {
v = m.getWidth() / 100 * v;
}
} else {
v = getUIManager().getThemeConstant("sideMenuSizePortraitInt", -1);
if (v < 0) {
if (placement == COMMAND_PLACEMENT_VALUE_RIGHT) {
if (isRTL()) {
v = openButton.getWidth();
} else {
v = rightSideButton.getWidth();
}
} else {
v = openButton.getWidth();
}
} else {
v = m.getWidth() / 100 * v;
}
}
rightPanel.setPreferredW(v);
} else {
int v = 0;
if (Display.getInstance().isTablet()) {
v = getUIManager().getThemeConstant("sideMenuSizeTabLandscapeInt", -1);
if (v < 0) {
v = m.getWidth() * 3 / 4;
} else {
v = m.getWidth() / 100 * v;
}
} else {
v = getUIManager().getThemeConstant("sideMenuSizeLandscapeInt", -1);
if (v < 0) {
v = m.getWidth() * 4 / 10;
} else {
v = m.getWidth() / 100 * v;
}
}
rightPanel.setPreferredW(v);
}
}
if (sidePanel != null) {
sidePanel.removeAll();
sidePanel = null;
}
sidePanel = createSideNavigationComponent(getCommands(), placement);
if (placement == COMMAND_PLACEMENT_VALUE_RIGHT) {
m.addComponent(BorderLayout.WEST, rightPanel);
m.addComponent(BorderLayout.CENTER, sidePanel);
} else {
if (placement == COMMAND_PLACEMENT_VALUE_TOP) {
m.addComponent(BorderLayout.NORTH, rightPanel);
m.addComponent(BorderLayout.CENTER, sidePanel);
Button button = new Button(" ");
button.setUIID("Container");
button.setPreferredH(Display.getInstance().getDisplayHeight() / 10);
m.addComponent(BorderLayout.SOUTH, button);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
closeMenu();
}
});
} else {
m.addComponent(BorderLayout.EAST, rightPanel);
m.addComponent(BorderLayout.CENTER, sidePanel);
}
}
m.putClientProperty("cn1$sideMenuParent", this);
return m;
}
use of com.codename1.ui.Button in project CodenameOne by codenameone.
the class HTMLEventsListener method deregisterAll.
/**
* Deregisters all the listeners, happens before a new page is loaded
*/
void deregisterAll() {
for (Enumeration e = comps.keys(); e.hasMoreElements(); ) {
Component cmp = (Component) e.nextElement();
cmp.removeFocusListener(this);
if (cmp instanceof Button) {
// catches Button, CheckBox, RadioButton
((Button) cmp).removeActionListener(this);
} else if (cmp instanceof List) {
// catches ComboBox
((List) cmp).removeSelectionListener((SelectionListener) listeners.get(cmp));
} else if (cmp instanceof TextArea) {
((TextArea) cmp).removeActionListener(this);
if (cmp instanceof TextField) {
((TextField) cmp).removeDataChangeListener((DataChangedListener) listeners.get(cmp));
}
}
}
comps = new Hashtable();
listeners = new Hashtable();
}
use of com.codename1.ui.Button in project CodenameOne by codenameone.
the class HTMLEventsListener method registerComponent.
/**
* Registeres the specified component/element duo to listen to all available events
*
* @param cmp The actual component
* @param element The element representing the component
*/
void registerComponent(final Component cmp, final HTMLElement element) {
comps.put(cmp, element);
cmp.addFocusListener(this);
if (cmp instanceof Button) {
// catches Button, CheckBox, RadioButton
((Button) cmp).addActionListener(this);
} else if (cmp instanceof List) {
// catches ComboBox
final List list = (List) cmp;
list.addActionListener(this);
SelectionListener sl = new // We create a listener and not listen ourself since the listener's method does not pass the event origin, so we need to make one listener per component
SelectionListener() {
public void selectionChanged(int oldSelected, int newSelected) {
if (htmlC.getHTMLCallback() != null) {
htmlC.getHTMLCallback().selectionChanged(oldSelected, newSelected, htmlC, list, element);
}
}
};
list.addSelectionListener(sl);
listeners.put(cmp, sl);
} else if (cmp instanceof TextArea) {
((TextArea) cmp).addActionListener(this);
if (cmp instanceof TextField) {
final TextField tf = (TextField) cmp;
DataChangedListener dcl = new // We create a listener and not listen ourself since the listener's method does not pass the event origin, so we need to make one listener per component
DataChangedListener() {
public void dataChanged(int type, int index) {
element.setAttributeById(HTMLElement.ATTR_VALUE, tf.getText());
if (htmlC.getHTMLCallback() != null) {
htmlC.getHTMLCallback().dataChanged(type, index, htmlC, tf, element);
}
}
};
tf.addDataChangedListener(dcl);
listeners.put(cmp, dcl);
}
}
}
use of com.codename1.ui.Button in project CodenameOne by codenameone.
the class HTMLForm method submit.
/**
* Called when the a form submit is needed.
* This querys all form fields, creates a URL accordingly and sets it to the HTMLComponent
*/
void submit(String submitKey, String submitVal) {
if (action == null) {
return;
}
// If this is turned to true anywhere, the form will not be submitted
boolean error = false;
String url = action;
String params = null;
if (comps.size() > 0) {
params = "";
for (Enumeration e = comps.keys(); e.hasMoreElements(); ) {
String key = (String) e.nextElement();
Object input = comps.get(key);
key = HTMLUtils.encodeString(key);
String value = "";
if (input instanceof String) {
// hidden
value = HTMLUtils.encodeString((String) input);
params += key + "=" + value + "&";
} else if (input instanceof Hashtable) {
// checkbox / radiobutton
Hashtable options = (Hashtable) input;
for (Enumeration e2 = options.keys(); e2.hasMoreElements(); ) {
Button b = (Button) e2.nextElement();
if (b.isSelected()) {
params += key + "=" + HTMLUtils.encodeString((String) options.get(b)) + "&";
}
}
} else if (input instanceof TextArea) {
// catches both textareas and text input fields
TextArea tf = ((TextArea) input);
String text = tf.getText();
String errorMsg = null;
if (HTMLComponent.SUPPORT_INPUT_FORMAT) {
boolean ok = false;
if (text.equals("")) {
// check empty - Note that emptyok/-wap-input-required overrides input format
if (emptyNotOk.contains(tf)) {
errorMsg = htmlC.getUIManager().localize("html.format.emptynotok", "Field can't be empty");
error = true;
} else if (emptyOk.contains(tf)) {
ok = true;
}
}
if ((!error) && (!ok)) {
// If there's already an error or it has been cleared by the emptyOK field, no need to check
HTMLInputFormat inputFormat = (HTMLInputFormat) inputFormats.get(tf);
if ((inputFormat != null) && (!inputFormat.verifyString(text))) {
String emptyStr = "";
if (emptyOk.contains(tf)) {
emptyStr = htmlC.getUIManager().localize("html.format.oremptyok", " or an empty string");
} else if (emptyNotOk.contains(tf)) {
emptyStr = htmlC.getUIManager().localize("html.format.andemptynotok", " and cannot be an empty string");
}
errorMsg = htmlC.getUIManager().localize("html.format.errordesc", "Malformed text. Correct value: ") + inputFormat.toString() + emptyStr;
error = true;
}
}
}
if (htmlC.getHTMLCallback() != null) {
int type = HTMLCallback.FIELD_TEXT;
if ((tf.getConstraint() & TextArea.PASSWORD) != 0) {
type = HTMLCallback.FIELD_PASSWORD;
}
text = htmlC.getHTMLCallback().fieldSubmitted(htmlC, tf, url, key, text, type, errorMsg);
}
if (errorMsg == null) {
params += key + "=" + HTMLUtils.encodeString(text) + "&";
}
} else if (input instanceof ComboBox) {
// drop down lists (single selection)
Object item = ((ComboBox) input).getSelectedItem();
if (item instanceof OptionItem) {
value = ((OptionItem) item).getValue();
params += key + "=" + HTMLUtils.encodeString(value) + "&";
}
// if not - value may be an OPTGROUP label in an only optgroup combobox
} else if (input instanceof MultiComboBox) {
// drop down lists (multiple selection)
Vector selected = ((MultiComboBox) input).getSelected();
for (int i = 0; i < selected.size(); i++) {
Object item = selected.elementAt(i);
if (item instanceof OptionItem) {
value = ((OptionItem) item).getValue();
params += key + "=" + HTMLUtils.encodeString(value) + "&";
}
// if not - value may be an OPTGROUP label in an only optgroup combobox
}
}
}
if (params.endsWith("&")) {
// trim the extra &
params = params.substring(0, params.length() - 1);
}
}
// Add the submit button param, only if the key is non-null (unnamed submit buttons are not passed as parameters)
if (submitKey != null) {
if (params == null) {
params = "";
}
if (!params.equals("")) {
params = params + "&";
}
params = params + HTMLUtils.encodeString(submitKey) + "=" + HTMLUtils.encodeString(submitVal);
}
if (!error) {
DocumentInfo docInfo = new DocumentInfo(url, params, isPostMethod);
if ((encType != null) && (!encType.equals(""))) {
docInfo.setEncoding(encType);
}
htmlC.setPage(docInfo);
}
}
use of com.codename1.ui.Button in project codenameone-google-maps by codenameone.
the class MapInfoPanel method createMarkerButton.
private Button createMarkerButton(MapObject mo, String label, Image icon, final Coord location) {
Button b = new Button(label, icon);
b.addActionListener(e -> {
map.zoom(location, (int) map.getZoom());
});
return b;
}
Aggregations