package fi.utu.ville.exercises.template; import java.io.File; import com.vaadin.shared.ui.label.ContentMode; import com.vaadin.ui.Label; import com.vaadin.ui.TextField; import com.vaadin.ui.VerticalLayout; import fi.utu.ville.exercises.model.Editor; import fi.utu.ville.exercises.model.EditorHelper; import fi.utu.ville.exercises.model.EditorHelper.EditedExerciseGiver; import fi.utu.ville.exercises.model.VilleContent; import fi.utu.ville.exercises.model.VilleUI; import fi.utu.ville.standardutils.AFFile; import fi.utu.ville.standardutils.AbstractFile; import fi.utu.ville.standardutils.Localizer; import fi.utu.ville.standardutils.SimpleFileUploader; import fi.utu.ville.standardutils.SimpleFileUploader.UploaderListener; import fi.utu.ville.standardutils.StandardIcon.IconVariant; import fi.utu.ville.standardutils.StandardUIFactory; import fi.utu.ville.standardutils.ui.AbstractEditorLayout; public class TemplateEditor extends VilleContent implements Editor<TemplateExerciseData> { /** * */ private static final long serialVersionUID = -4600841604409240872L; public static final int MAX_FILE_SIZE_KB = 1024; public static final String IMAGE_MIME_FILTER = "^image/.*$"; private EditorHelper<TemplateExerciseData> editorHelper; private TextField questionText; private AbstractFile currImgFile; private Localizer localizer; private AbstractEditorLayout layout; public TemplateEditor() { super(null); } @Override public VilleContent getView() { return this; } @Override public void initialize(VilleUI ui, Localizer localizer, TemplateExerciseData oldData, EditorHelper<TemplateExerciseData> editorHelper) { this.localizer = localizer; this.editorHelper = editorHelper; editorHelper.getTempManager().initialize(); init(ui); doLayout(oldData); } private TemplateExerciseData getCurrentExercise() { return new TemplateExerciseData(questionText.getValue(), currImgFile); } private void doLayout(TemplateExerciseData oldData) { this.setMargin(false); setSpacing(false); this.setWidth("100%"); layout = StandardUIFactory.getTwoColumnView(); addComponent(layout); layout.addToTop(editorHelper .getControlbar(new EditedExerciseGiver<TemplateExerciseData>() { @Override public TemplateExerciseData getCurrExerData( boolean forSaving) { return getCurrentExercise(); } })); layout.setTitle("Editor"); layout.addToLeft(editorHelper.getInfoEditorView()); String oldQuestion; if (oldData != null) { oldQuestion = oldData.getQuestion(); currImgFile = oldData.getImgFile(); } else { oldQuestion = ""; currImgFile = null; } VerticalLayout editlayout = new VerticalLayout(); Label questionTextCapt = new Label( localizer.getUIText(TemplateUiConstants.QUESTION_TEXT)); questionTextCapt.addStyleName("template-exercise-title"); questionText = new TextField(null, oldQuestion); SimpleFileUploader uploader = new SimpleFileUploader(localizer, editorHelper.getTempManager(), MAX_FILE_SIZE_KB, IMAGE_MIME_FILTER); uploader.registerUploaderListener(new UploaderListener() { /** * */ private static final long serialVersionUID = 8266397773350713952L; @Override public void fileUploadSucceeded(File tempFile, String fileName, String mimeType) { currImgFile = new AFFile(tempFile); } @Override public void uploadedFileDeleted(File tempFile) { currImgFile = null; } }); if (currImgFile != null) { uploader.setAbstractUploadedFile(currImgFile); } editlayout.addComponent(questionTextCapt); editlayout.addComponent(questionText); editlayout.addComponent( new Label(TemplateFontIcons.UPLOAD.getIcon().variant(IconVariant.BLACK), ContentMode.HTML)); editlayout.addComponent(uploader); layout.addToRight(editlayout); } @Override public void doLayout() { } @Override public boolean isOkToExit() { // TODO Auto-generated method stub return true; } @Override public String getViewName() { return "template-editor"; } }