FileSaveDialog.java
/*
* Copyright © 2012 Nokia Corporation. All rights reserved.
* Nokia and Nokia Connecting People are registered trademarks of Nokia Corporation.
* Oracle and Java are trademarks or registered trademarks of Oracle and/or its
* affiliates. Other product and company names mentioned herein may be trademarks
* or trade names of their respective owners.
* See LICENSE.TXT for license information.
*/
package com.nokia.example.paint.views.components;
import com.nokia.example.paint.Main;
import com.nokia.example.paint.helpers.FileHandler;
import com.nokia.example.paint.helpers.ImageLoader;
import com.nokia.example.paint.helpers.Rectangle;
import com.nokia.mid.ui.TextEditor;
import com.nokia.mid.ui.TextEditorListener;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.TextField;
public class FileSaveDialog
implements TextEditorListener, ButtonListener {
private TextEditor texteditor;
private boolean isShown = false;
protected OKButton okbutton;
protected CancelButton cancelbutton;
protected CharEraserButton chareraserbutton;
private Rectangle dialogArea;
private Image background;
private int x = 0;
private int y = 160;
private boolean showEraser = false;
public FileSaveDialog(Canvas parent) {
ImageLoader loader = ImageLoader.getInstance();
background = loader.loadImage("/dialog.png");
int width = parent.getWidth();
if (width > 240) {
x = (width - background.getWidth()) / 2;
}
Font font = Font.getDefaultFont();
texteditor = TextEditor.createTextEditor("", 50, TextField.ANY, 200, font.getHeight());
texteditor.setParent(parent);
texteditor.setPosition(x + 20, y + 60);
texteditor.setBackgroundColor(0xFFFFFFFF);
texteditor.setForegroundColor(0xFF000000);
texteditor.setConstraints(TextField.NON_PREDICTIVE);
texteditor.setTextEditorListener(this);
dialogArea = new Rectangle(x, y, background.getWidth(), background.getHeight());
okbutton = new OKButton();
okbutton.addListener(this);
cancelbutton = new CancelButton();
cancelbutton.addListener(this);
okbutton.setPosition(x, y + 122);
cancelbutton.setPosition(x + 120, y + 122);
chareraserbutton = new CharEraserButton(texteditor);
chareraserbutton.setPosition(x + 120, y + 122);
}
public void render(Graphics g) {
if (isShown) {
g.drawImage(background, x, y, Graphics.LEFT | Graphics.TOP);
okbutton.render(g);
if (!showEraser) {
cancelbutton.render(g);
}
else {
chareraserbutton.render(g);
}
g.setColor(0x000000);
g.drawString("Give filename:", x + 20, y + 35, Graphics.LEFT | Graphics.BOTTOM);
}
}
public void hide() {
isShown = false;
texteditor.setVisible(false);
}
public void show() {
isShown = true;
texteditor.setVisible(true);
texteditor.setFocus(true);
}
public boolean isVisible() {
return isShown;
}
public void pointerPressed(int x, int y) {
okbutton.pressed(x, y);
if (showEraser) {
chareraserbutton.pressed(x, y);
}
else {
cancelbutton.pressed(x, y);
}
}
public void pointerUnpressed(int x, int y) {
if (!dialogArea.isPointInside(x, y)) {
isShown = false;
texteditor.setVisible(false);
Main.getInstance().getDrawArea().allowDrawing(true);
}
else {
okbutton.unpressed(x, y);
if (showEraser) {
chareraserbutton.unpressed(x, y);
}
else {
cancelbutton.unpressed(x, y);
}
}
}
public void inputAction(TextEditor te, int actions) {
if (texteditor.getContent().length() > 0) {
showEraser = true;
}
else {
showEraser = false;
}
}
public void buttonPressed(Button caller) {
if (caller.equals(okbutton)) {
saveToFile();
}
//both buttons will hide the dialog
isShown = false;
texteditor.setVisible(false);
Main.getInstance().getDrawArea().allowDrawing(true);
}
private void saveToFile() {
final Image saveable = Main.getInstance().getDrawArea().getDrawing();
FileHandler.saveImageToFile(texteditor.getContent(), saveable);
}
}