📄 qformviewimpl.java
字号:
/**
* If the keyCode is contained within a string,
* it gets underlined in it
* @param buttonCaption caption to process
* @return HTML code
*/
private String getUnderlined(String buttonCaption){
if(keyCodes.containsKey(buttonCaption)) {
Character c = (Character)keyCodes.get(buttonCaption);
String csUp = c.toString().toUpperCase();
String cs = c.toString();
int indexUp = buttonCaption.indexOf(csUp);
int index = buttonCaption.indexOf(cs);
if(indexUp != -1){
return buttonCaption.substring(0, indexUp)
+ "<u>" + csUp + "</u>"
+ buttonCaption.substring(indexUp + 1, buttonCaption.length());
} else if(index != -1){
return buttonCaption.substring(0, index)
+ "<u>" + cs + "</u>"
+ buttonCaption.substring(index + 1, buttonCaption.length());
}
}
return buttonCaption;
}
/**
* Initialize keyboard event handler
*/
private void initKeyboardHandling() {
keyCodes.put(SEARCH_BUTTON_CAPTION, SEARCH_BUTTON_KEYCODE);
keyCodes.put(CLEAR_BUTTON_CLEAR_CAPTION, CLEAR_BUTTON_CLEAR_KEYCODE);
keyCodes.put(CLEAR_BUTTON_CANCEL_CAPTION, CLEAR_BUTTON_CANCEL_KEYCODE);
keyCodes.put(NEW_BUTTON_CAPTION, NEW_BUTTON_KEYCODE);
keyCodes.put(CHANGE_BUTTON_CAPTION, CHANGE_BUTTON_KEYCODE);
keyCodes.put(UPDATE_BUTTON_CAPTION, UPDATE_BUTTON_KEYCODE);
keyboardEventPreview = new EventPreview() {
public boolean onEventPreview(final com.google.gwt.user.client.Event e) {
switch (DOM.eventGetType(e)) {
case com.google.gwt.user.client.Event.ONKEYUP: {
char keyCode = (char) DOM.eventGetKeyCode(e);
int modifiers = KeyboardListenerCollection.getKeyboardModifiers(e);
if (processKeyEvents(keyCode, modifiers)) {
DOM.eventPreventDefault(e);
return false;
}
break;
}
case com.google.gwt.user.client.Event.ONKEYDOWN: {
char keyCode = (char) DOM.eventGetKeyCode(e);
int modifiers = KeyboardListenerCollection.getKeyboardModifiers(e);
return processKeyDown(keyCode, modifiers);
}
}
return true;
}
};
}
private boolean processKeyDown(char keyCode, int modifiers) {
boolean res = true;
Character kc = new Character(Character.toLowerCase(keyCode));
if (keyCode == KeyboardListener.KEY_ENTER) {
int formState = model.getFormState();
if (formState == FormState.SEARCH_STATE) {
if (textAreaHasFocus) {
return true;
}
formElementsEventSource.fireEvent(QFormController.Events.FORM_SEARCH_BUTTON_EVENT);
} else if (formState == FormState.SELECTED_STATE) {
formElementsEventSource.fireEvent(QFormController.Events.FORM_SEARCH_BUTTON_EVENT);
} else if (formState == FormState.NEW_STATE || formState == FormState
.EDIT_STATE) {
if (textAreaHasFocus) {
return true;
}
formElementsEventSource.fireEvent(QFormController.Events.FORM_UPDATE_BUTTON_EVENT);
}
} else if (modifiers == DEFAULT_MODIFIER_KEY) {
if (kc.equals((Character) keyCodes.get(SEARCH_BUTTON_CAPTION)) ||
kc.equals((Character) keyCodes.get(CLEAR_BUTTON_CLEAR_CAPTION)) ||
kc.equals((Character) keyCodes.get(CLEAR_BUTTON_CANCEL_CAPTION)) ||
kc.equals((Character) keyCodes.get(CLEAR_BUTTON_CANCEL_CAPTION)) ||
kc.equals((Character) keyCodes.get(NEW_BUTTON_CAPTION)) ||
kc.equals((Character) keyCodes.get(CHANGE_BUTTON_CAPTION)) ||
kc.equals((Character) keyCodes.get(UPDATE_BUTTON_CAPTION))) {
return false;
} else {
res = true;
}
}
return res;
}
private boolean isButtonEnabled(String buttonCaption) {
if(buttonCaption.equals(SEARCH_BUTTON_CAPTION) && (searchButton != null) && searchButton.isEnabled() && presentButtons.contains(buttonCaption)){
return true;
} else if (((buttonCaption.equals(UPDATE_BUTTON_CAPTION) && presentButtons.contains(UPDATE_BUTTON_CAPTION))
|| ((buttonCaption.equals(CHANGE_BUTTON_CAPTION)) && presentButtons.contains(CHANGE_BUTTON_CAPTION))) && (changeOrUpdateButton != null) && changeOrUpdateButton.isEnabled() ){
return true;
} else if (((buttonCaption.equals(CLEAR_BUTTON_CLEAR_CAPTION) && presentButtons.contains(CLEAR_BUTTON_CLEAR_CAPTION))
|| ((buttonCaption.equals(CLEAR_BUTTON_CANCEL_CAPTION)) && presentButtons.contains(CLEAR_BUTTON_CANCEL_CAPTION))) && (clearButton != null) && clearButton.isEnabled()) {
return true;
} else if(buttonCaption.equals(NEW_BUTTON_CAPTION) && (newButton != null) && newButton.isEnabled() && presentButtons.contains(buttonCaption)){
return true;
}
return false;
}
/**
* Process keyboard events
*/
private boolean processKeyEvents(char keyCode, int modifiers) {
boolean res = true;
Character kc = new Character(Character.toLowerCase(keyCode));
if((modifiers == DEFAULT_MODIFIER_KEY) && (kc.equals((Character)keyCodes.get(SEARCH_BUTTON_CAPTION)))
&& (isButtonEnabled(SEARCH_BUTTON_CAPTION))) {
formElementsEventSource.fireEvent(QFormController.Events.FORM_SEARCH_BUTTON_EVENT);
} else if((modifiers == DEFAULT_MODIFIER_KEY) && (((kc.equals((Character)keyCodes.get(CLEAR_BUTTON_CLEAR_CAPTION)))
&& (isButtonEnabled(CLEAR_BUTTON_CLEAR_CAPTION)))
|| ((kc.equals((Character)keyCodes.get(CLEAR_BUTTON_CANCEL_CAPTION)))
&& (isButtonEnabled(CLEAR_BUTTON_CANCEL_CAPTION))))) {
formElementsEventSource.fireEvent(QFormController.Events.FORM_CLEAR_BUTTON_EVENT);
} else if((modifiers == DEFAULT_MODIFIER_KEY) && (kc.equals((Character)keyCodes.get(CLEAR_BUTTON_CANCEL_CAPTION)))
&& (isButtonEnabled(CLEAR_BUTTON_CANCEL_CAPTION))) {
formElementsEventSource.fireEvent(QFormController.Events.FORM_CLEAR_BUTTON_EVENT);
} else if((modifiers == DEFAULT_MODIFIER_KEY) && (kc.equals((Character)keyCodes.get(NEW_BUTTON_CAPTION)))
&& (isButtonEnabled(NEW_BUTTON_CAPTION))) {
formElementsEventSource.fireEvent(QFormController.Events.FORM_NEW_BUTTON_EVENT);
} else if((modifiers == DEFAULT_MODIFIER_KEY) && (kc.equals((Character)keyCodes.get(CHANGE_BUTTON_CAPTION)))
&& (isButtonEnabled(CHANGE_BUTTON_CAPTION))) {
formElementsEventSource.fireEvent(QFormController.Events.FORM_CHANGE_BUTTON_EVENT);
} else if((modifiers == DEFAULT_MODIFIER_KEY) && (kc.equals((Character)keyCodes.get(UPDATE_BUTTON_CAPTION)))
&& (isButtonEnabled(UPDATE_BUTTON_CAPTION))) {
formElementsEventSource.fireEvent(QFormController.Events.FORM_UPDATE_BUTTON_EVENT);
} else if(modifiers == (DEFAULT_MODIFIER_KEY + KeyboardListener.KEY_RIGHT)) {
// Move to the next form
DialogHelper.showModalMessageDialog("Next form");
} else if(modifiers == (DEFAULT_MODIFIER_KEY + KeyboardListener.KEY_LEFT)) {
// Move to the previous form
DialogHelper.showModalMessageDialog("Previous form");
} else {
res = false;
}
return res;
}
public boolean isSelected() {
return selected;
}
EventSource getContextMenuEventSource() {
return contextMenu.getEventSource();
}
EventSource formElementsEventSource = new EventSource(this);
EventSource getFormElementsEventSource() {
return formElementsEventSource;
}
public void setAdhocControlsEnabled(boolean isEnabled) {
int designState = isEnabled ? QFormElementModel.NOT_IN_REPORT : QFormElementModel.DISABLED_FOR_REPORT_DESIGN;
Set ids = controls.keySet();
for(Iterator iterator = ids.iterator(); iterator.hasNext();) {
QFormElement formElement = ((QFormElement) controls.get(iterator.next()));
formElement.getBaseModel().setReportDesignState(designState);
}
}
public void setAdhocControlState(String elementId, int state) {
QFormElement qFormElement = getElement(elementId);
if(qFormElement != null) {
qFormElement.getBaseModel().setReportDesignState(state);
}
}
public int getAdhocControlState(String elementId) {
QFormElement qFormElement = getElement(elementId);
return qFormElement != null ? qFormElement.getBaseModel().getReportDesignState() : QFormElementModel.DISABLED_FOR_REPORT_DESIGN;
}
public boolean isAdhocControlInReport(String elementId) {
QFormElement qFormElement = getElement(elementId);
return qFormElement != null ? qFormElement.getBaseModel().getReportDesignState() == QFormElementModel.IN_REPORT : false;
}
private QFormElement getElement(String elementId) {
return (QFormElement) controls.get(elementId);
}
public FormLayoutMeta getLayoutMeta() {
return layoutMeta;
}
/**
* Used for adding instead of unknown elements (which is declared in FormLayoutMeta but doesn't actually
* exist in model).
*/
//TODO redesigne this class in order to save height of an element
private final static class QErrorLabel extends QFormElementView {
private Label label;
public int getClientWidth() {
return getOffsetWidth();
}
protected void setClientWidth(String clientWidth) {
setWidth(clientWidth);
}
public void setClientWidth(int clientWidth) {
if (clientWidth > getOffsetWidth()) {
super.setClientWidth(clientWidth);
}
}
protected void setEnabled(boolean isEnabled) {
}
public void initializeBaseUI(int layout) {
label = new Label();
label.setWordWrap(false);
addToPanel(label);
initPanel();
}
/*public QErrorLabel(int layout) {
this(layout, "");
}*/
public QErrorLabel(int layout, String contant) {
super(new ElementModelAdapter(), layout);
label.setText(contant);
}
}
private static class ElementModelAdapter extends QFormElementModelImpl {
public ElementModelAdapter() {
setBaseMeta(new BaseFieldMeta(FieldMeta.CHECKBOX, "unknown_element_id", ""));//just fake
}
public boolean isLinkable() {
return false;
}
public boolean isValid() {
return false;
}
public int getDataType() {
return 0;
}
public void cloneDataFrom(QFormElementModel sameTypeControlModel) throws DataCloneException {
}
}
public int getFormLabelsOrientation() {
return labelsOrientation;
}
void hideContextMenu() {
if (contextMenu.isVisible()) {
contextMenu.hide();
}
}
void collectUISettings() {
Set ids = controls.keySet();
for(Iterator iterator = ids.iterator(); iterator.hasNext();) {
((QFormElement) controls.get(iterator.next())).getBaseController().collectUISettings();
}
}
void setCustomButtonsEnabled(boolean enabled) {
setCustomButtonsEnabled(null, enabled);
}
public void setCustomButtonsEnabled(String[] buttonsId, boolean enabled) {
Set ids;
if (buttonsId != null && buttonsId.length > 0) {
ids = new HashSet();
for (int i = 0; i < buttonsId.length; i++) {
ids.add(buttonsId[i]);
}
}
else {
ids = customButtons.keySet();
}
for (Iterator iterator = ids.iterator(); iterator.hasNext();) {
((QButton) customButtons.get(iterator.next())).setEnabled(enabled);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -