/**
* Copyright 2008-2016 Qualogy Solutions B.V.
*
* 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 com.qualogy.qafe.gwt.client.vo.handlers;
import java.util.Map;
import java.util.Queue;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.UIObject;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.widgetideas.table.client.overrides.FlexTable;
import com.qualogy.qafe.gwt.client.component.ShowPanelComponent;
import com.qualogy.qafe.gwt.client.ui.renderer.RendererHelper;
import com.qualogy.qafe.gwt.client.util.ComponentRepository;
import com.qualogy.qafe.gwt.client.vo.data.EventDataI;
import com.qualogy.qafe.gwt.client.vo.functions.BuiltInFunctionGVO;
import com.qualogy.qafe.gwt.client.vo.functions.ShowPanelGVO;
import com.qualogy.qafe.gwt.client.vo.ui.ComponentGVO;
public class ShowPanelHandler extends AbstractBuiltInHandler {
private static final Object CENTER_POSITION = "center";
protected BuiltInState executeBuiltIn(UIObject sender, String listenerType, Map<String, String> mouseInfo, BuiltInFunctionGVO builtInGVO, String appId, String windowId, String eventSessionId, Queue derivedBuiltIns) {
ShowPanelGVO showPanelGVO = (ShowPanelGVO) builtInGVO;
showPanel(showPanelGVO, mouseInfo, appId, windowId, eventSessionId);
return BuiltInState.EXECUTED;
}
private void showPanel(ShowPanelGVO showPanelGVO, Map<String, String> mouseInfo, String appId, String windowId, String eventSessionId) {
final ComponentGVO panelDefGVO = showPanelGVO.getSrc();
final String panelDefId = panelDefGVO.getId();
BuiltinHandlerHelper.closeOpenedPanelDefinition(panelDefId, appId, windowId, eventSessionId);
final boolean autoHide = showPanelGVO.isAutoHide();
final boolean modal = showPanelGVO.isModal();
int left = showPanelGVO.getLeft();
int top = showPanelGVO.getTop();
String position = showPanelGVO.getPosition();
if ((left > 0) && (top > 0)) {
position = null;
} else {
left = 0;
top = 0;
if (position == null) {
if (mouseInfo.containsKey(EventDataI.MOUSE_X)) {
left = Integer.parseInt(mouseInfo.get(EventDataI.MOUSE_X));
}
if (mouseInfo.containsKey(EventDataI.MOUSE_Y)) {
top = Integer.parseInt(mouseInfo.get(EventDataI.MOUSE_Y));
}
}
}
final ShowPanelComponent showPanel = new ShowPanelComponent(autoHide, modal, left, top);
Widget panelDef = (Widget) renderComponent(panelDefGVO, eventSessionId, windowId, appId);
FlexTable panel = new FlexTable();
if (!autoHide) {
Label close = new Label("X");
close.setStyleName("qafe_close_on_showPanel");
close.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
showPanel.hide();
}
});
panel.setWidget(0, 1, close);
}
panel.setWidget(1, 0, panelDef);
showPanel.setWidget(panel);
String panelDefKey = BuiltinHandlerHelper.generatePanelDefinitionKey(panelDefId, appId, windowId);
String windowKey = RendererHelper.generateId(windowId, windowId, appId);
showPanel.setId(panelDefKey);
showPanel.setWindow(windowId);
showPanel.setWindowIdentifier(windowKey);
ComponentRepository.getInstance().putComponent(panelDefKey, (UIObject)showPanel, true);
handleMask(showPanelGVO, panelDefKey, windowKey, windowId);
showPanel.show();
handleStyle(showPanelGVO, showPanel, panelDef);
handleSize(showPanelGVO, showPanel, panel);
if (CENTER_POSITION.equals(position)) {
showPanel.center();
}
}
private void handleMask(ShowPanelGVO showPanelGVO, String panelDefKey, String windowKey, String windowId) {
BuiltinHandlerHelper.handleMask(showPanelGVO, panelDefKey, windowKey, windowId);
}
private void handleStyle(ShowPanelGVO showPanelGVO, ShowPanelComponent showPanel, UIObject widget) {
BuiltinHandlerHelper.handleStyle(showPanelGVO, showPanel, widget);
}
private void handleSize(ShowPanelGVO showPanelGVO, ShowPanelComponent showPanel, UIObject container) {
BuiltinHandlerHelper.handleSize(showPanelGVO, showPanel, container);
}
}