/*******************************************************************************
* Copyright (c) 2013 RelationWare, Benno Luthiger
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* RelationWare, Benno Luthiger
******************************************************************************/
package org.ripla.rap.demo.widgets.views;
import org.eclipse.rap.rwt.service.ServerPushSession;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Link;
import org.ripla.interfaces.IMessages;
import org.ripla.rap.demo.widgets.Activator;
import org.ripla.rap.util.ImageUtil;
import org.ripla.rap.util.LabelHelper;
import org.ripla.rap.util.NotificationHelper;
/**
* The view to display the Vaadin button widgets.
*
* @author Luthiger
*/
@SuppressWarnings("serial")
public class ButtonWidgetsView extends AbstractWidgetsView {
/**
* @param inParent
*/
public ButtonWidgetsView(final Composite inParent) {
super(inParent);
final IMessages lMessages = Activator.getMessages();
createTitle(lMessages.getMessage("widgets.title.page.button"));
createSubTitle(lMessages
.getMessage("widgets.view.button.subtitle.button"));
Button lButton = new Button(this, SWT.PUSH);
lButton.setText(lMessages.getMessage("widgets.view.button.label.save"));
lButton.setToolTipText(lMessages
.getMessage("widgets.view.button.descr.normal"));
lButton.addSelectionListener(new ClickAdapter(lMessages
.getMessage("widgets.view.button.feedback.normal"), this));
createSubTitle(lMessages.getMessage("widgets.view.button.label.image"));
lButton = new Button(this, SWT.PUSH);
lButton.setImage(ImageUtil.getImage(inParent.getDisplay(),
ButtonWidgetsView.class, "synced.png"));
lButton.setText(lMessages.getMessage("widgets.view.button.label.save"));
lButton.setToolTipText(lMessages
.getMessage("widgets.view.button.label.image"));
lButton.addSelectionListener(new ClickAdapter(lMessages
.getMessage("widgets.view.button.feedback.image"), this));
createSubTitle(lMessages
.getMessage("widgets.view.button.subtitle.disable"));
LabelHelper.createLabel(this,
lMessages.getMessage("widgets.view.button.label.disable"),
"ripla-font");
final Button lButtonDisable = new Button(this, SWT.PUSH);
lButtonDisable.setText(lMessages
.getMessage("widgets.view.button.label.click"));
lButtonDisable.setToolTipText(lMessages
.getMessage("widgets.view.button.descr.disable"));
lButtonDisable.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent inEvent) {
lButtonDisable.setEnabled(false);
lButtonDisable.pack();
final ServerPushSession lPush = new ServerPushSession();
final Runnable lRunnable = new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (final InterruptedException exc) {
// intentionally left empty
}
inParent.getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
if (!lButtonDisable.isDisposed()) {
lButtonDisable.setEnabled(true);
}
NotificationHelper.showNotification(
lMessages
.getMessage("widgets.view.button.feedback.disable"),
getShell());
}
});
lPush.stop();
}
};
lPush.start();
final Thread lThread = new Thread(lRunnable);
lThread.setDaemon(true);
lThread.start();
}
});
createSubTitle(lMessages
.getMessage("widgets.view.button.subtitle.link"));
LabelHelper.createLabel(this,
lMessages.getMessage("widgets.view.button.label.link"),
"ripla-font");
final Link lLink = new Link(this, SWT.NONE);
lLink.setText(lMessages.getMessage("widgets.view.button.label.linked"));
lLink.addSelectionListener(new ClickAdapter(lMessages
.getMessage("widgets.view.button.feedback.link"), this));
createSubTitle(lMessages
.getMessage("widgets.view.button.subtitle.check"));
LabelHelper.createLabel(this,
lMessages.getMessage("widgets.view.button.label.check"),
"ripla-font");
lButton = new Button(this, SWT.CHECK);
lButton.setText(lMessages.getMessage("widgets.view.button.label.click"));
lButton.setToolTipText(lMessages
.getMessage("widgets.view.button.descr.normal"));
lButton.addSelectionListener(new ClickAdapter(lMessages
.getMessage("widgets.view.button.feedback.check"), this));
}
private static class ClickAdapter extends SelectionAdapter {
private final String message;
private final Composite parent;
protected ClickAdapter(final String inMessage, final Composite inParent) {
message = inMessage;
parent = inParent;
}
@Override
public void widgetSelected(final SelectionEvent inEvent) {
NotificationHelper.showNotification(message, parent);
}
}
}