blob: c888d5741b436b65f6ad3691ebe5ce954e5a4f10 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2008 IBM Corporation and Others
* 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:
* Daisuke SATO - initial API and implementation
*******************************************************************************/
package org.eclipse.actf.visualization.presentation.ui.internal;
import java.io.File;
import java.util.List;
import org.eclipse.actf.mediator.Mediator;
import org.eclipse.actf.model.IModelService;
import org.eclipse.actf.model.ModelServiceImageCreator;
import org.eclipse.actf.visualization.IVisualizationConst;
import org.eclipse.actf.visualization.IVisualizationView;
import org.eclipse.actf.visualization.engines.lowvision.image.PageImage;
import org.eclipse.actf.visualization.engines.lowvision.io.ImageDumpUtil;
import org.eclipse.actf.visualization.presentation.RoomPlugin;
import org.eclipse.actf.visualization.presentation.eval.CheckResultPresentation;
import org.eclipse.actf.visualization.presentation.util.ParamRoom;
import org.eclipse.actf.visualization.presentation.util.SimulateRoom;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
public class PartControlRoom implements IVisualizationConst {
private static PartControlRoom INSTANCE = null;
private PageImage targetPageImage;
private RoomView roomView;
private ParamRoom paramRoom;
private Shell _shell;
private boolean _isInSimulate;
private CheckResultPresentation checkResult;
private File vizResultFile;
private String dumpImageFile;
private IVisualizationView checker;
private Mediator mediator = Mediator.getInstance();
public static PartControlRoom getDefaultInstance() {
return INSTANCE;
}
public PartControlRoom(IVisualizationView checker, Composite parent) {
INSTANCE = this;
this.checker = checker;
this._shell = parent.getShell();
paramRoom = new ParamRoom();
roomView = new RoomView(parent);
_isInSimulate = false;
try {
File dumpImgFile = RoomPlugin.createTempFile(PREFIX_SCREENSHOT,
SUFFIX_BMP);
dumpImageFile = dumpImgFile.getAbsolutePath();
} catch (Exception e) {
e.printStackTrace();
}
}
public void doSimulate() {
// TODO enable,disable button
if (_isInSimulate) {
return;
}
this._isInSimulate = true;
this._shell.setCursor(new Cursor(_shell.getDisplay(), SWT.CURSOR_WAIT));
checkResult = new CheckResultPresentation();
mediator.setEvaluationResult(checker, checkResult);
roomView.clearImage();
_shell.getDisplay().update();
IModelService modelService = mediator.getActiveModelService();
if (modelService == null) {
return;
}
prepareInt2Ds(modelService);
}
private void prepareInt2Ds(IModelService modelService) {
try {
checker
.setStatusMessage(RoomPlugin
.getResourceString("PartRightRoom.dump_the_image_in_the_web_browser._26"));
modelService.setScrollbarWidth(roomView.getVarticalBarSize().x);
ModelServiceImageCreator imgCreator = new ModelServiceImageCreator(
modelService);
imgCreator.getScreenImageAsBMP(dumpImageFile, false);
targetPageImage = ImageDumpUtil.createPageImage(dumpImageFile,
_shell);
if (targetPageImage != null) {
checker
.setStatusMessage(RoomPlugin
.getResourceString("PartRightRoom.begin_to_make_PageImage._2"));
doSimulateAfterHalf(modelService);
} else {
_shell.setCursor(null);
_isInSimulate = false;
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void doSimulateAfterHalf(IModelService modelService) {
// TODO
PageImage pageImageWhole = targetPageImage;
checker
.setStatusMessage(RoomPlugin
.getResourceString("PartRightRoom.prepare_Simulation_Image._29"));
paramRoom.setDisplayResolution(modelService.getTargetComposite()
.getSize().y);
try {
vizResultFile = RoomPlugin.createTempFile(PREFIX_VISUALIZATION,
SUFFIX_BMP);
ImageData[] imageDataArray = SimulateRoom.doSimulate(
pageImageWhole, paramRoom, vizResultFile.getAbsolutePath());
if (imageDataArray.length > 0) {
roomView.displayImage(imageDataArray[0]);
}
imageDataArray = null;
} catch (Exception e) {
e.printStackTrace();
}
String html = "";
switch (paramRoom.getType()) {
case ParamRoom.ROOM_SMALL:
html = RoomPlugin
.getResourceString("adesigner.room.report.small.url");
break;
case ParamRoom.ROOM_MIDDLE:
html = RoomPlugin
.getResourceString("adesigner.room.report.middle.url");
break;
case ParamRoom.ROOM_LARGE:
html = RoomPlugin
.getResourceString("adesigner.room.report.large.url");
break;
}
checkResult.setSummaryReportUrl(RoomPlugin.getDirectory("html") + html);
// TODO
checkResult.setSummaryReportText("");
Mediator.getInstance().setEvaluationResult(checker, checkResult);
checker
.setStatusMessage(RoomPlugin
.getResourceString("PartRightRoom.simulation_of_current_page_is_over._8"));
// //$NON-NLS-1$
_shell.setCursor(null);
_isInSimulate = false;
}
public void setHighlightPositions(List infoPositionSizeList) {
roomView.highlight(infoPositionSizeList);
}
/**
* @return
*/
public ParamRoom getParamLowVision() {
return paramRoom;
}
/**
* @param vision
*/
public void setParamLowVision(ParamRoom vision) {
paramRoom = vision;
}
public void setLVParamStatus() {
if (!_isInSimulate) {
checker.setInfoMessage(paramRoom.toString());
}
}
}