/*
* ModeShape (http://www.modeshape.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.modeshape.web.client.contents;
import com.google.gwt.core.client.GWT;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.ContentsType;
import com.smartgwt.client.types.Encoding;
import com.smartgwt.client.types.FormMethod;
import com.smartgwt.client.types.VerticalAlignment;
import com.smartgwt.client.widgets.Button;
import com.smartgwt.client.widgets.HTMLPane;
import com.smartgwt.client.widgets.Label;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.HiddenItem;
import com.smartgwt.client.widgets.form.fields.UploadItem;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;
import org.modeshape.web.shared.JcrNode;
/**
*
* @author kulikov
*/
public class BinaryEditor extends HLayout {
private HTMLPane htmlPane = new HTMLPane();
private DynamicForm form = new DynamicForm();
private HiddenItem repositoryField = new HiddenItem("repository");
private HiddenItem workspaceField = new HiddenItem("workspace");
private HiddenItem pathField = new HiddenItem("path");
private HiddenItem pNameField = new HiddenItem("pname");
private UploadItem fileItem = new UploadItem("Upload content");
public BinaryEditor() {
this.setStyleName("grid-bg");
this.setLayoutMargin(1);
VLayout background = new VLayout();
background.setWidth100();
background.setHeight100();
background.setStyleName("grid-panel");
addMember(background);
HLayout topPanel = new HLayout();
topPanel.setHeight(30);
topPanel.setAlign(VerticalAlignment.CENTER);
topPanel.setAlign(Alignment.LEFT);
topPanel.setLayoutMargin(3);
topPanel.setBackgroundColor("#e6f1f6");
Label label = new Label("Binary content");
label.setWidth100();
label.setStyleName("caption");
topPanel.addMember(label);
background.addMember(topPanel);
// setAutoHeight();
HLayout bottomPanel = new HLayout();
bottomPanel.setHeight(30);
bottomPanel.setBackgroundColor("#e6f1f6");
background.addMember(bottomPanel);
form.setMethod(FormMethod.POST);
form.setAction(GWT.getModuleBaseURL() + "binary-upload/content");
form.setEncoding(Encoding.MULTIPART);
VLayout vstack = new VLayout();
vstack.setTop(20);
vstack.setWidth100();
vstack.setHeight(550);
htmlPane.setWidth100();
htmlPane.setHeight(500);
htmlPane.setContentsType(ContentsType.PAGE);
htmlPane.setBorder("inset #d3d3d3 1px");
htmlPane.setShowCustomScrollbars(false);
vstack.addMember(htmlPane);
HLayout panel = new HLayout();
vstack.addMember(panel);
Button submitButton = new Button("Submit");
submitButton.addClickHandler(new ClickHandler() {
@SuppressWarnings( "synthetic-access" )
@Override
public void onClick(ClickEvent event) {
form.submitForm();
}
});
submitButton.setValign(VerticalAlignment.CENTER);
fileItem.setStartRow(true);
fileItem.setEndRow(false);
fileItem.setWidth("100%");
submitButton.setTitle("Upload");
form.setWidth100();
panel.setLayoutAlign(Alignment.LEFT);
panel.setLayoutAlign(VerticalAlignment.CENTER);
panel.setBackgroundColor(null);
panel.addMember(form);
panel.addMember(submitButton);
vstack.setAutoHeight();
background.addMember(vstack);
setVisible(false);
}
public void setValue(JcrNode node, String name, String reference) {
repositoryField.setValue(node.getRepository());
workspaceField.setValue(node.getWorkspace());
pathField.setValue(node.getPath());
pNameField.setValue(name);
form.setItems(fileItem, repositoryField, workspaceField, pathField, pNameField);
htmlPane.setContentsURL(reference);
htmlPane.redraw();
}
}