use of com.codename1.ui.events.ActionEvent in project CodenameOne by codenameone.
the class FaceBookAccess method getFaceBookObject.
/**
* This method returns immediately and will call the callback when it returns with
* the FaceBook Object data.
*
* @param faceBookId the object id that we would like to query
* @param callback the callback that should be updated when the data arrives
*/
public void getFaceBookObject(String faceBookId, final ActionListener callback) throws IOException {
checkAuthentication();
final FacebookRESTService con = new FacebookRESTService(token, faceBookId, "", false);
con.addResponseListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (!con.isAlive()) {
return;
}
if (callback != null) {
callback.actionPerformed(evt);
}
}
});
if (slider != null) {
SliderBridge.bindProgress(con, slider);
}
for (int i = 0; i < responseCodeListeners.size(); i++) {
con.addResponseCodeListener((ActionListener) responseCodeListeners.elementAt(i));
}
current = con;
NetworkManager.getInstance().addToQueue(con);
}
use of com.codename1.ui.events.ActionEvent in project CodenameOne by codenameone.
the class ClearableTextField method wrap.
/**
* Wraps the given text field with a UI that will allow us to clear it
* @param tf the text field
* @param iconSize size in millimeters for the clear icon, -1 for default size
* @return a Container that should be added to the UI instead of the actual text field
*/
public static ClearableTextField wrap(final TextArea tf, float iconSize) {
ClearableTextField cf = new ClearableTextField();
Button b = new Button("", tf.getUIID());
if (iconSize > 0) {
FontImage.setMaterialIcon(b, FontImage.MATERIAL_CLEAR, iconSize);
} else {
FontImage.setMaterialIcon(b, FontImage.MATERIAL_CLEAR);
}
removeCmpBackground(tf);
removeCmpBackground(b);
cf.setUIID(tf.getUIID());
cf.add(BorderLayout.CENTER, tf);
cf.add(BorderLayout.EAST, b);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
tf.stopEditing();
tf.setText("");
tf.startEditingAsync();
}
});
return cf;
}
use of com.codename1.ui.events.ActionEvent in project CodenameOne by codenameone.
the class SliderBridge method bindProgress.
/**
* Allows binding progress to an arbitrary slider
*
* @param sources the source connection request (null for all network activity)
* @param s the slider
*/
public static void bindProgress(final ConnectionRequest[] sources, final Slider s) {
Vector v = null;
int portions = 100;
if (sources != null) {
v = new Vector();
int slen = sources.length;
for (int iter = 0; iter < slen; iter++) {
v.addElement(sources[iter]);
}
portions = portions / slen;
}
final Vector sourceVec = v;
final int portionPerSource = portions;
NetworkManager.getInstance().addProgressListener(new ActionListener() {
private float currentLength;
private int soFar;
/**
* {@inheritDoc}
*/
public void actionPerformed(ActionEvent evt) {
if (sources != null) {
if (!sourceVec.contains(evt.getSource())) {
return;
}
}
NetworkEvent e = (NetworkEvent) evt;
switch(e.getProgressType()) {
case NetworkEvent.PROGRESS_TYPE_COMPLETED:
s.setInfinite(false);
// s.setProgress(s.getMaxValue());
soFar += portionPerSource;
s.setProgress(soFar);
if (sources != null) {
NetworkManager.getInstance().removeProgressListener(this);
}
break;
case NetworkEvent.PROGRESS_TYPE_INITIALIZING:
s.setInfinite(true);
break;
case NetworkEvent.PROGRESS_TYPE_INPUT:
case NetworkEvent.PROGRESS_TYPE_OUTPUT:
if (e.getLength() > 0) {
currentLength = e.getLength();
// s.setMaxValue(1000);
s.setInfinite(false);
float sentReceived = e.getSentReceived();
sentReceived = sentReceived / currentLength * portionPerSource;
s.setProgress((int) sentReceived + soFar);
// s.setProgress(e.getSentReceived());
// s.setMaxValue(e.getLength());
} else {
s.setInfinite(true);
}
break;
}
}
});
}
use of com.codename1.ui.events.ActionEvent in project CodenameOne by codenameone.
the class ToastBar method updateStatus.
/**
* Updates the ToastBar UI component with the settings of the current status.
*/
private void updateStatus() {
final ToastBarComponent c = getToastBarComponent();
if (c != null) {
try {
if (updatingStatus) {
pendingUpdateStatus = true;
return;
}
updatingStatus = true;
if (c.currentlyShowing != null && !statuses.contains(c.currentlyShowing)) {
c.currentlyShowing = null;
}
if (c.currentlyShowing == null || statuses.isEmpty()) {
if (!statuses.isEmpty()) {
c.currentlyShowing = statuses.get(statuses.size() - 1);
} else {
setVisible(false);
return;
}
}
Status s = c.currentlyShowing;
Label l = new Label(s.getMessage() != null ? s.getMessage() : "");
c.leadButton.getListeners().clear();
c.leadButton.addActionListener(s.getListener());
c.leadButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
if (c.currentlyShowing != null && !c.currentlyShowing.showProgressIndicator) {
c.currentlyShowing.clear();
}
ToastBar.this.setVisible(false);
}
});
c.progressLabel.setVisible(s.isShowProgressIndicator());
if (c.progressLabel.isVisible()) {
if (!c.contains(c.progressLabel)) {
c.addComponent(BorderLayout.EAST, c.progressLabel);
}
Image anim = c.progressLabel.getAnimation();
if (anim != null && anim.getWidth() > 0) {
c.progressLabel.setWidth(anim.getWidth());
}
if (anim != null && anim.getHeight() > 0) {
c.progressLabel.setHeight(anim.getHeight());
}
} else {
if (c.contains(c.progressLabel)) {
c.removeComponent(c.progressLabel);
}
}
c.progressBar.setVisible(s.getProgress() >= -1);
if (s.getProgress() >= -1) {
if (!c.contains(c.progressBar)) {
c.addComponent(BorderLayout.SOUTH, c.progressBar);
}
if (s.getProgress() < 0) {
c.progressBar.setInfinite(true);
} else {
c.progressBar.setInfinite(false);
c.progressBar.setProgress(s.getProgress());
}
} else {
c.removeComponent(c.progressBar);
}
c.icon.setVisible(s.getIcon() != null);
if (s.getIcon() != null && c.icon.getIcon() != s.getIcon()) {
c.icon.setIcon(s.getIcon());
}
if (s.getIcon() == null && c.contains(c.icon)) {
c.removeComponent(c.icon);
} else if (s.getIcon() != null && !c.contains(c.icon)) {
c.addComponent(BorderLayout.WEST, c.icon);
}
String oldText = c.label.getText();
if (!oldText.equals(l.getText())) {
if (s.getUiid() != null) {
c.setUIID(s.getUiid());
} else if (defaultUIID != null) {
c.setUIID(defaultUIID);
}
if (c.isVisible()) {
TextArea newLabel = new TextArea();
// newLabel.setColumns(l.getText().length()+1);
// newLabel.setRows(l.getText().length()+1);
newLabel.setFocusable(false);
newLabel.setEditable(false);
// newLabel.getAllStyles().setFgColor(0xffffff);
if (s.getMessageUIID() != null) {
newLabel.setUIID(s.getMessageUIID());
} else if (defaultMessageUIID != null) {
newLabel.setUIID(defaultMessageUIID);
} else {
newLabel.setUIID(c.label.getUIID());
}
if (s.getUiid() != null) {
c.setUIID(s.getUiid());
} else if (defaultUIID != null) {
c.setUIID(defaultUIID);
}
newLabel.setWidth(c.label.getWidth());
newLabel.setText(l.getText());
Dimension oldTextAreaSize = UIManager.getInstance().getLookAndFeel().getTextAreaSize(c.label, true);
Dimension newTexAreaSize = UIManager.getInstance().getLookAndFeel().getTextAreaSize(newLabel, true);
// https://stackoverflow.com/questions/46172993/codename-one-toastbar-nullpointerexception
if (c.label.getParent() != null) {
c.label.getParent().replaceAndWait(c.label, newLabel, CommonTransitions.createCover(CommonTransitions.SLIDE_VERTICAL, true, 300));
c.label = newLabel;
if (oldTextAreaSize.getHeight() != newTexAreaSize.getHeight()) {
c.label.setPreferredH(newTexAreaSize.getHeight());
c.getParent().animateHierarchyAndWait(300);
}
}
} else {
if (s.getMessageUIID() != null) {
c.label.setUIID(s.getMessageUIID());
} else if (defaultMessageUIID != null) {
c.label.setUIID(defaultMessageUIID);
}
if (s.getUiid() != null) {
c.setUIID(s.getUiid());
} else if (defaultUIID != null) {
c.setUIID(defaultUIID);
}
c.label.setText(l.getText());
// c.label.setColumns(l.getText().length()+1);
// c.label.setRows(l.getText().length()+1);
c.label.setPreferredW(c.getWidth());
c.revalidate();
}
} else {
c.revalidate();
}
} finally {
updatingStatus = false;
if (pendingUpdateStatus) {
pendingUpdateStatus = false;
Display.getInstance().callSerially(new Runnable() {
public void run() {
updateStatus();
}
});
}
}
}
}
use of com.codename1.ui.events.ActionEvent in project CodenameOne by codenameone.
the class UIManager method setThemePropsImpl.
void setThemePropsImpl(Hashtable themeProps) {
resetThemeProps(themeProps);
styles.clear();
themeConstants.clear();
selectedStyles.clear();
imageCache.clear();
if (themelisteners != null) {
themelisteners.fireActionEvent(new ActionEvent(themeProps, ActionEvent.Type.Theme));
}
buildTheme(themeProps);
current.refreshTheme(true);
}
Aggregations