/**
*
*/
package logbook.gui.twitter;
import java.io.File;
import java.io.IOException;
import logbook.gui.ApplicationMain;
import logbook.gui.WindowBase;
import logbook.internal.LoggerHolder;
import logbook.util.SwtUtils;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import twitter4j.TwitterException;
/**
* @author Nekopanda
*
*/
public class TweetDialog extends WindowBase {
/** ロガー */
private static final LoggerHolder LOG = new LoggerHolder(TweetDialog.class);
private final WindowBase parent;
private Shell shell;
private final File imageFile;
/**
* Create the dialog.
* @param parent
*/
public TweetDialog(WindowBase parent, File imageFile) {
this.parent = parent;
this.imageFile = imageFile;
}
/**
* Open the dialog.
* @return the result
*/
@Override
public void open() {
this.createContents();
this.registerEvents();
this.setWindowInitialized(true);
this.setVisible(true);
}
/**
* Create contents of the dialog.
*/
private void createContents() {
// シェル
super.createContents(this.parent, SWT.CLOSE | SWT.TITLE, false);
this.getShell().setText("つぶやく");
this.shell = this.getShell();
// レイアウト
GridLayout glShell = new GridLayout(3, false);
// glShell.horizontalSpacing = 1;
glShell.marginHeight = 10;
glShell.marginWidth = 10;
// glShell.verticalSpacing = 1;
this.shell.setLayout(glShell);
Label thumnail = new Label(this.shell, SWT.NONE);
GridData gdThumnail = new GridData(SWT.CENTER, SWT.CENTER, false, false, 3, 1);
thumnail.setLayoutData(gdThumnail);
try {
Image orig = SwtUtils.makeImage(this.imageFile);
thumnail.setImage(SwtUtils.scaleToFit(orig, 400, 300));
orig.dispose();
} catch (IOException e2) {
SwtUtils.errorDialog(e2, TweetDialog.this.shell);
}
final Text text = new Text(this.shell, SWT.MULTI | SWT.BORDER | SWT.WRAP);
GridData gdText = new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1);
gdText.widthHint = SwtUtils.DPIAwareWidth(300);
gdText.heightHint = SwtUtils.DPIAwareHeight(80);
text.setLayoutData(gdText);
Label userName = new Label(this.shell, SWT.NONE);
userName.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1));
try {
userName.setText(TwitterClient.getInstance().getUser().getScreenName());
} catch (TwitterException e1) {
SwtUtils.errorDialog(e1, TweetDialog.this.shell);
}
final Label remainChars = new Label(this.shell, SWT.NONE);
remainChars.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
text.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
int remain = 117 - text.getText().length();
remainChars.setText(String.valueOf(remain));
}
});
text.setText("");
Button tweet = new Button(this.shell, SWT.NONE);
GridData gdTweet = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1);
gdTweet.widthHint = SwtUtils.DPIAwareWidth(100);
tweet.setLayoutData(gdTweet);
tweet.setText("つぶやく");
tweet.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
TwitterClient.getInstance().tweet(
TweetDialog.this, text.getText(), TweetDialog.this.imageFile);
TweetDialog.this.shell.close();
ApplicationMain.logPrint("つぶやきました");
} catch (TwitterException e1) {
SwtUtils.errorDialog(e1, TweetDialog.this.shell);
}
}
});
this.shell.pack();
}
}