From fca386d7dfc897c7c55f17533c29562523872826 Mon Sep 17 00:00:00 2001 From: MarinaSokol Date: Mon, 12 Nov 2007 13:29:16 +0000 Subject: [PATCH] git-svn-id: https://only.mawhrin.net/repos/FBReaderJ/trunk@113 6a642e6f-84f6-412e-ac94-c4a38d5a04b0 --- .../core/application/ZLApplication.java | 38 +++--- .../core/application/ZLApplicationWindow.java | 127 +++++++++++++++--- 2 files changed, 134 insertions(+), 31 deletions(-) diff --git a/src/org/zlibrary/core/application/ZLApplication.java b/src/org/zlibrary/core/application/ZLApplication.java index 6b94aeff1..3bfaabf21 100644 --- a/src/org/zlibrary/core/application/ZLApplication.java +++ b/src/org/zlibrary/core/application/ZLApplication.java @@ -63,7 +63,7 @@ public abstract class ZLApplication extends ZLApplicationBase { ConfigAutoSavingOption = new ZLBooleanOption(ZLOption.CONFIG_CATEGORY, CONFIG, AUTO_SAVE, true); ConfigAutoSaveTimeoutOption = new ZLIntegerRangeOption(ZLOption.CONFIG_CATEGORY, CONFIG, TIMEOUT, 1, 6000, 30); KeyDelayOption = new ZLIntegerRangeOption(ZLOption.CONFIG_CATEGORY, "Options", "KeyDelay", 0, 5000, 250); - myViewWidget = null; + setMyViewWidget(null); myWindow = null; if (ConfigAutoSavingOption.getValue()) { //ZLOption.startAutoSave((int)(ConfigAutoSaveTimeoutOption.getValue())); @@ -73,11 +73,11 @@ public abstract class ZLApplication extends ZLApplicationBase { //ZLCommunicationManager.instance().registerHandler("present", myPresentWindowHandler); } - public Toolbar toolbar() { + public Toolbar getToolbar() { return this.myToolbar; } - public Menubar menubar() { + public Menubar getMenubar() { return this.myMenubar; } @@ -87,8 +87,8 @@ public abstract class ZLApplication extends ZLApplicationBase { return; } - if (myViewWidget != null) { - myViewWidget.setView(view); + if (getMyViewWidget() != null) { + getMyViewWidget().setView(view); resetWindowCaption(); refreshWindow(); } else { @@ -97,7 +97,7 @@ public abstract class ZLApplication extends ZLApplicationBase { } protected ZLView getCurrentView() { - return (myViewWidget != null) ? myViewWidget.getView() : null; + return (getMyViewWidget() != null) ? getMyViewWidget().getView() : null; } protected void quit() { @@ -111,7 +111,7 @@ public abstract class ZLApplication extends ZLApplicationBase { } public void initWindow() { - myViewWidget = myWindow.createViewWidget(); + setMyViewWidget(myWindow.createViewWidget()); myWindow.init(); setView(myInitialView); @@ -129,7 +129,7 @@ public abstract class ZLApplication extends ZLApplicationBase { } public void refreshWindow() { - if (myViewWidget != null) { + if (getMyViewWidget() != null) { //myViewWidget.repaint(); } if (myWindow != null) { @@ -184,8 +184,8 @@ public abstract class ZLApplication extends ZLApplicationBase { } public void trackStylus(boolean track) { - if (myViewWidget != null) { - myViewWidget.trackStylus(track); + if (getMyViewWidget() != null) { + getMyViewWidget().trackStylus(track); } } @@ -195,23 +195,23 @@ public abstract class ZLApplication extends ZLApplicationBase { } } - public Action action(int actionId) { + public Action getAction(int actionId) { return myActionMap.get(actionId); } public boolean isActionVisible(int actionId) { - Action a = action(actionId); + Action a = getAction(actionId); return ((a != null) && a.isVisible()); } public boolean isActionEnabled(int actionId) { - Action action = action(actionId); + Action action = getAction(actionId); return (action != null) && action.isEnabled(); } public void doAction(int actionId) { - Action action = action(actionId); + Action action = getAction(actionId); if (action != null) { action.checkAndRun(); } @@ -220,7 +220,7 @@ public abstract class ZLApplication extends ZLApplicationBase { abstract public ZLKeyBindings keyBindings(); public void doActionByKey(String key) { - Action a = action(keyBindings().getBinding(key)); + Action a = getAction(keyBindings().getBinding(key)); if ((a != null) && (!a.useKeyDelay() /*|| (myLastKeyActionTime.millisecondsTo(ZLTime()) >= KeyDelayOption.getValue())*/)) { @@ -250,5 +250,13 @@ public abstract class ZLApplication extends ZLApplicationBase { public void resetLastCaller() { //((PresentWindowHandler)myPresentWindowHandler).resetLastCaller(); } + + public void setMyViewWidget(ZLViewWidget myViewWidget) { + this.myViewWidget = myViewWidget; + } + + public ZLViewWidget getMyViewWidget() { + return myViewWidget; + } } diff --git a/src/org/zlibrary/core/application/ZLApplicationWindow.java b/src/org/zlibrary/core/application/ZLApplicationWindow.java index 4694088c0..b4144524b 100644 --- a/src/org/zlibrary/core/application/ZLApplicationWindow.java +++ b/src/org/zlibrary/core/application/ZLApplicationWindow.java @@ -1,42 +1,137 @@ package org.zlibrary.core.application; +import java.util.List; +import java.util.Set; + +import org.zlibrary.core.application.toolbar.ButtonGroup; +import org.zlibrary.core.application.toolbar.ButtonItem; +import org.zlibrary.core.application.toolbar.Item; import org.zlibrary.core.view.ZLViewWidget; abstract public class ZLApplicationWindow { private ZLApplication myApplication; + private boolean myToggleButtonLock; protected ZLApplicationWindow(ZLApplication application) { myApplication = application; myApplication.setWindow(this); + myToggleButtonLock = false; } public ZLApplication application() { return myApplication; } - abstract public void init(); + public void init() { + myApplication.setMyViewWidget(createViewWidget()); + + List toolbarItems = myApplication.getToolbar().items(); + for (Item item: toolbarItems) { + addToolbarItem(item); + } + + initMenu(); + } abstract public void initMenu(); - /* - void onButtonPress(ZLApplication::Toolbar::ButtonItem &button); - // TODO: change to pure virtual - virtual void setToggleButtonState(const ZLApplication::Toolbar::ButtonItem&) {} - // TODO: change to pure virtual - virtual void setToolbarItemState(ZLApplication::Toolbar::ItemPtr item, bool visible, bool enabled) {} - */ - + + public void onButtonPress(ButtonItem button) { + if (myToggleButtonLock) { + return; + } + if (button.isToggleButton()) { + myToggleButtonLock = true; + if (button.isPressed()) { + setToggleButtonState(button); + myToggleButtonLock = false; + return; + } else { + button.press(); + ButtonGroup group = button.buttonGroup(); + Set items = group.Items; + for (ButtonItem bitem: items) { + setToggleButtonState(bitem); + } + } + myToggleButtonLock = false; + } + application().doAction(button.actionId()); + } + + public abstract void setToggleButtonState(ButtonItem item); + + public abstract void setToolbarItemState(Item item, boolean visible, boolean enabled); + abstract protected ZLViewWidget createViewWidget(); - - /* - virtual void addToolbarItem(ZLApplication::Toolbar::ItemPtr item) = 0; + + abstract public void addToolbarItem(Item item); // TODO: change to non-virtual (?) - virtual void refresh(); + public void refresh() { + /* + List items = application().getToolbar().items(); + boolean enableToolbarSpace = false; + Item lastSeparator = null; + for (Item item: items) { + switch (item.type()) { + case ItemType.OPTION_ENTRY: + { + boolean visible = ((Toolbar.OptionEntryItem)**it).entry()->isVisible(); + if (visible) { + if (!lastSeparator.isNull()) { + setToolbarItemState(lastSeparator, true, true); + lastSeparator = 0; + } + enableToolbarSpace = true; + } + setToolbarItemState(*it, visible, true); + } + break; + case ZLApplication::Toolbar::Item::BUTTON: + { + const ZLApplication::Toolbar::ButtonItem &button = (const ZLApplication::Toolbar::ButtonItem&)**it; + int id = button.actionId(); + + const bool visible = application().isActionVisible(id); + const bool enabled = application().isActionEnabled(id); + + if (visible) { + if (!lastSeparator.isNull()) { + setToolbarItemState(lastSeparator, true, true); + lastSeparator = 0; + } + enableToolbarSpace = true; + } + if (!enabled && button.isPressed()) { + shared_ptr group = button.buttonGroup(); + group->press(0); + application().doAction(group->UnselectAllButtonsActionId); + myToggleButtonLock = true; + setToggleButtonState(button); + myToggleButtonLock = false; + } + setToolbarItemState(*it, visible, enabled); + } + break; + case ZLApplication::Toolbar::Item::SEPARATOR: + if (enableToolbarSpace) { + lastSeparator = *it; + enableToolbarSpace = false; + } else { + setToolbarItemState(*it, false, true); + } + break; + } + } + if (!lastSeparator.isNull()) { + setToolbarItemState(lastSeparator, false, true); + }*/ + } // TODO: change to pure virtual - virtual void present() {} + //virtual void present() {} - virtual void close() = 0; -*/ + //virtual void close() = 0; +//*/ abstract public void setCaption(String caption);