kune-commits
Threads by month
- ----- 2026 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
January 2011
- 1 participants
- 22 discussions
31 Jan '11
Author: vjrj_
Date: 2011-01-31 19:59:30 +0100 (Mon, 31 Jan 2011)
New Revision: 1229
Modified:
trunk/
trunk/src/main/java/cc/kune/gspace/client/WsArmorImpl.ui.xml
Log:
minor changes
Property changes on: trunk
___________________________________________________________________
Name: svn:ignore
- pmd-eclipse.log
.pmd
www-test
screenlog.0
bin
client
public
target
target-local
Main-compile
bin
.settings
.gwt-cache
repository
derby.log
star-yellow-grey.png
run.sh
tomcat
gwt-out
synccss.sh
.externalToolBuilders
.wtpmodules
www
testRepository
kune-OLD-jcr
KuneApp.launch
KuneApp NOSERVER.launch
old_src
org.ourproject.kune.app.Kune
org.ourproject.kune.iml
org.ourproject.kune.ipr
org.ourproject.kune.iws
nbproject
hibernate.reveng.xml
.gwt-tmp
target-eclipse
.checkstyle
.classpath-bien
pom.xml.*
.gwt
.jdee_sources
.jdee_classpath
prj.el
.factorypath
.apt_generated
+ pmd-eclipse.log
.pmd
www-test
screenlog.0
bin
client
public
target
target-local
Main-compile
bin
.settings
.gwt-cache
repository
derby.log
star-yellow-grey.png
run.sh
tomcat
gwt-out
synccss.sh
.externalToolBuilders
.wtpmodules
www
testRepository
kune-OLD-jcr
KuneApp.launch
KuneApp NOSERVER.launch
old_src
org.ourproject.kune.app.Kune
org.ourproject.kune.iml
org.ourproject.kune.ipr
org.ourproject.kune.iws
nbproject
hibernate.reveng.xml
.gwt-tmp
target-eclipse
.checkstyle
.classpath-bien
pom.xml.*
.gwt
.jdee_sources
.jdee_classpath
prj.el
.factorypath
.apt_generated
target.old
Modified: trunk/src/main/java/cc/kune/gspace/client/WsArmorImpl.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/WsArmorImpl.ui.xml 2011-01-31 18:51:35 UTC (rev 1228)
+++ trunk/src/main/java/cc/kune/gspace/client/WsArmorImpl.ui.xml 2011-01-31 18:59:30 UTC (rev 1229)
@@ -1,6 +1,6 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:kp="urn:import:cc.kune.pspace.client"
- xmlns:k="urn:import:cc.kune.wspace.client" xmlns:g="urn:import:com.google.gwt.user.client.ui">
+ xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:with field='res'
type='cc.kune.gspace.client.resources.WsArmorResources' />
<ui:style>
1
0
Author: vjrj_
Date: 2011-01-31 19:51:35 +0100 (Mon, 31 Jan 2011)
New Revision: 1228
Added:
trunk/img/kune-logo-without-text-80px.png
trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java
trunk/src/main/java/cc/kune/chat/public/
trunk/src/main/java/cc/kune/client/
trunk/src/main/java/cc/kune/client/KuneEntryPoint.java
trunk/src/main/java/cc/kune/client/KuneGinjector.java
trunk/src/main/java/cc/kune/common/client/ui/KuneWindowUtils.java
trunk/src/main/java/cc/kune/core/client/auth/UserPassAutocompleteManager.java
trunk/src/main/java/cc/kune/core/client/auth/UserPassAutocompleteManagerImpl.java
trunk/src/main/java/cc/kune/core/client/logs/EventBusWithLogging.java
trunk/src/main/java/cc/kune/core/client/resources/browser-32.png
trunk/src/main/java/cc/kune/core/client/resources/cancel-32.png
trunk/src/main/java/cc/kune/core/client/resources/important-32.png
trunk/src/main/java/cc/kune/gspace/
trunk/src/main/java/cc/kune/gspace/GSpace.gwt.xml
trunk/src/main/java/cc/kune/gspace/client/resources/wsArmor.css
trunk/src/main/java/cc/kune/pspace/
trunk/src/main/java/cc/kune/pspace/PSpace.gwt.xml
trunk/src/main/java/cc/kune/pspace/client/
trunk/src/main/java/cc/kune/pspace/client/PSpaceGinModule.java
trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java
trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.ui.xml
trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java
trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java
Removed:
trunk/src/main/java/cc/kune/core/client/CoreGinjector.java
trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java
trunk/src/main/java/cc/kune/core/client/logs/EventsLogger.java
trunk/src/main/java/cc/kune/core/client/ws/CorePlaceManager.java
trunk/src/main/java/cc/kune/gspace/Wspace.gwt.xml
trunk/src/main/java/cc/kune/gspace/client/resources/wsArmor.css
trunk/src/main/java/cc/kune/gspace/public/fontface/
trunk/src/main/java/cc/kune/wspace/
trunk/src/main/java/org/ourproject/kune/platf/client/ui/KuneWindowUtils.java
Modified:
trunk/.classpath
trunk/TODO
trunk/pom.xml
trunk/script/genProxy.sh
trunk/script/server.sh
trunk/src/main/java/cc/kune/Kune.gwt.xml
trunk/src/main/java/cc/kune/chat/Chat.gwt.xml
trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java
trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractChildGuiItem.java
trunk/src/main/java/cc/kune/common/client/ui/AbstractAtBorderPopupPanel.java
trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java
trunk/src/main/java/cc/kune/common/public/kune-common.css
trunk/src/main/java/cc/kune/core/Core.gwt.xml
trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java
trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java
trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java
trunk/src/main/java/cc/kune/core/client/auth/RegisterView.java
trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java
trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java
trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java
trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
trunk/src/main/java/cc/kune/core/client/auth/SignInView.java
trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierViewImpl.java
trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifyEvent.java
trunk/src/main/java/cc/kune/core/client/resources/CoreResources.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsViewImpl.java
trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoViewImpl.java
trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java
trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.java
trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.ui.xml
trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialog.java
trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java
trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java
trunk/src/main/java/cc/kune/core/public/ws.css
trunk/src/main/java/cc/kune/core/public/ws.html
trunk/src/main/java/cc/kune/core/shared/dto/StateTokenUtils.java
trunk/src/main/java/cc/kune/gspace/client/WsArmor.java
trunk/src/main/java/cc/kune/gspace/client/WsArmorEntryPoint.java
trunk/src/main/java/cc/kune/gspace/client/WsArmorImpl.java
trunk/src/main/java/cc/kune/gspace/client/WsArmorImpl.ui.xml
trunk/src/main/java/cc/kune/gspace/client/resources/WsArmorResources.java
trunk/src/main/java/cc/kune/msgs/client/UserMessagesPanel.java
trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java
trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardFlags.java
trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteoptions/SiteOptionsPresenter.java
trunk/src/main/resources/wave-server.properties
trunk/src/main/webapp/
trunk/src/main/webapp/WEB-INF/web.xml
trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java
trunk/src/test/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenterTest.java
Log:
NEW - # 19: Public part info message and URL
http://kune.ourproject.org/issues/ticket/19
NEW - # 17: emite chat update
http://kune.ourproject.org/issues/ticket/17
NEW - # 18: Event Logger (for dev purposes)
http://kune.ourproject.org/issues/ticket/18
NEW - # 14: Site bar update
http://kune.ourproject.org/issues/ticket/14
Modified: trunk/.classpath
===================================================================
--- trunk/.classpath 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/.classpath 2011-01-31 18:51:35 UTC (rev 1228)
@@ -11,6 +11,7 @@
<classpathentry kind="var" path="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar" sourcepath="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA.jar" sourcepath="M2_REPO/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar" sourcepath="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0.jar" sourcepath="M2_REPO/aopalliance/aopalliance/1.0/aopalliance-1.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/>
<classpathentry kind="var" path="M2_REPO/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar"/>
<classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
@@ -37,7 +38,10 @@
<classpathentry kind="var" path="M2_REPO/com/googlecode/gwt/inject/gin/r137/gin-r137.jar"/>
<classpathentry kind="var" path="M2_REPO/com/google/guava/guava-gwt/r07/guava-gwt-r07.jar"/>
<classpathentry kind="var" path="M2_REPO/com/google/code/guice/guice/2.1-SNAPSHOT-r1160/guice-2.1-SNAPSHOT-r1160.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/inject/guice/2.0/guice-2.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/inject/extensions/guice-assisted-inject/2.0/guice-assisted-inject-2.0.jar"/>
<classpathentry kind="var" path="M2_REPO/com/google/code/guice/guice-servlet/2.0.1/guice-servlet-2.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/jhickman/web/gwt/gwt-customuibinder/0.1/gwt-customuibinder-0.1.jar"/>
<classpathentry kind="var" path="M2_REPO/org/adamtacy/gwt-fx/r464/gwt-fx-r464.jar"/>
<classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/log/gwt-log/gwt-log/3.0.1/gwt-log-3.0.1.jar"/>
<classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1-sources.jar"/>
@@ -48,8 +52,10 @@
<classpathentry kind="var" path="M2_REPO/com/gwtextux/gwtextux/0.4.0.924/gwtextux-0.4.0.924.jar"/>
<classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp/0.5-SNAPSHOT/gwtp-0.5-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/com/extjs/gxt/2.2.1/gxt-2.2.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/jhickman/web/gwt/gxt-uibinder/0.6/gxt-uibinder-0.6.jar"/>
<classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.20070617/h2-1.0.20070617.jar"/>
<classpathentry kind="var" path="M2_REPO/com/calclab/emite/hablar/r1694/hablar-r1694.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1.jar" sourcepath="M2_REPO/org/hamcrest/hamcrest-core/1.1/hamcrest-core-1.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate/3.2.1.ga/hibernate-3.2.1.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate/3.2.1.ga/hibernate-3.2.1.ga-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga-sources.jar"/>
@@ -68,6 +74,7 @@
<classpathentry kind="var" path="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15.jar" sourcepath="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47.jar" sourcepath="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/hibernate/jtidy/r8-20060801/jtidy-r8-20060801.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jukito/jukito/1.0/jukito-1.0.jar" sourcepath="M2_REPO/org/jukito/jukito/1.0/jukito-1.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/4.8.1/junit-4.8.1.jar" sourcepath="M2_REPO/junit/junit/4.8.1/junit-4.8.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-core/1.7.0/liquibase-core-1.7.0.jar"/>
<classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-plugin/1.7.0.0/liquibase-plugin-1.7.0.0.jar"/>
@@ -81,8 +88,9 @@
<classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-all/1.6/mockito-all-1.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5.jar" sourcepath="M2_REPO/org/mockito/mockito-core/1.8.5/mockito-core-1.8.5-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/mysql/mysql-connector-java/5.1.13/mysql-connector-java-5.1.13.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0.jar" sourcepath="M2_REPO/org/objenesis/objenesis/1.0/objenesis-1.0-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-gwt/0.3.1/proto-gwt-0.3.1.jar"/>
Modified: trunk/TODO
===================================================================
--- trunk/TODO 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/TODO 2011-01-31 18:51:35 UTC (rev 1228)
@@ -11,11 +11,15 @@
Use org-mode in emacs to easy manage this file
* SHORT-TERM (URGENT)
+** TODO StateManager #signin while already signed in NPE
+** TODO Testing Presenters via juckito:
+https://code.google.com/p/gwt-platform/wiki/UnitTesting
+https://code.google.com/p/arcbees-hive/source/browse/test/com/arcbees/hive/client/home/blog/ui/BlogItemWidgetTest.java
** src/org/waveprotocol/box/server/gxp/ (pages) >> ./gen/org/waveprotocol/box/server/gxp/WaveClientPage.java
** Use Emulate Stack Java like src/org/waveprotocol/box/webclient/WebClientDev.gwt.xml
** roo error
[FelixDispatchQueue] Expected string-based content in @RooGwtMirroredFrom on cc.kune.client.managed.request.ContainerTranslationProxyObject of class [org.springframework.roo.classpath.details.annotations.ClassAttributeValue] must be an instance of class org.springframework.roo.classpath.details.annotations.StringAttributeValue
-** Gin sharing of instances between injectos
+** Gin sharing of instances between injectors
https://groups.google.com/group/google-gin/browse_thread/thread/203ab172540…
** Wave integration
[ ] org.waveprotocol.box.webclient.WebClientProd
@@ -57,8 +61,7 @@
add-apt-repository ppa:ubuntu-mozilla-daily/ppa
apt-get update
-** Compilation in target... resolve
-** tag, resolve last implementation complexity.
+** tags system, resolve last implementation complexity.
Summary: recover the:
[Tag] <-m--m-> [Content]
and use:
@@ -256,6 +259,7 @@
http://stuffthathappens.com/blog/2009/09/14/guice-with-gwt/
http://pavelgj.blogspot.com/2008/02/gwt-remoteserviceservlet-guice.html
** TODO junit + guice utils:
+https://code.google.com/p/jukito/
https://code.google.com/p/guiceberry/
https://code.google.com/p/atunit/
** TODO Study OSGI + guice:
Added: trunk/img/kune-logo-without-text-80px.png
===================================================================
(Binary files differ)
Property changes on: trunk/img/kune-logo-without-text-80px.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/pom.xml 2011-01-31 18:51:35 UTC (rev 1228)
@@ -242,6 +242,16 @@
<artifactId>gwt-fx</artifactId>
<version>r464</version>
</dependency>
+ <dependency>
+ <groupId>com.jhickman.web.gwt</groupId>
+ <artifactId>gwt-customuibinder</artifactId>
+ <version>0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>com.jhickman.web.gwt</groupId>
+ <artifactId>gxt-uibinder</artifactId>
+ <version>0.6</version>
+ </dependency>
<!-- cc -->
<dependency>
<groupId>com.gwtext</groupId>
@@ -274,11 +284,8 @@
<artifactId>dozer</artifactId>
<version>4.0</version>
</dependency>
- <!-- <dependency>
- <groupId>com.calclab</groupId>
- <artifactId>suco</artifactId>
- <version>0.6.5</version>
- </dependency> -->
+ <!-- <dependency> <groupId>com.calclab</groupId> <artifactId>suco</artifactId>
+ <version>0.6.5</version> </dependency> -->
<dependency>
<groupId>jmagick</groupId>
<artifactId>jmagick</artifactId>
@@ -468,11 +475,17 @@
<scope>provided</scope>
</dependency>
<!-- testing dependencies -->
+ <!-- <dependency> -->
+ <!-- <groupId>org.mockito</groupId> -->
+ <!-- <artifactId>mockito-all</artifactId> -->
+ <!-- <scope>test</scope> -->
+ <!-- <version>1.6</version> -->
+ <!-- </dependency> -->
<dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
+ <groupId>org.jukito</groupId>
+ <artifactId>jukito</artifactId>
+ <version>1.0</version>
<scope>test</scope>
- <version>1.6</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
Modified: trunk/script/genProxy.sh
===================================================================
--- trunk/script/genProxy.sh 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/script/genProxy.sh 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,3 +1,5 @@
+#echo buider.exclude\(\"$2\"\)\;
+#exit
cat << EOF
<servlet>
<servlet-name>Wiab$1</servlet-name>
@@ -3,8 +5,8 @@
<servlet-class>org.eclipse.jetty.servlets.ProxyServlet\$Transparent</servlet-class>
<init-param>
-<param-name>ProxyTo</param-name><param-value>http://127.0.0.1/9898</param-value>
+<param-name>ProxyTo</param-name><param-value>http://127.0.0.1:9898/</param-value>
</init-param>
<init-param>
-<param-name>Prefix</param-name><param-value></param-value>
+<param-name>Prefix</param-name><param-value>/</param-value>
</init-param>
</servlet>
Modified: trunk/script/server.sh
===================================================================
--- trunk/script/server.sh 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/script/server.sh 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,5 +1,5 @@
#!/bin/bash
-mvn jetty:run -Dorg.mortbay.util.FileResource.checkAliases=False
-
-
+mvn jetty:run -Dorg.mortbay.util.FileResource.checkAliases=False -Djava.security.auth.login.config=src/main/resources/jaas.config
+ # -Dorg.eclipse.jetty.util.log.INFO=true
+ # -Dorg.eclipse.jetty.util.log.DEBUG=true
Modified: trunk/src/main/java/cc/kune/Kune.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/Kune.gwt.xml 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/Kune.gwt.xml 2011-01-31 18:51:35 UTC (rev 1228)
@@ -4,12 +4,13 @@
<inherits name="com.google.gwt.user.User" />
<inherits name='com.google.gwt.logging.Logging' />
<inherits name="cc.kune.core.Core" />
+ <inherits name="cc.kune.wave.KuneWave" />
<inherits name="cc.kune.chat.Chat" />
- <inherits name="cc.kune.wave.KuneWave" />
+ <inherits name="cc.kune.pspace.PSpace" />
<inherits name="com.calclab.suco.Suco" />
<inherits name="org.adamtacy.GWTEffects"></inherits>
- <!-- <source path='client' excludes="**/*Test.java,**/*Tests.java,**/*MockProvider.java"
- /> -->
+ <source path='client'
+ excludes="**/*Test.java,**/*Tests.java,**/*MockProvider.java" />
<!-- <source path='shared'/> -->
<!-- <public path="public"/> -->
<!-- Logging Configuration -->
@@ -32,10 +33,16 @@
<!--http://code.google.com/p/google-web-toolkit/issues/detail?id=42 -->
<!-- <set-property name="user.agent" value="gecko1_8" /> -->
<set-property name="user.agent" value="safari,gecko1_8" />
+ <!-- gwt-platform ============================================= -->
+ <inherits name='com.gwtplatform.mvp.Mvp' />
+ <define-configuration-property name="gin.ginjector"
+ is-multi-valued="false" />
+ <set-configuration-property name="gin.ginjector"
+ value="cc.kune.client.KuneGinjector" />
<!-- Debugging =============================================== -->
<!-- for add ensureDebugIds (debugId in UIBinder), remove/comment in production
see UIObject.ensureDebugId()) -->
<inherits name="com.google.gwt.user.Debug" />
<!-- Entrypoint =============================================== -->
- <entry-point class="cc.kune.core.client.KuneEntryPoint" />
+ <entry-point class="cc.kune.client.KuneEntryPoint" />
</module>
Modified: trunk/src/main/java/cc/kune/chat/Chat.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/chat/Chat.gwt.xml 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/chat/Chat.gwt.xml 2011-01-31 18:51:35 UTC (rev 1228)
@@ -9,4 +9,5 @@
<inherits name='com.calclab.hablar.icons.ie6gif.HablarIE6GifIcons' />
<inherits name='com.calclab.hablar.icons.alt.HablarAltIcons' />
<source path="client" />
+ <set-property name="user.agent" value="safari,gecko1_8" />
</module>
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -6,6 +6,7 @@
import cc.kune.common.client.actions.Action;
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.common.client.actions.KeyStroke;
+import cc.kune.common.client.actions.ui.ParentWidget;
import cc.kune.common.client.actions.ui.descrip.IconLabelDescriptor;
import cc.kune.common.client.shortcuts.Keyboard;
import cc.kune.common.client.ui.PopupTopPanel;
@@ -57,7 +58,11 @@
}
+ protected static final String CHAT_CLIENT_ICON_ID = "k-chat-icon-id";
+
+ protected IconLabelDescriptor chatIcon;
private PopupTopPanel popup;
+
private final Session session;
@Inject
@@ -68,14 +73,14 @@
@Override
public void onAppStart(final AppStartEvent event) {
res.css().ensureInjected();
- final IconLabelDescriptor chatIcon = new IconLabelDescriptor(action);
+ chatIcon = new IconLabelDescriptor(action);
chatIcon.putValue(Action.SMALL_ICON, res.chat());
- chatIcon.putValue(Action.NAME, "Chat");
- chatIcon.setStyles("k-floatright, k-no-backimage, k-btn-sitebar");
+ chatIcon.setId(CHAT_CLIENT_ICON_ID);
+ chatIcon.setStyles("k-floatright, k-no-backimage, k-btn-sitebar, k-chat-icon");
action.putValue(Action.SHORT_DESCRIPTION, i18n.t("Show/hide the chat window"));
action.setShortcut(KeyStroke.getKeyStroke('C', Keyboard.MODIFIER_ALT));
chatIcon.setVisible(session.isLogged());
- siteActions.addAction(chatIcon);
+ siteActions.getLeftToolbar().addAction(chatIcon);
eventBus.addHandler(UserSignInEvent.getType(), new UserSignInHandler() {
@Override
public void onUserSignIn(final UserSignInEvent event) {
@@ -236,7 +241,7 @@
if (session.isLogged()) {
createDialogIfNeeded();
if (show) {
- popup.showCentered();
+ popup.showNear((Widget) chatIcon.getValue(ParentWidget.PARENT_UI));
} else {
popup.hide();
}
Added: trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java (rev 0)
+++ trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,16 @@
+package cc.kune.chat.client;
+
+import com.google.inject.Singleton;
+import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
+
+public class ChatGinModule extends AbstractPresenterModule {
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.google.gwt.inject.client.AbstractGinModule#configure()
+ */
+ @Override
+ protected void configure() {
+ bind(ChatClient.class).to(ChatClientDefault.class).in(Singleton.class);
+ }
+}
\ No newline at end of file
Property changes on: trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/client/KuneEntryPoint.java (from rev 1227, trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java)
===================================================================
--- trunk/src/main/java/cc/kune/client/KuneEntryPoint.java (rev 0)
+++ trunk/src/main/java/cc/kune/client/KuneEntryPoint.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,62 @@
+package cc.kune.client;
+
+import cc.kune.common.client.noti.NotifyUser;
+import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
+
+import com.google.gwt.core.client.EntryPoint;
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.core.client.GWT.UncaughtExceptionHandler;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+import com.gwtplatform.mvp.client.DelayedBindRegistry;
+
+/**
+ * The Class KuneEntryPoint.
+ */
+public class KuneEntryPoint implements EntryPoint {
+
+ public final KuneGinjector ginjector = GWT.create(KuneGinjector.class);
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.google.gwt.core.client.EntryPoint#onModuleLoad()
+ */
+ @Override
+ public void onModuleLoad() {
+ GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
+ @Override
+ public void onUncaughtException(final Throwable e) {
+ GWT.log("Error in 'onModuleLoad()' method", e);
+ e.printStackTrace();
+ }
+ });
+ Scheduler.get().scheduleDeferred(new ScheduledCommand() {
+ @Override
+ public void execute() {
+ onModuleLoadCont();
+ }
+ });
+ }
+
+ /**
+ * On module load cont.
+ */
+ public void onModuleLoadCont() {
+ DelayedBindRegistry.bind(ginjector);
+ AsyncCallbackSimple.init(ginjector.getErrorHandler());
+ NotifyUser.init(ginjector.getEventBus());
+ // ginjector.getPlaceManager().revealCurrentPlace();
+ ginjector.getCorePresenter().get().forceReveal();
+ ginjector.getStateManager();
+ ginjector.getSiteTokenListeners();
+ ginjector.getEventLogger();
+ ginjector.getI18n();
+ ginjector.getGxtGuiProvider();
+ ginjector.getUserNotifierPresenter();
+ ginjector.getSpinerPresenter();
+ ginjector.getSiteLogoPresenter();
+ ginjector.getSpacesTabPresenter();
+ ginjector.getChatClient();
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/client/KuneEntryPoint.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/client/KuneGinjector.java (from rev 1227, trunk/src/main/java/cc/kune/core/client/CoreGinjector.java)
===================================================================
--- trunk/src/main/java/cc/kune/client/KuneGinjector.java (rev 0)
+++ trunk/src/main/java/cc/kune/client/KuneGinjector.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,85 @@
+package cc.kune.client;
+
+import cc.kune.chat.client.ChatClient;
+import cc.kune.chat.client.ChatGinModule;
+import cc.kune.common.client.actions.gwtui.GwtGuiProvider;
+import cc.kune.common.client.actions.gxtui.GxtGuiProvider;
+import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
+import cc.kune.core.client.CoreGinModule;
+import cc.kune.core.client.auth.RegisterPresenter;
+import cc.kune.core.client.auth.SignInPresenter;
+import cc.kune.core.client.cookies.CookiesManager;
+import cc.kune.core.client.errors.ErrorHandler;
+import cc.kune.core.client.logs.EventBusWithLogging;
+import cc.kune.core.client.notify.msgs.UserNotifierPresenter;
+import cc.kune.core.client.notify.spiner.SpinerPresenter;
+import cc.kune.core.client.sitebar.SitebarActionsPresenter;
+import cc.kune.core.client.sitebar.logo.SiteLogoPresenter;
+import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter;
+import cc.kune.core.client.state.SiteTokenListeners;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.client.ws.CorePresenter;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.pspace.client.PSpaceGinModule;
+import cc.kune.pspace.client.PSpacePresenter;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.inject.client.AsyncProvider;
+import com.google.gwt.inject.client.GinModules;
+import com.google.gwt.inject.client.Ginjector;
+import com.google.inject.Provider;
+import com.gwtplatform.mvp.client.proxy.ProxyFailureHandler;
+
+@GinModules({ CoreGinModule.class, ChatGinModule.class, PSpaceGinModule.class })
+public interface KuneGinjector extends Ginjector {
+
+ /*
+ * You have to add here all the GWTPresenters (as Provider or AsyncProvider)
+ * see the GWTPlatform doc
+ */
+
+ ChatClient getChatClient();
+
+ AsyncProvider<CookiesManager> getCookiesManager();
+
+ Provider<CorePresenter> getCorePresenter();
+
+ ErrorHandler getErrorHandler();
+
+ EventBus getEventBus();
+
+ EventBusWithLogging getEventLogger();
+
+ GlobalShortcutRegister getGlobalShortcutRegister();
+
+ GuiProvider getGuiProvider();
+
+ GwtGuiProvider getGwtGuiProvider();
+
+ GxtGuiProvider getGxtGuiProvider();
+
+ I18nTranslationService getI18n();
+
+ ProxyFailureHandler getProxyFailureHandler();
+
+ AsyncProvider<PSpacePresenter> getPSpacePresenter();
+
+ AsyncProvider<RegisterPresenter> getRegisterPresenter();
+
+ AsyncProvider<SignInPresenter> getSignInPresenter();
+
+ AsyncProvider<SitebarActionsPresenter> getSitebarActionsPresenter();
+
+ AsyncProvider<SiteLogoPresenter> getSiteLogoPresenter();
+
+ SiteTokenListeners getSiteTokenListeners();
+
+ AsyncProvider<SpaceSelectorPresenter> getSpacesTabPresenter();
+
+ AsyncProvider<SpinerPresenter> getSpinerPresenter();
+
+ StateManager getStateManager();
+
+ AsyncProvider<UserNotifierPresenter> getUserNotifierPresenter();
+}
\ No newline at end of file
Property changes on: trunk/src/main/java/cc/kune/client/KuneGinjector.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -5,6 +5,7 @@
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.common.client.actions.KeyStroke;
import cc.kune.common.client.actions.ui.AbstractGuiItem;
+import cc.kune.common.client.actions.ui.ParentWidget;
import cc.kune.common.client.actions.ui.descrip.AbstractGuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.IconLabelDescriptor;
import cc.kune.common.client.ui.IconLabel;
@@ -32,6 +33,7 @@
public AbstractGuiItem create(final AbstractGuiActionDescrip descriptor) {
super.descriptor = descriptor;
iconLabel = new IconLabel("");
+ descriptor.putValue(ParentWidget.PARENT_UI, this);
final String id = descriptor.getId();
if (id != null) {
iconLabel.ensureDebugId(id);
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -98,7 +98,7 @@
if (notStandAlone) {
button.setVisible(visible);
} else {
- button.setVisible(visible);
+ // button.setVisible(visible);
}
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuGui.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuGui.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -34,7 +34,7 @@
}
@Override
- protected void addStyle(String style) {
+ protected void addStyle(final String style) {
button.addStyleName(style);
}
@@ -56,8 +56,8 @@
super.descriptor = descriptor;
descriptor.putValue(ParentWidget.PARENT_UI, this);
// Standalone menus are menus without and associated button in a
- // toolbar
- // (sometimes, a menu showed in a grid, or other special widgets)
+ // toolbar (sometimes, a menu showed in a grid, or other special
+ // widgets)
notStandAlone = !((MenuDescriptor) descriptor).isStandalone();
if (notStandAlone) {
button = new SplitButton("");
@@ -93,7 +93,6 @@
if (button != null) {
button.setEnabled(enabled);
}
-
}
@Override
@@ -101,7 +100,6 @@
if (button != null) {
button.setIconStyle(style);
}
-
}
@Override
@@ -109,7 +107,6 @@
if (button != null) {
button.setText(text);
}
-
}
@Override
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -6,38 +6,30 @@
import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor;
import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor.Type;
-import com.extjs.gxt.ui.client.widget.Component;
+import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem;
+import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem;
+import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
public class GxtToolbarSeparatorGui extends AbstractChildGuiItem {
- Component separator;
-
@Override
- protected void addStyle(final String style) {
- if (separator != null) {
- separator.addStyleName(style);
- }
- }
-
- @Override
public AbstractGuiItem create(final AbstractGuiActionDescrip descriptor) {
- super.create(descriptor);
final GxtToolbarGui toolbar = (GxtToolbarGui) parent;
-
final Type type = ((ToolbarSeparatorDescriptor) descriptor).getSeparatorType();
switch (type) {
case fill:
- separator = toolbar.addFill();
+ child = new FillToolItem();
break;
case spacer:
- separator = toolbar.addSpacer();
+ child = new SeparatorToolItem();
break;
case separator:
- separator = toolbar.addSeparator();
+ child = new LabelToolItem();
break;
default:
break;
}
+ super.create(descriptor);
return toolbar;
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractChildGuiItem.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractChildGuiItem.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractChildGuiItem.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -19,6 +19,13 @@
}
@Override
+ protected void addStyle(final String style) {
+ if (child != null) {
+ child.addStyleName(style);
+ }
+ }
+
+ @Override
public AbstractGuiItem create(final AbstractGuiActionDescrip descriptor) {
final int position = descriptor.getPosition();
if (descriptor.isChild()) {
Modified: trunk/src/main/java/cc/kune/common/client/ui/AbstractAtBorderPopupPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/AbstractAtBorderPopupPanel.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/common/client/ui/AbstractAtBorderPopupPanel.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -12,17 +12,16 @@
protected UIObject showNearObject;
public AbstractAtBorderPopupPanel() {
- super();
- init();
+ super(false, false);
}
public AbstractAtBorderPopupPanel(final boolean autohide) {
- super(autohide);
- init();
+ this(autohide, false);
}
public AbstractAtBorderPopupPanel(final boolean autohide, final boolean modal) {
super(autohide, modal);
+ setGlassEnabled(modal);
init();
}
@@ -35,10 +34,12 @@
Window.addResizeHandler(new ResizeHandler() {
@Override
public void onResize(final ResizeEvent event) {
- if (showCentered) {
- setCenterPositionImpl();
- } else {
- showRelativeImpl();
+ if (isShowing()) {
+ if (showCentered) {
+ setCenterPositionImpl();
+ } else {
+ showRelativeImpl();
+ }
}
}
});
Modified: trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -43,6 +43,11 @@
hp.add(w);
}
+ @Override
+ public void addStyleName(final String style) {
+ label.addStyleName(style);
+ }
+
public void addTextStyleName(final String style) {
label.addStyleName(style);
}
Copied: trunk/src/main/java/cc/kune/common/client/ui/KuneWindowUtils.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/KuneWindowUtils.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/KuneWindowUtils.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/ui/KuneWindowUtils.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,36 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.common.client.ui;
+
+import com.google.gwt.user.client.Window;
+
+public class KuneWindowUtils {
+ public static int getClientHeight() {
+ return Window.getClientHeight();
+ }
+
+ public static int getClientWidth() {
+ return Window.getClientWidth();
+ }
+
+ public static void open(String url) {
+ Window.open(url, "_blank", "");
+ }
+}
Modified: trunk/src/main/java/cc/kune/common/public/kune-common.css
===================================================================
--- trunk/src/main/java/cc/kune/common/public/kune-common.css 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/common/public/kune-common.css 2011-01-31 18:51:35 UTC (rev 1228)
@@ -33,6 +33,13 @@
opacity: 0.90;
}
+.k-opacity95 {
+ kfilter: alpha(opacity = 95);
+ -moz-opacity: 0.95;
+ -khtml-opacity: 0.95;
+ opacity: 0.95;
+}
+
.gwt-PopupPanelGlass {
background-color: #f7ebe3 !important;
kfilter: alpha(opacity = 68) !important;
Modified: trunk/src/main/java/cc/kune/core/Core.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/core/Core.gwt.xml 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/Core.gwt.xml 2011-01-31 18:51:35 UTC (rev 1228)
@@ -12,17 +12,12 @@
<script src="js/jquery.qtip-1.0.0-rc3.min.js" />
<!-- Dependencies ============================================= -->
<inherits name="com.google.gwt.user.User" />
- <inherits name="cc.kune.wspace.Wspace" />
+ <inherits name="cc.kune.gspace.GSpace" />
<inherits name="cc.kune.msgs.KuneMsgs" />
<inherits name="cc.kune.common.KuneCommon" />
<inherits name="com.extjs.gxt.ui.GXT" />
+ <inherits name="com.jhickman.web.gwt.gxtuibinder.GxtUiBinder" />
<inherits name="com.calclab.suco.Suco" />
- <!-- gwt-platform ============================================= -->
- <inherits name='com.gwtplatform.mvp.Mvp' />
- <define-configuration-property name="gin.ginjector"
- is-multi-valued="false" />
- <set-configuration-property name="gin.ginjector"
- value="cc.kune.core.client.CoreGinjector" />
<!-- Styles =================================================== -->
<stylesheet src="ws.css" />
<stylesheet src="fontface/stylesheet.css" />
Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,7 +1,5 @@
package cc.kune.core.client;
-import cc.kune.chat.client.ChatClient;
-import cc.kune.chat.client.ChatClientDefault;
import cc.kune.common.client.actions.gwtui.GwtGuiProvider;
import cc.kune.common.client.actions.gxtui.GxtGuiProvider;
import cc.kune.common.client.actions.ui.bind.DefaultGuiProvider;
@@ -16,6 +14,8 @@
import cc.kune.core.client.auth.SignInPanel;
import cc.kune.core.client.auth.SignInPresenter;
import cc.kune.core.client.auth.SignInView;
+import cc.kune.core.client.auth.UserPassAutocompleteManager;
+import cc.kune.core.client.auth.UserPassAutocompleteManagerImpl;
import cc.kune.core.client.cookies.CookiesManager;
import cc.kune.core.client.cookies.CookiesManagerImpl;
import cc.kune.core.client.errors.ErrorHandler;
@@ -23,7 +23,7 @@
import cc.kune.core.client.init.AppStarter;
import cc.kune.core.client.init.AppStarterDefault;
import cc.kune.core.client.init.PrefetchUtilities;
-import cc.kune.core.client.logs.EventsLogger;
+import cc.kune.core.client.logs.EventBusWithLogging;
import cc.kune.core.client.notify.msgs.UserNotifierPresenter;
import cc.kune.core.client.notify.msgs.UserNotifierPresenter.UserNotifierProxy;
import cc.kune.core.client.notify.msgs.UserNotifierViewImpl;
@@ -52,13 +52,12 @@
import cc.kune.core.client.ws.CorePresenter;
import cc.kune.core.client.ws.CoreViewImpl;
import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.WsArmor;
+import cc.kune.gspace.client.WsArmorImpl;
import cc.kune.msgs.client.UserMessagesPanel;
import cc.kune.msgs.client.UserMessagesPresenter;
-import cc.kune.wspace.client.WsArmor;
-import cc.kune.wspace.client.WsArmorImpl;
import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.event.shared.SimpleEventBus;
import com.google.inject.Singleton;
import com.gwtplatform.mvp.client.DefaultProxyFailureHandler;
import com.gwtplatform.mvp.client.RootPresenter;
@@ -76,12 +75,10 @@
*/
@Override
protected void configure() {
- bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class);
- // bind(PlaceManager.class).to(CorePlaceManager.class).in(Singleton.class);
+ bind(EventBus.class).to(EventBusWithLogging.class).in(Singleton.class);
bind(TokenFormatter.class).to(ParameterTokenFormatter.class).in(Singleton.class);
bind(RootPresenter.class).asEagerSingleton();
bind(QTipsHelper.class).asEagerSingleton();
- bind(EventsLogger.class).asEagerSingleton();
bind(ProxyFailureHandler.class).to(DefaultProxyFailureHandler.class).in(Singleton.class);
bind(I18nUITranslationService.class).in(Singleton.class);
bind(I18nTranslationService.class).to(I18nUITranslationService.class).in(Singleton.class);
@@ -106,6 +103,7 @@
bindPresenter(SitebarActionsPresenter.class, SitebarActionsPresenter.SitebarActionsView.class,
SitebarActionsViewImpl.class, SitebarActionsPresenter.SitebarActionsProxy.class);
+ bind(UserPassAutocompleteManager.class).to(UserPassAutocompleteManagerImpl.class).in(Singleton.class);
bindPresenter(SignInPresenter.class, SignInView.class, SignInPanel.class, SignInPresenter.SignInProxy.class);
bindPresenter(RegisterPresenter.class, RegisterView.class, RegisterPanel.class,
RegisterPresenter.RegisterProxy.class);
@@ -133,7 +131,5 @@
bind(SitebarSignOutLink.class).in(Singleton.class);
bind(BeforeSignOut.class).in(Singleton.class);
bind(SiteTokenListeners.class).asEagerSingleton();
-
- bind(ChatClient.class).to(ChatClientDefault.class).in(Singleton.class);
}
}
Deleted: trunk/src/main/java/cc/kune/core/client/CoreGinjector.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreGinjector.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/CoreGinjector.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,79 +0,0 @@
-package cc.kune.core.client;
-
-import cc.kune.chat.client.ChatClient;
-import cc.kune.common.client.actions.gwtui.GwtGuiProvider;
-import cc.kune.common.client.actions.gxtui.GxtGuiProvider;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
-import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
-import cc.kune.core.client.auth.RegisterPresenter;
-import cc.kune.core.client.auth.SignInPresenter;
-import cc.kune.core.client.cookies.CookiesManager;
-import cc.kune.core.client.errors.ErrorHandler;
-import cc.kune.core.client.logs.EventsLogger;
-import cc.kune.core.client.notify.msgs.UserNotifierPresenter;
-import cc.kune.core.client.notify.spiner.SpinerPresenter;
-import cc.kune.core.client.sitebar.SitebarActionsPresenter;
-import cc.kune.core.client.sitebar.logo.SiteLogoPresenter;
-import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter;
-import cc.kune.core.client.state.SiteTokenListeners;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.ws.CorePresenter;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.inject.client.AsyncProvider;
-import com.google.gwt.inject.client.GinModules;
-import com.google.gwt.inject.client.Ginjector;
-import com.google.inject.Provider;
-import com.gwtplatform.mvp.client.proxy.ProxyFailureHandler;
-
-@GinModules({ CoreGinModule.class })
-public interface CoreGinjector extends Ginjector {
-
- /*
- * You have to add here all the GWTPresenters (as Provider or AsyncProvider)
- * see the GWTPlatform doc
- */
-
- ChatClient getChatClient();
-
- AsyncProvider<CookiesManager> getCookiesManager();
-
- Provider<CorePresenter> getCorePresenter();
-
- ErrorHandler getErrorHandler();
-
- EventBus getEventBus();
-
- EventsLogger getEventLogger();
-
- GlobalShortcutRegister getGlobalShortcutRegister();
-
- GuiProvider getGuiProvider();
-
- GwtGuiProvider getGwtGuiProvider();
-
- GxtGuiProvider getGxtGuiProvider();
-
- I18nTranslationService getI18n();
-
- ProxyFailureHandler getProxyFailureHandler();
-
- AsyncProvider<RegisterPresenter> getRegisterPresenter();
-
- AsyncProvider<SignInPresenter> getSignInPresenter();
-
- AsyncProvider<SitebarActionsPresenter> getSitebarActionsPresenter();
-
- AsyncProvider<SiteLogoPresenter> getSiteLogoPresenter();
-
- SiteTokenListeners getSiteTokenListeners();
-
- AsyncProvider<SpaceSelectorPresenter> getSpacesTabPresenter();
-
- AsyncProvider<SpinerPresenter> getSpinerPresenter();
-
- StateManager getStateManager();
-
- AsyncProvider<UserNotifierPresenter> getUserNotifierPresenter();
-}
\ No newline at end of file
Deleted: trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,62 +0,0 @@
-package cc.kune.core.client;
-
-import cc.kune.common.client.noti.NotifyUser;
-import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
-
-import com.google.gwt.core.client.EntryPoint;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.GWT.UncaughtExceptionHandler;
-import com.google.gwt.core.client.Scheduler;
-import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.gwtplatform.mvp.client.DelayedBindRegistry;
-
-/**
- * The Class KuneEntryPoint.
- */
-public class KuneEntryPoint implements EntryPoint {
-
- public final CoreGinjector ginjector = GWT.create(CoreGinjector.class);
-
- /*
- * (non-Javadoc)
- *
- * @see com.google.gwt.core.client.EntryPoint#onModuleLoad()
- */
- @Override
- public void onModuleLoad() {
- GWT.setUncaughtExceptionHandler(new UncaughtExceptionHandler() {
- @Override
- public void onUncaughtException(final Throwable e) {
- GWT.log("Error in 'onModuleLoad()' method", e);
- e.printStackTrace();
- }
- });
- Scheduler.get().scheduleDeferred(new ScheduledCommand() {
- @Override
- public void execute() {
- onModuleLoadCont();
- }
- });
- }
-
- /**
- * On module load cont.
- */
- public void onModuleLoadCont() {
- DelayedBindRegistry.bind(ginjector);
- AsyncCallbackSimple.init(ginjector.getErrorHandler());
- NotifyUser.init(ginjector.getEventBus());
- // ginjector.getPlaceManager().revealCurrentPlace();
- ginjector.getCorePresenter().get().forceReveal();
- ginjector.getStateManager();
- ginjector.getSiteTokenListeners();
- ginjector.getEventLogger();
- ginjector.getI18n();
- ginjector.getGxtGuiProvider();
- ginjector.getUserNotifierPresenter();
- ginjector.getSpinerPresenter();
- ginjector.getSiteLogoPresenter();
- ginjector.getSpacesTabPresenter();
- ginjector.getChatClient();
- }
-}
Modified: trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -33,7 +33,7 @@
public static final String COUNTRY_FIELD = "k-urf-country-f";
public static final String EMAIL_FIELD = "k-urf-email-f";
public static final String LANG_FIELD = "k-urf-lang-f";
- public static final String LONGNAME_FIELD = "k-urf-long_name-f";
+ // public static final String LONGNAME_FIELD = "k-urf-long_name-f";
public static final String NICK_FIELD = "k-urf-nick-f";
public static final String NOPERSONALHOMEPAGE_ID = "k-urf-nphp-id";
public static final String PASSWORD_FIELD = "k-urf-password-f";
@@ -43,7 +43,7 @@
public static final String WANTHOMEPAGE_FIELD = "k-urf-wphp-f";
private final TextField<String> emailRegField;
- private final TextField<String> longNameRegField;
+ // private final TextField<String> longNameRegField;
private final TextField<String> passwdRegField;
private final TextField<String> shortNameRegField;
@@ -65,17 +65,17 @@
shortNameRegField.setValidationDelay(1000);
add(shortNameRegField);
- longNameRegField = new TextField<String>();
- longNameRegField.setTabIndex(2);
- longNameRegField.setFieldLabel(i18n.t("Full Name"));
- longNameRegField.setName(LONGNAME_FIELD);
- longNameRegField.setWidth(DEF_FIELD_WIDTH);
- longNameRegField.setAllowBlank(false);
- longNameRegField.setMinLength(3);
- longNameRegField.setMaxLength(50);
- // longNameRegField.setValidationEvent(false);
- longNameRegField.setId(LONGNAME_FIELD);
- add(longNameRegField);
+ // longNameRegField = new TextField<String>();
+ // longNameRegField.setTabIndex(2);
+ // longNameRegField.setFieldLabel(i18n.t("Full Name"));
+ // longNameRegField.setName(LONGNAME_FIELD);
+ // longNameRegField.setWidth(DEF_FIELD_WIDTH);
+ // longNameRegField.setAllowBlank(false);
+ // longNameRegField.setMinLength(3);
+ // longNameRegField.setMaxLength(50);
+ // // longNameRegField.setValidationEvent(false);
+ // longNameRegField.setId(LONGNAME_FIELD);
+ // add(longNameRegField);
passwdRegField = new TextField<String>();
passwdRegField.setTabIndex(3);
@@ -107,9 +107,9 @@
return emailRegField.getValue();
}
- public String getLongName() {
- return longNameRegField.getValue();
- }
+ // public String getLongName() {
+ // return longNameRegField.getValue();
+ // }
public String getRegisterPassword() {
return passwdRegField.getValue();
Modified: trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -47,7 +47,7 @@
public RegisterPanel(final I18nTranslationService i18n, final Session session, final NotifyLevelImages images) {
super(REGISTER_DIALOG, i18n, i18n.t(CoreMessages.REGISTER_TITLE), true, true, true, 400, 420, "",
i18n.t(CoreMessages.REGISTER_TITLE), REGISTER_BUTTON_ID, i18n.tWithNT("Cancel", "used in button"),
- CANCEL_BUTTON_ID, images, ERRMSG, 11);
+ CANCEL_BUTTON_ID, images, ERRMSG, 5);
final VerticalPanel panel = new VerticalPanel();
// panel.setBorder(false);
registerForm = new RegisterForm(i18n, session);
@@ -62,10 +62,10 @@
return registerForm.getEmail();
}
- @Override
- public String getLongName() {
- return registerForm.getLongName();
- }
+ // @Override
+ // public String getLongName() {
+ // return registerForm.getLongName();
+ // }
@Override
public String getRegisterPassword() {
Modified: trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -26,6 +26,7 @@
import cc.kune.core.client.errors.EmailAddressInUseException;
import cc.kune.core.client.errors.GroupNameInUseException;
import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.logs.Log;
import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.client.rpcservices.UserServiceAsync;
import cc.kune.core.client.state.Session;
@@ -64,8 +65,8 @@
public RegisterPresenter(final EventBus eventBus, final RegisterView view, final RegisterProxy proxy,
final Session session, final StateManager stateManager, final I18nUITranslationService i18n,
final Provider<UserServiceAsync> userServiceProvider, final Provider<SignIn> signInProvider,
- final CookiesManager cookiesManager) {
- super(eventBus, view, proxy, session, stateManager, i18n, cookiesManager);
+ final CookiesManager cookiesManager, final UserPassAutocompleteManager autocomplete) {
+ super(eventBus, view, proxy, session, stateManager, i18n, cookiesManager, autocomplete);
this.userServiceProvider = userServiceProvider;
this.signInProvider = signInProvider;
}
@@ -111,6 +112,7 @@
@Override
public void onClose(final CloseEvent<PopupPanel> event) {
+ Log.debug("Closing register presenter");
RegisterPresenter.this.onClose();
}
});
@@ -131,9 +133,11 @@
final boolean wantHomepage = true;
- final UserDTO user = new UserDTO(getView().getLongName(), getView().getShortName(),
- getView().getRegisterPassword(), getView().getEmail(), language, country, timezone, null, true,
- SubscriptionMode.manual, "blue");
+ final String shortName = getView().getShortName();
+ final String password = getView().getRegisterPassword();
+ final UserDTO user = new UserDTO("", shortName, password, getView().getEmail(), language, country,
+ timezone, null, true, SubscriptionMode.manual, "blue");
+ super.saveAutocompleteLoginData(shortName, password);
final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
@Override
public void onFailure(final Throwable caught) {
Modified: trunk/src/main/java/cc/kune/core/client/auth/RegisterView.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/RegisterView.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/auth/RegisterView.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -23,7 +23,8 @@
String getEmail();
- String getLongName();
+ //
+ // String getLongName();
String getRegisterPassword();
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -34,6 +34,7 @@
public abstract class SignInAbstractPresenter<V extends View, Proxy_ extends Proxy<?>> extends
Presenter<View, Proxy<?>> {
+ protected final UserPassAutocompleteManager autocomplete;
protected final CookiesManager cookiesManager;
protected final I18nUITranslationService i18n;
protected final Session session;
@@ -41,12 +42,13 @@
public SignInAbstractPresenter(final EventBus eventBus, final View view, final Proxy<?> proxy,
final Session session, final StateManager stateManager, final I18nUITranslationService i18n,
- final CookiesManager cookiesManager) {
+ final CookiesManager cookiesManager, final UserPassAutocompleteManager autocomplete) {
super(eventBus, view, proxy);
this.session = session;
this.stateManager = stateManager;
this.i18n = i18n;
this.cookiesManager = cookiesManager;
+ this.autocomplete = autocomplete;
}
@Override
@@ -85,4 +87,10 @@
stateManager.restorePreviousToken();
}
+ protected void saveAutocompleteLoginData(final String nickOrEmail, final String password) {
+ autocomplete.setNickOrEmail(nickOrEmail);
+ autocomplete.setPassword(password);
+ autocomplete.clickFormLogin();
+ }
+
}
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -58,7 +58,7 @@
loginPassField.setValidationDelay(1000);
loginPassField.setId(PASSWORD_FIELD);
loginPassField.setTabIndex(101);
- loginPassField.addListener(Events.Change, new Listener<FieldEvent>() {
+ loginPassField.addListener(Events.OnKeyPress, new Listener<FieldEvent>() {
@Override
public void handleEvent(final FieldEvent fe) {
if (fe.getEvent().getKeyCode() == 13) {
@@ -74,6 +74,10 @@
loginNickOrEmailField.focus();
}
+ public void focusOnPassword() {
+ loginPassField.focus();
+ }
+
public String getLoginPassword() {
return loginPassField.getValue();
}
@@ -85,4 +89,12 @@
public Field<String> getNickOrEmailField() {
return loginNickOrEmailField;
}
+
+ public void setLoginPassword(final String password) {
+ loginPassField.setValue(password);
+ }
+
+ public void setNickOrEmail(final String nickOrEmail) {
+ loginNickOrEmailField.setValue(nickOrEmail);
+ }
}
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -53,7 +53,6 @@
// }
final VerticalPanel panel = new VerticalPanel();
- // panel.setBorder(false);
signInForm = new SignInForm(i18n);
signInForm.setWidth(370);
panel.add(signInForm.getFormPanel());
@@ -84,6 +83,11 @@
}
@Override
+ public void focusOnPassword() {
+ signInForm.focusOnPassword();
+ }
+
+ @Override
public HasClickHandlers getAccountRegister() {
return registerLabel;
}
@@ -113,6 +117,16 @@
}
@Override
+ public void setLoginPassword(final String password) {
+ signInForm.setLoginPassword(password);
+ }
+
+ @Override
+ public void setNickOrEmail(final String nickOrEmail) {
+ signInForm.setNickOrEmail(nickOrEmail);
+ }
+
+ @Override
public void show() {
super.show();
KuneUiUtils.focusOnField(getNickname());
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -20,6 +20,9 @@
package cc.kune.core.client.auth;
import cc.kune.common.client.noti.NotifyLevel;
+import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.client.utils.TimerWrapper;
+import cc.kune.common.client.utils.TimerWrapper.Executer;
import cc.kune.core.client.cookies.CookiesManager;
import cc.kune.core.client.errors.UserAuthException;
import cc.kune.core.client.i18n.I18nUITranslationService;
@@ -52,20 +55,22 @@
@ProxyCodeSplit
public interface SignInProxy extends Proxy<SignInPresenter> {
}
-
private final EventBus eventBus;
private final Provider<Register> registerProvider;
+ private final TimerWrapper timer;
private final UserServiceAsync userService;
@Inject
public SignInPresenter(final EventBus eventBus, final SignInView view, final SignInProxy proxy,
final Session session, final StateManager stateManager, final I18nUITranslationService i18n,
final UserServiceAsync userService, final Provider<Register> registerProvider,
- final CookiesManager cookiesManager) {
- super(eventBus, view, proxy, session, stateManager, i18n, cookiesManager);
+ final CookiesManager cookiesManager, final UserPassAutocompleteManager autocomplete,
+ final TimerWrapper timeWrapper) {
+ super(eventBus, view, proxy, session, stateManager, i18n, cookiesManager, autocomplete);
this.eventBus = eventBus;
this.userService = userService;
this.registerProvider = registerProvider;
+ this.timer = timeWrapper;
}
@Override
@@ -79,6 +84,19 @@
// getView().center();
eventBus.fireEvent(new ProgressHideEvent());
getView().focusOnNickname();
+ timer.configure(new Executer() {
+ @Override
+ public void execute() {
+ final String savedLogin = autocomplete.getNickOrEmail();
+ final String savedPasswd = autocomplete.getPassword();
+ if (TextUtils.notEmpty(savedLogin)) {
+ getView().setNickOrEmail(savedLogin);
+ getView().setLoginPassword(savedPasswd);
+ getView().focusOnPassword();
+ }
+ }
+ });
+ timer.schedule(500);
}
}
@@ -114,6 +132,7 @@
@Override
public void onClose(final CloseEvent<PopupPanel> event) {
+ Log.debug("Closing register presenter");
SignInPresenter.this.onClose();
}
});
@@ -137,7 +156,7 @@
final UserDTO user = new UserDTO();
user.setShortName(nickOrEmail);
user.setPassword(passwd);
-
+ saveAutocompleteLoginData(nickOrEmail, passwd);
final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
@Override
public void onFailure(final Throwable caught) {
@@ -168,4 +187,5 @@
protected void revealInParent() {
RevealRootContentEvent.fire(this, this);
}
+
}
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInView.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInView.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInView.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -25,6 +25,8 @@
void focusOnNickname();
+ void focusOnPassword();
+
HasClickHandlers getAccountRegister();
String getLoginPassword();
@@ -33,6 +35,10 @@
boolean isSignInFormValid();
+ void setLoginPassword(String password);
+
+ void setNickOrEmail(String nickOrEmail);
+
void validate();
}
Added: trunk/src/main/java/cc/kune/core/client/auth/UserPassAutocompleteManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/UserPassAutocompleteManager.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/UserPassAutocompleteManager.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,15 @@
+package cc.kune.core.client.auth;
+
+public interface UserPassAutocompleteManager {
+
+ void clickFormLogin();
+
+ String getNickOrEmail();
+
+ String getPassword();
+
+ void setNickOrEmail(String username);
+
+ void setPassword(String password);
+
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/auth/UserPassAutocompleteManager.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/core/client/auth/UserPassAutocompleteManagerImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/UserPassAutocompleteManagerImpl.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/UserPassAutocompleteManagerImpl.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,43 @@
+package cc.kune.core.client.auth;
+
+import com.google.gwt.user.client.DOM;
+
+/**
+ * Implementation <a href=
+ * "http://stackoverflow.com/questions/1245174/is-it-possible-to-implement-cros…"
+ * >based in this</a>
+ */
+public class UserPassAutocompleteManagerImpl implements UserPassAutocompleteManager {
+
+ private static final String VALUE = "value";
+
+ public static native String getElementValue(String domId) /*-{
+ return $doc.getElementById(domId).value;
+ }-*/;
+
+ @Override
+ public native void clickFormLogin() /*-{
+ $doc.getElementById("login").click();
+ }-*/;
+
+ @Override
+ public String getNickOrEmail() {
+ return getElementValue("username");
+ }
+
+ @Override
+ public String getPassword() {
+ return getElementValue("password");
+ }
+
+ @Override
+ public void setNickOrEmail(final String username) {
+ DOM.getElementById("username").setAttribute(VALUE, username);
+ }
+
+ @Override
+ public void setPassword(final String password) {
+ DOM.getElementById("password").setAttribute(VALUE, password);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/auth/UserPassAutocompleteManagerImpl.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/core/client/logs/EventBusWithLogging.java (from rev 1225, trunk/src/main/java/cc/kune/core/client/logs/EventsLogger.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/logs/EventBusWithLogging.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/logs/EventBusWithLogging.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,12 @@
+package cc.kune.core.client.logs;
+
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.SimpleEventBus;
+
+public class EventBusWithLogging extends SimpleEventBus {
+ @Override
+ public void fireEvent(final GwtEvent<?> event) {
+ Log.debug("Kune " + event.toDebugString());
+ super.fireEvent(event);
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/logs/EventBusWithLogging.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/core/client/logs/EventsLogger.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/logs/EventsLogger.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/logs/EventsLogger.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,44 +0,0 @@
-package cc.kune.core.client.logs;
-
-import cc.kune.core.client.i18n.I18nReadyEvent;
-import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignOutEvent;
-
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.shared.EventBus;
-import com.google.inject.Inject;
-
-public class EventsLogger {
-
- @Inject
- public EventsLogger(final EventBus eventBus) {
- eventBus.addHandler(AppStartEvent.getType(), new AppStartEvent.AppStartHandler() {
- @Override
- public void onAppStart(final AppStartEvent event) {
- GWT.log("App Started");
- }
- });
- eventBus.addHandler(I18nReadyEvent.getType(), new I18nReadyEvent.I18nReadyHandler() {
-
- @Override
- public void onI18nReady(final I18nReadyEvent event) {
- GWT.log("I18n Ready");
- }
- });
- eventBus.addHandler(UserSignOutEvent.getType(), new UserSignOutEvent.UserSignOutHandler() {
-
- @Override
- public void onUserSignOut(final UserSignOutEvent event) {
- GWT.log("User signed out");
- }
- });
- eventBus.addHandler(UserSignInEvent.getType(), new UserSignInEvent.UserSignInHandler() {
-
- @Override
- public void onUserSignIn(final UserSignInEvent event) {
- GWT.log("User signed in");
- }
- });
- }
-}
Modified: trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierViewImpl.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierViewImpl.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -7,6 +7,7 @@
import cc.kune.msgs.client.UserMessagesPresenter;
import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import com.gwtplatform.mvp.client.PopupViewImpl;
@@ -16,7 +17,7 @@
private final PopupBottomPanel popup;
@Inject
- public UserNotifierViewImpl(EventBus eventBus, UserMessagesPresenter msgs, UserMessagesPanel panel) {
+ public UserNotifierViewImpl(final EventBus eventBus, final UserMessagesPresenter msgs, final UserMessagesPanel panel) {
super(eventBus);
this.msgs = msgs;
msgs.init(panel);
@@ -32,7 +33,7 @@
}
@Override
- public void notify(UserNotifyEvent event) {
+ public void notify(final UserNotifyEvent event) {
msgs.add(event.getLevel(), event.getTitle(), event.getMessage(), event.getCloseable(), new CloseCallback() {
@Override
public void onClose() {
@@ -40,6 +41,7 @@
}
});
popup.setCenterPosition();
+ DOM.setStyleAttribute(popup.getElement(), "zIndex", "100000");
}
}
Modified: trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifyEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifyEvent.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifyEvent.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -6,7 +6,6 @@
import com.google.gwt.event.shared.GwtEvent;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.event.shared.HasHandlers;
-import com.gwtplatform.mvp.client.HasEventBus;
public class UserNotifyEvent extends GwtEvent<UserNotifyEvent.UserNotifyHandler> {
@@ -20,20 +19,22 @@
private static final Type<UserNotifyHandler> TYPE = new Type<UserNotifyHandler>();
- public static void fire(HasEventBus source, NotifyLevel level, java.lang.String message) {
+ public static void fire(final HasHandlers source, final NotifyLevel level, final java.lang.String message) {
source.fireEvent(new UserNotifyEvent(level, "", message));
}
- public static void fire(HasEventBus source, NotifyLevel level, java.lang.String message, Boolean closeable) {
+ public static void fire(final HasHandlers source, final NotifyLevel level, final java.lang.String message,
+ final Boolean closeable) {
source.fireEvent(new UserNotifyEvent(level, "", message, closeable));
}
- public static void fire(HasEventBus source, NotifyLevel level, java.lang.String title, java.lang.String message) {
+ public static void fire(final HasHandlers source, final NotifyLevel level, final java.lang.String title,
+ final java.lang.String message) {
source.fireEvent(new UserNotifyEvent(level, title, message));
}
- public static void fire(HasEventBus source, NotifyLevel level, java.lang.String title, java.lang.String message,
- Boolean closeable) {
+ public static void fire(final HasHandlers source, final NotifyLevel level, final java.lang.String title,
+ final java.lang.String message, final Boolean closeable) {
source.fireEvent(new UserNotifyEvent(level, title, message, closeable));
}
@@ -46,31 +47,32 @@
private final java.lang.String message;
private final java.lang.String title;
- public UserNotifyEvent(NotifyLevel level, java.lang.String message) {
+ public UserNotifyEvent(final NotifyLevel level, final java.lang.String message) {
this(level, "", message, false);
}
- public UserNotifyEvent(NotifyLevel level, java.lang.String message, Boolean closeable) {
+ public UserNotifyEvent(final NotifyLevel level, final java.lang.String message, final Boolean closeable) {
this(level, "", message, closeable);
}
- public UserNotifyEvent(NotifyLevel level, java.lang.String title, java.lang.String message) {
+ public UserNotifyEvent(final NotifyLevel level, final java.lang.String title, final java.lang.String message) {
this(level, title, message, false);
}
- public UserNotifyEvent(NotifyLevel level, java.lang.String title, java.lang.String message, Boolean closeable) {
+ public UserNotifyEvent(final NotifyLevel level, final java.lang.String title, final java.lang.String message,
+ final Boolean closeable) {
this.level = level;
this.title = title;
this.message = message;
this.closeable = closeable;
}
- public UserNotifyEvent(String message) {
+ public UserNotifyEvent(final String message) {
this(NotifyLevel.info, message);
}
@Override
- protected void dispatch(UserNotifyHandler handler) {
+ protected void dispatch(final UserNotifyHandler handler) {
handler.onUserNotify(this);
}
Modified: trunk/src/main/java/cc/kune/core/client/resources/CoreResources.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/resources/CoreResources.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/resources/CoreResources.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -54,6 +54,9 @@
@Source("arrow-up-green.png")
ImageResource arrowUpGreen();
+ @Source("browser-32.png")
+ ImageResource browser32();
+
@Source("bullet_add.png")
ImageResource bulletAdd();
@@ -234,6 +237,9 @@
@Source("cancel.png")
ImageResource cancel();
+ @Source("cancel-32.png")
+ ImageResource cancel32();
+
@Source("clear.png")
ImageResource clear();
@@ -279,6 +285,9 @@
@Source("important.png")
ImageResource important();
+ @Source("important-32.png")
+ ImageResource important32();
+
@Source("info.png")
ImageResource info();
Added: trunk/src/main/java/cc/kune/core/client/resources/browser-32.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/browser-32.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/cancel-32.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/cancel-32.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/important-32.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/important-32.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -4,15 +4,17 @@
import cc.kune.common.client.actions.Action;
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.common.client.actions.ui.IsActionExtensible;
-import cc.kune.common.client.actions.ui.descrip.AbstractGuiActionDescrip;
-import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
+import cc.kune.common.client.actions.ui.descrip.MenuSeparatorDescriptor;
import cc.kune.common.client.actions.ui.descrip.ToolbarDescriptor;
import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor;
import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor.Type;
+import cc.kune.common.client.ui.KuneWindowUtils;
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.notify.msgs.UserNotifyEvent;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.gwt.event.shared.EventBus;
@@ -26,20 +28,26 @@
import com.gwtplatform.mvp.client.proxy.RevealRootContentEvent;
public class SitebarActionsPresenter extends
- Presenter<SitebarActionsPresenter.SitebarActionsView, SitebarActionsPresenter.SitebarActionsProxy> implements
- IsActionExtensible {
+ Presenter<SitebarActionsPresenter.SitebarActionsView, SitebarActionsPresenter.SitebarActionsProxy> {
@ProxyCodeSplit
public interface SitebarActionsProxy extends Proxy<SitebarActionsPresenter> {
}
- public interface SitebarActionsView extends View, IsActionExtensible {
+ public interface SitebarActionsView extends View {
+
+ IsActionExtensible getLeftBar();
+
+ IsActionExtensible getRightBar();
}
+ public static final MenuDescriptor OPTIONS_MENU = new MenuDescriptor();
public static final ToolbarDescriptor TOOLBAR = new ToolbarDescriptor();
private final I18nTranslationService i18n;
+ private final IconResources icons;
private final Provider<SitebarNewGroupLink> newGroupLink;
- private MenuDescriptor optionsMenu;
+
+ private final CoreResources res;
private final Provider<SitebarSignInLink> signInLink;
private final Provider<SitebarSignOutLink> signOutLink;
@@ -47,36 +55,30 @@
public SitebarActionsPresenter(final EventBus eventBus, final SitebarActionsView view,
final SitebarActionsProxy proxy, final I18nTranslationService i18n,
final Provider<SitebarNewGroupLink> newGroupLink, final Provider<SitebarSignOutLink> signOutLink,
- final Provider<SitebarSignInLink> signInLink) {
+ final Provider<SitebarSignInLink> signInLink, final CoreResources res, final IconResources icons) {
super(eventBus, view, proxy);
this.i18n = i18n;
this.newGroupLink = newGroupLink;
this.signOutLink = signOutLink;
this.signInLink = signInLink;
+ this.res = res;
+ this.icons = icons;
}
- @Override
- public void addAction(final AbstractGuiActionDescrip action) {
- getView().addAction(action);
+ public IsActionExtensible getLeftToolbar() {
+ return getView().getLeftBar();
}
- @Override
- public void addActions(final AbstractGuiActionDescrip... actions) {
- getView().addActions(actions);
-
+ public MenuDescriptor getOptionsMenu() {
+ return OPTIONS_MENU;
}
- @Override
- public void addActions(final GuiActionDescCollection actions) {
- getView().addActions(actions);
+ public IsActionExtensible getRightToolbar() {
+ return getView().getRightBar();
}
- public MenuDescriptor getOptionsMenu() {
- return optionsMenu;
- }
-
public void init() {
- optionsMenu = new MenuDescriptor(i18n.t("Options"));
+ OPTIONS_MENU.putValue(Action.NAME, i18n.t("Options"));
final AbstractExtendedAction action = new AbstractExtendedAction() {
@Override
public void actionPerformed(final ActionEvent event) {
@@ -84,22 +86,54 @@
}
};
action.putValue(Action.NAME, "Test");
- final MenuItemDescriptor mItem = new MenuItemDescriptor(optionsMenu, action);
- optionsMenu.setStyles("k-no-backimage, k-btn-sitebar");
+ final MenuItemDescriptor testMenuItem = new MenuItemDescriptor(OPTIONS_MENU, action);
+ OPTIONS_MENU.setStyles("k-no-backimage, k-btn-sitebar");
final ToolbarSeparatorDescriptor separator = new ToolbarSeparatorDescriptor(Type.separator,
SitebarActionsPresenter.TOOLBAR);
+ final ToolbarSeparatorDescriptor separator2 = new ToolbarSeparatorDescriptor(Type.separator,
+ SitebarActionsPresenter.TOOLBAR);
final ToolbarSeparatorDescriptor spacer = new ToolbarSeparatorDescriptor(Type.spacer,
SitebarActionsPresenter.TOOLBAR);
- addAction(TOOLBAR);
- addAction(signInLink.get());
- addAction(signOutLink.get());
- addAction(spacer);
- addAction(separator);
- addAction(newGroupLink.get());
- addAction(spacer);
- addAction(separator);
- addAction(optionsMenu);
- addAction(mItem);
+ final IsActionExtensible right = getView().getRightBar();
+
+ final MenuSeparatorDescriptor sep = new MenuSeparatorDescriptor(OPTIONS_MENU);
+ final AbstractExtendedAction bugsAction = new AbstractExtendedAction() {
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ KuneWindowUtils.open("http://kune.ourproject.org/issues/");
+ }
+ };
+ bugsAction.putValue(Action.NAME, i18n.t("Report Kune issues/problems"));
+ bugsAction.putValue(Action.SMALL_ICON, icons.bug());
+ final MenuItemDescriptor bugs = new MenuItemDescriptor(OPTIONS_MENU, bugsAction);
+
+ // final KeyStroke shortcut = Shortcut.getShortcut(true, true, false,
+ // false, Character.valueOf('K'));
+ final AbstractExtendedAction aboutAction = new AbstractExtendedAction() {
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ // view.showAboutDialog();
+ }
+ };
+
+ aboutAction.putValue(Action.NAME, i18n.t("About kune"));
+ aboutAction.putValue(Action.SMALL_ICON, res.kuneIcon16());
+ // aboutAction.setShortcut(shortcut);
+ // shortcutReg.put(shortcut, aboutAction);
+ right.addAction(TOOLBAR);
+ // addAction(separator);
+ right.addAction(OPTIONS_MENU);
+ right.addAction(signInLink.get());
+ right.addAction(signOutLink.get());
+ // addAction(spacer);
+ // addAction(separator2);
+ right.addAction(newGroupLink.get());
+ // addAction(spacer);
+ right.addAction(testMenuItem);
+ right.addAction(sep);
+ right.addAction(bugs);
+ right.addAction(new MenuItemDescriptor(OPTIONS_MENU, aboutAction));
+
}
@ProxyEvent
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsViewImpl.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsViewImpl.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,10 +1,9 @@
package cc.kune.core.client.sitebar;
import cc.kune.common.client.actions.ui.ActionSimplePanel;
-import cc.kune.common.client.actions.ui.descrip.AbstractGuiActionDescrip;
-import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
+import cc.kune.common.client.actions.ui.IsActionExtensible;
import cc.kune.core.client.sitebar.SitebarActionsPresenter.SitebarActionsView;
-import cc.kune.wspace.client.WsArmor;
+import cc.kune.gspace.client.WsArmor;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
@@ -12,40 +11,35 @@
public class SitebarActionsViewImpl extends ViewImpl implements SitebarActionsView {
- private final ActionSimplePanel panel;
+ private final ActionSimplePanel toolbarLeft;
+ private final ActionSimplePanel toolbarRight;
@Inject
- public SitebarActionsViewImpl(final WsArmor armor, final ActionSimplePanel panel) {
- this.panel = panel;
- panel.addStyleName("k-sitebar");
- panel.addStyleName("k-floatright");
- armor.getSitebar().add(panel);
- // armor.getDocContainer().add(panel);
- // panel.setWidth("100%");
+ public SitebarActionsViewImpl(final WsArmor armor, final ActionSimplePanel toolbarRight,
+ final ActionSimplePanel toolbarLeft) {
+ this.toolbarRight = toolbarRight;
+ this.toolbarLeft = toolbarLeft;
+ toolbarRight.addStyleName("k-sitebar");
+ toolbarRight.addStyleName("k-floatright");
+ toolbarLeft.addStyleName("k-sitebar");
+ toolbarLeft.addStyleName("k-floatleft");
+ armor.getSitebar().add(toolbarLeft);
+ armor.getSitebar().add(toolbarRight);
}
@Override
- public void addAction(final AbstractGuiActionDescrip action) {
- panel.addAction(action);
+ public Widget asWidget() {
+ return toolbarRight;
}
@Override
- public void addActions(final AbstractGuiActionDescrip... actions) {
- for (final AbstractGuiActionDescrip action : actions) {
- this.addAction(action);
- }
+ public IsActionExtensible getLeftBar() {
+ return toolbarLeft;
}
@Override
- public void addActions(final GuiActionDescCollection actions) {
- for (final AbstractGuiActionDescrip action : actions) {
- this.addAction(action);
- }
+ public IsActionExtensible getRightBar() {
+ return toolbarRight;
}
- @Override
- public Widget asWidget() {
- return panel;
- }
-
}
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoViewImpl.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoViewImpl.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,7 +1,7 @@
package cc.kune.core.client.sitebar.logo;
import cc.kune.core.client.sitebar.logo.SiteLogoPresenter.SiteLogoView;
-import cc.kune.wspace.client.WsArmor;
+import cc.kune.gspace.client.WsArmor;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -5,7 +5,7 @@
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.wspace.client.WsArmor;
+import cc.kune.gspace.client.WsArmor;
import com.google.gwt.event.shared.EventBus;
import com.google.inject.Inject;
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -2,7 +2,7 @@
import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter.SpaceSelectorView;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.wspace.client.WsArmor;
+import cc.kune.gspace.client.WsArmor;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.ui.xml 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.ui.xml 2011-01-31 18:51:35 UTC (rev 1228)
@@ -2,27 +2,27 @@
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:with field='img'
- type='cc.kune.wspace.client.resources.WsArmorResources' />
+ type='cc.kune.gspace.client.resources.WsArmorResources' />
<g:HorizontalPanel ui:field="panel" addStyleNames="k-space-sel k-10corners k-floatleft k-pointer" >
<g:ToggleButton ui:field="homeButton" styleName="k-space-sel-btn">
<g:upFace image='{img.homeSpaceDisabled}' />
<g:downFace image='{img.homeSpaceEnabled}' />
- <g:upHoveringFace image='{img.homeSpaceEnabled}' />
+<!-- <g:upHoveringFace image='{img.homeSpaceEnabled}' />-->
</g:ToggleButton>
<g:ToggleButton ui:field="userButton" styleName="k-space-sel-btn">
<g:upFace image='{img.userSpaceDisabled}' />
<g:downFace image='{img.userSpaceEnabled}' />
- <g:upHoveringFace image='{img.userSpaceEnabled}' />
+<!-- <g:upHoveringFace image='{img.userSpaceEnabled}' />-->
</g:ToggleButton>
<g:ToggleButton ui:field="groupButton" styleName="k-space-sel-btn">
<g:upFace image='{img.groupSpaceDisabled}' />
<g:downFace image='{img.groupSpaceEnabled}' />
- <g:upHoveringFace image='{img.groupSpaceEnabled}' />
+<!-- <g:upHoveringFace image='{img.groupSpaceEnabled}' />-->
</g:ToggleButton>
<g:ToggleButton ui:field="publicButton" styleName="k-space-sel-btn">
<g:upFace image='{img.publicSpaceDisabled}' />
<g:downFace image='{img.publicSpaceEnabled}' />
- <g:upHoveringFace image='{img.publicSpaceEnabled}' />
+<!-- <g:upHoveringFace image='{img.publicSpaceEnabled}' />-->
</g:ToggleButton>
</g:HorizontalPanel>
</ui:UiBinder>
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,5 +1,6 @@
/*
*
+
* Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
* This file is part of kune.
*
@@ -120,6 +121,7 @@
@Override
public void gotoToken(final String token) {
+ Log.debug("StateManager: history goto-string-token newItem (" + token + ")");
gotoToken(new StateToken(token));
}
Modified: trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialog.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialog.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -86,10 +86,18 @@
firstBtn.ensureDebugId(id);
}
+ public void setFirstBtnTabIndex(final int index) {
+ firstBtn.setTabIndex(index);
+ }
+
public void setSecondBtnId(final String id) {
secondBtn.ensureDebugId(id);
}
+ public void setSecondBtnTabIndex(final int index) {
+ secondBtn.setTabIndex(index);
+ }
+
public void setTitleIcon(final String icon) {
if (TextUtils.notEmpty(icon)) {
title.setIcon(icon);
Modified: trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -26,6 +26,8 @@
super.getSecondBtnText().setText(cancelButtonTitle);
super.setFirstBtnId(firstButtonId);
super.setSecondBtnId(cancelButtonId);
+ super.setFirstBtnTabIndex(tabIndexStart);
+ super.setSecondBtnTabIndex(tabIndexStart + 1);
}
public HasCloseHandlers<PopupPanel> getClose() {
Deleted: trunk/src/main/java/cc/kune/core/client/ws/CorePlaceManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ws/CorePlaceManager.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/ws/CorePlaceManager.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,20 +0,0 @@
-package cc.kune.core.client.ws;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.inject.Inject;
-import com.gwtplatform.mvp.client.proxy.PlaceManagerImpl;
-import com.gwtplatform.mvp.client.proxy.TokenFormatter;
-
-@Deprecated
-public class CorePlaceManager extends PlaceManagerImpl {
-
- @Inject
- public CorePlaceManager(final EventBus eventBus, final TokenFormatter tokenFormatter) {
- super(eventBus, tokenFormatter);
- }
-
- @Override
- public void revealDefaultPlace() {
- // revealPlace(new PlaceRequest(CorePresenter.HOME_TOKEN));
- }
-}
Modified: trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -2,8 +2,8 @@
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.state.StateManagerDefault;
-import cc.kune.wspace.client.WsArmorImpl;
-import cc.kune.wspace.client.resources.WsArmorResources;
+import cc.kune.gspace.client.WsArmorImpl;
+import cc.kune.gspace.client.resources.WsArmorResources;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.History;
Modified: trunk/src/main/java/cc/kune/core/public/ws.css
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.css 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/public/ws.css 2011-01-31 18:51:35 UTC (rev 1228)
@@ -368,260 +368,297 @@
}
.x-btn button {
- font: 18px/27px 'Ubuntu', arial;
+ font: 18px/27px 'Ubuntu', arial;
}
-.k-btn-sitebar button {
- font: 13px 'Ubuntu', arial;
- color:#B3B3B3;
- cursor:pointer;
- text-decoration:underline;
- white-space:nowrap;
- margin-top: -5px;
+.k-btn-sitebar button {
+ font: 13px 'Ubuntu', arial;
+ color: #B3B3B3;
+ cursor: pointer;
+ text-decoration: underline;
+ white-space: nowrap;
+ margin-top: -5px;
}
-.k-sitebar {
- /* margin-top: -30px; */
+.k-sitebar { /* margin-top: -30px; */
+
}
.k-link {
- text-decoration: underline;
- color: green;
- cursor: pointer;
+ text-decoration: underline;
+ color: green;
+ cursor: pointer;
}
-
/* Margins */
-
.kune-Margin-40-trbl {
- margin: 40px;
+ margin: 40px;
}
.kune-Margin-40-lr {
- margin-left: 40px;
- margin-right: 40px;
+ margin-left: 40px;
+ margin-right: 40px;
}
.kune-Margin-40-tl {
- margin-top: 40px;
- margin-left: 40px;
+ margin-top: 40px;
+ margin-left: 40px;
}
.kune-Margin-40-tb {
- margin-top: 40px;
- margin-bottom: 40px;
+ margin-top: 40px;
+ margin-bottom: 40px;
}
.kune-Margin-40-t {
- margin-top: 40px;
+ margin-top: 40px;
}
.kune-Margin-40-r {
- margin-right: 40px;
+ margin-right: 40px;
}
.kune-Margin-40-l {
- margin-left: 40px;
+ margin-left: 40px;
}
.kune-Margin-20-trbl {
- margin: 20px;
+ margin: 20px;
}
.kune-Margin-20-lr {
- margin-left: 20px;
- margin-right: 20px;
+ margin-left: 20px;
+ margin-right: 20px;
}
.kune-Margin-20-tl {
- margin-top: 20px;
- margin-left: 20px;
+ margin-top: 20px;
+ margin-left: 20px;
}
.kune-Margin-20-tb {
- margin-top: 20px;
- margin-bottom: 20px;
+ margin-top: 20px;
+ margin-bottom: 20px;
}
.kune-Margin-20-t {
- margin-top: 20px;
+ margin-top: 20px;
}
.kune-Margin-20-r {
- margin-right: 20px;
+ margin-right: 20px;
}
.kune-Margin-20-l {
- margin-left: 20px;
+ margin-left: 20px;
}
.kune-Margin-Large-trbl {
- margin: 10px;
+ margin: 10px;
}
.kune-Margin-Large-lr {
- margin-left: 10px;
- margin-right: 10px;
+ margin-left: 10px;
+ margin-right: 10px;
}
.kune-Margin-Large-tl {
- margin-top: 10px;
- margin-left: 10px;
+ margin-top: 10px;
+ margin-left: 10px;
}
.kune-Margin-Large-tb {
- margin-top: 10px;
- margin-bottom: 10px;
+ margin-top: 10px;
+ margin-bottom: 10px;
}
.kune-Margin-Large-t {
- margin-top: 10px;
+ margin-top: 10px;
}
.kune-Margin-Large-r {
- margin-right: 10px;
+ margin-right: 10px;
}
.kune-Margin-Large-l {
- margin-left: 10px;
+ margin-left: 10px;
}
.kune-Margin-7-trbl {
- margin: 7px;
+ margin: 7px;
}
.kune-Margin-7-lr {
- margin-left: 7px;
- margin-right: 7px;
+ margin-left: 7px;
+ margin-right: 7px;
}
.kune-Margin-7-tl {
- margin-top: 7px;
- margin-left: 7px;
+ margin-top: 7px;
+ margin-left: 7px;
}
.kune-Margin-7-tb {
- margin-top: 7px;
- margin-bottom: 7px;
+ margin-top: 7px;
+ margin-bottom: 7px;
}
.kune-Margin-7-t {
- margin-top: 7px;
+ margin-top: 7px;
}
.kune-Margin-7-r {
- margin-right: 7px;
+ margin-right: 7px;
}
.kune-Margin-7-b {
- margin-bottom: 7px;
+ margin-bottom: 7px;
}
.kune-Margin-7-l {
- margin-left: 7px;
+ margin-left: 7px;
}
.kune-Margin-Medium-trbl {
- margin: 5px;
+ margin: 5px;
}
.kune-Margin-Medium-lr {
- margin-left: 5px;
- margin-right: 5px;
+ margin-left: 5px;
+ margin-right: 5px;
}
.kune-Margin-Medium-tl {
- margin-top: 5px;
- margin-left: 5px;
+ margin-top: 5px;
+ margin-left: 5px;
}
.kune-Margin-Medium-tb {
- margin-top: 5px;
- margin-bottom: 5px;
+ margin-top: 5px;
+ margin-bottom: 5px;
}
.kune-Margin-Medium-t {
- margin-top: 5px;
+ margin-top: 5px;
}
.kune-Margin-Medium-r {
- margin-right: 5px;
+ margin-right: 5px;
}
.kune-Margin-Medium-b {
- margin-bottom: 5px;
+ margin-bottom: 5px;
}
.kune-Margin-Medium-l {
- margin-left: 5px;
+ margin-left: 5px;
}
.kune-Margin-Small-trbl {
- margin: 3px;
+ margin: 3px;
}
.kune-Margin-Small-lr {
- margin-left: 3px;
- margin-right: 3px;
+ margin-left: 3px;
+ margin-right: 3px;
}
.kune-Margin-Small-tl {
- margin-top: 3px;
- margin-left: 3px;
+ margin-top: 3px;
+ margin-left: 3px;
}
.kune-Margin-Small-tb {
- margin-top: 3px;
- margin-bottom: 3px;
+ margin-top: 3px;
+ margin-bottom: 3px;
}
.kune-Margin-Small-t {
- margin-top: 3px;
+ margin-top: 3px;
}
.kune-Margin-Small-l {
- margin-left: 3px;
+ margin-left: 3px;
}
.kune-Margin-Small-r {
- margin-right: 3px;
+ margin-right: 3px;
}
.kune-Margin-Small-b {
- margin-bottom: 3px;
+ margin-bottom: 3px;
}
.kune-Margin-Mini-trbl {
- margin: 1px;
+ margin: 1px;
}
.kune-Margin-Mini-lr {
- margin-left: 1px;
- margin-right: 1px;
+ margin-left: 1px;
+ margin-right: 1px;
}
.kune-Margin-Mini-tl {
- margin-top: 1px;
- margin-left: 1px;
+ margin-top: 1px;
+ margin-left: 1px;
}
.kune-Margin-Mini-tb {
- margin-top: 1px;
- margin-bottom: 1px;
+ margin-top: 1px;
+ margin-bottom: 1px;
}
.kune-Margin-Mini-t {
- margin-top: 1px;
+ margin-top: 1px;
}
.kune-Margin-Mini-r {
- margin-right: 1px;
+ margin-right: 1px;
}
.kune-Margin-Mini-b {
- margin-bottom: 1px;
+ margin-bottom: 1px;
}
.kune-Margin-Mini-l {
- margin-left: 1px;
+ margin-left: 1px;
}
+
+.k-publicspace-msg {
+ background-color: #E0E0E0;
+}
+
+.k-publicspace-mask { /* background-color: #fff !important;
+ kfilter: alpha(opacity = 68) !important;
+ -moz-opacity: 0.68 !important;
+ -khtml-opacity: 0.68 !important;
+ opacity: 0.68 !important;*/
+
+}
+
+.k-publicspace-panel {
+ margin: 5px;
+ display: table-row;
+}
+
+.k-publicspace-icon {
+ margin: 3px 3px 3px 0;
+ float:left;
+}
+
+.k-publicspace-title {
+ font-weight: bold;
+ display: block;
+ margin-bottom: 5px;
+ font-size: 16px;
+ display: table-caption;
+}
+
+.k-publicspace-description {
+ font-size: 14px;
+ display: table-cell;
+}
+
+.k-publicspace-actions {
+ display: inline;
+}
Modified: trunk/src/main/java/cc/kune/core/public/ws.html
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.html 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/public/ws.html 2011-01-31 18:51:35 UTC (rev 1228)
@@ -41,6 +41,12 @@
</style>
</head>
<body>
+<!-- Autocomplete user/pass -->
+<form method="post" action="javascript:void(0)" style="display: none">
+ <input type="text" id="username" name="username" value=""/>
+ <input type="password" id="password" name="password" value=""/>
+ <input type="submit" value="Login" id="login"/>
+</form>
<!-- RECOMMENDED if your web app will not function without JavaScript enabled -->
<noscript>
<div
Modified: trunk/src/main/java/cc/kune/core/shared/dto/StateTokenUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/StateTokenUtils.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/core/shared/dto/StateTokenUtils.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -3,11 +3,14 @@
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.domain.utils.StateToken;
+import com.google.inject.Inject;
+
public class StateTokenUtils {
+ private static final String SEPARATOR = ".";
private final Session session;
- private static final String SEPARATOR = ".";
+ @Inject
public StateTokenUtils(final Session session) {
this.session = session;
}
Copied: trunk/src/main/java/cc/kune/gspace (from rev 1223, trunk/src/main/java/cc/kune/wspace)
Added: trunk/src/main/java/cc/kune/gspace/GSpace.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/gspace/GSpace.gwt.xml (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/GSpace.gwt.xml 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,12 @@
+<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/…">
+<module>
+ <inherits name="com.google.gwt.user.User" />
+ <!-- <entry-point class="cc.kune.core.ws.armor.client.WsArmorEntryPoint"
+ /> -->
+ <public path="public" />
+ <source path="client" />
+ <!-- NOTE: this only compiles for chromium/safari ============= -->
+ <!--http://code.google.com/p/google-web-toolkit/issues/detail?id=42 -->
+ <!-- <set-property name="user.agent" value="gecko1_8" /> -->
+ <set-property name="user.agent" value="safari" />
+</module>
\ No newline at end of file
Deleted: trunk/src/main/java/cc/kune/gspace/Wspace.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/wspace/Wspace.gwt.xml 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/gspace/Wspace.gwt.xml 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,12 +0,0 @@
-<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/…">
-<module>
- <inherits name="com.google.gwt.user.User" />
- <!-- <entry-point class="cc.kune.core.ws.armor.client.WsArmorEntryPoint"
- /> -->
- <public path="public" />
- <source path="client" />
- <!-- NOTE: this only compiles for chromium/safari ============= -->
- <!--http://code.google.com/p/google-web-toolkit/issues/detail?id=42 -->
- <!-- <set-property name="user.agent" value="gecko1_8" /> -->
- <set-property name="user.agent" value="safari" />
-</module>
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/gspace/client/WsArmor.java
===================================================================
--- trunk/src/main/java/cc/kune/wspace/client/WsArmor.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/gspace/client/WsArmor.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,4 +1,4 @@
-package cc.kune.wspace.client;
+package cc.kune.gspace.client;
import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
Modified: trunk/src/main/java/cc/kune/gspace/client/WsArmorEntryPoint.java
===================================================================
--- trunk/src/main/java/cc/kune/wspace/client/WsArmorEntryPoint.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/gspace/client/WsArmorEntryPoint.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,6 +1,6 @@
-package cc.kune.wspace.client;
+package cc.kune.gspace.client;
-import cc.kune.wspace.client.resources.WsArmorResources;
+import cc.kune.gspace.client.resources.WsArmorResources;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
@@ -15,7 +15,7 @@
resources.style().ensureInjected();
final RootLayoutPanel rootPanel = RootLayoutPanel.get();
- final WsArmorImpl armor = new WsArmorImpl();
+ final WsArmorImpl armor = new WsArmorImpl(null);
final InlineLabel icons = new InlineLabel("Icons");
final InlineLabel login = new InlineLabel("Login");
final InlineLabel logo = new InlineLabel("Logo");
Modified: trunk/src/main/java/cc/kune/gspace/client/WsArmorImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/wspace/client/WsArmorImpl.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/gspace/client/WsArmorImpl.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,12 +1,13 @@
-package cc.kune.wspace.client;
+package cc.kune.gspace.client;
+import cc.kune.pspace.client.PSpacePresenter;
+
import com.google.gwt.core.client.GWT;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.DockLayoutPanel;
import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.Frame;
import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
@@ -49,7 +50,7 @@
@UiField
DockLayoutPanel mainpanel;
@UiField
- Frame publicSpace;
+ SimplePanel publicSpace;
@UiField
FlowPanel sitebar;
@UiField
@@ -64,12 +65,12 @@
SimplePanel userSpace;
@Inject
- public WsArmorImpl() {
+ public WsArmorImpl(final PSpacePresenter pspace) {
initWidget(uiBinder.createAndBindUi(this));
groupSpace.setWidgetMinSize(splitEast, 150);
tabs.setStyleName("k-spaces");
homeSpace.add(RootPanel.get("k-home-ini"));
- publicSpace.setUrl("http://www.google.com");
+ publicSpace.add(pspace.getWidget());
userSpace.add(new Label("User space"));
// userSpace.add(new WebClient());
}
Modified: trunk/src/main/java/cc/kune/gspace/client/WsArmorImpl.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/wspace/client/WsArmorImpl.ui.xml 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/gspace/client/WsArmorImpl.ui.xml 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,8 +1,8 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
-<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
+<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:kp="urn:import:cc.kune.pspace.client"
xmlns:k="urn:import:cc.kune.wspace.client" xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:with field='res'
- type='cc.kune.wspace.client.resources.WsArmorResources' />
+ type='cc.kune.gspace.client.resources.WsArmorResources' />
<ui:style>
.frame {
border: 0px;
@@ -105,8 +105,8 @@
</g:tab>
<g:tab>
<g:header size='0' />
- <g:Frame styleName="{style.frame}" width="100%"
- height="100%" ui:field="publicSpace"></g:Frame>
+ <g:SimplePanel ui:field="publicSpace" width="100%"
+ height="100%"></g:SimplePanel>
</g:tab>
</g:TabLayoutPanel>
</g:center>
Modified: trunk/src/main/java/cc/kune/gspace/client/resources/WsArmorResources.java
===================================================================
--- trunk/src/main/java/cc/kune/wspace/client/resources/WsArmorResources.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/WsArmorResources.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,4 +1,4 @@
-package cc.kune.wspace.client.resources;
+package cc.kune.gspace.client.resources;
import com.google.gwt.resources.client.ClientBundle;
import com.google.gwt.resources.client.CssResource;
@@ -48,22 +48,22 @@
@Source("def-theme-tools-arrow-left.png")
ImageResource defThemeToolsArrowLeft();
- @Source("wsArmor.css")
- Style style();
+ ImageResource groupSpaceDisabled();
- ImageResource publicSpaceEnabled();
+ ImageResource groupSpaceEnabled();
- ImageResource publicSpaceDisabled();
+ ImageResource homeSpaceDisabled();
- ImageResource userSpaceEnabled();
+ ImageResource homeSpaceEnabled();
- ImageResource userSpaceDisabled();
+ ImageResource publicSpaceDisabled();
- ImageResource homeSpaceEnabled();
+ ImageResource publicSpaceEnabled();
- ImageResource homeSpaceDisabled();
+ @Source("wsArmor.css")
+ Style style();
- ImageResource groupSpaceEnabled();
+ ImageResource userSpaceDisabled();
- ImageResource groupSpaceDisabled();
+ ImageResource userSpaceEnabled();
}
\ No newline at end of file
Deleted: trunk/src/main/java/cc/kune/gspace/client/resources/wsArmor.css
===================================================================
--- trunk/src/main/java/cc/kune/wspace/client/resources/wsArmor.css 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/wsArmor.css 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,168 +0,0 @@
-@CHARSET "UTF-8";
-
-@external .*;
-.floatLeft {
- float: left;
-}
-
-.mainPanel {
- border: 7px solid white;
-}
-
-.floatRight {
- float: right;
-}
-
-.siteBar {
- overflow: hidden;
-}
-
-.entityHeader {
- -webkit-border-top-left-radius: 10px;
- -moz-border-radius-topleft: 10px;
- border-top-left-radius: 10px;
- background-color: #f4e3d7;
- overflow: hidden;
-}
-
-.entityFooter {
- -webkit-border-bottom-left-radius: 10px;
- -moz-border-radius-bottomleft: 10px;
- border-top-bottom-radius: 10px;
- background-color: #f7ebe3;
- padding: 7px 10px 0px 17px;
- overflow: hidden;
-}
-
-.entityFooter span {
- color: #784421;
- font-size: 16px;
- font-weight: bold;
-}
-
-.entityHeader span {
- font-size: 56px;
- margin-left: 15px;
- color: #550000;
- font-weight: bold;
- font: 'UbuntuBold', Arial;
-}
-
-.docHeader {
- background-color: #c87137;
- overflow: hidden;
-}
-
-.docHeaderArrow {
- position: relative;
- z-index: 10;
- top: -25px;
- left: 10px;
-}
-
-.docHeader span {
- color: #FFF;
- font-size: 28px;
- font-weight: bold;
- margin-left: 15px;
- font: 'UbuntuBold', Arial;
-}
-
-.docSubheader {
- background-color: #f7ebe3;
- padding: 15px 0 0 15px;
- overflow: hidden;
-}
-
-.docSubheaderLeft {
- position: relative;
- top: 0;
- left: -30px;
-}
-
-.docSubheader span {
- color: #784421;
- font-size: 20px;
- font-weight: bold;
-}
-
-.docEditorMargin {
- background-color: #f7ebe3;
-}
-
-.docEditor {
- background-color: #FFF;
- border-left: 1px solid #959595;
- border-right: 1px solid #959595;
- border-top: 1px solid #959595;
- -webkit-border-top-left-radius: 7px;
- -moz-border-radius-topleft: 7px;
- border-top-left-radius: 7px;
- -webkit-border-top-right-radius: 7px;
- -moz-border-radius-topright: 7px;
- border-top-right-radius: 7px;
- padding: 5px;
-}
-
-.docFooter {
- border-left: 1px solid #959595;
- border-right: 1px solid #959595;
- border-bottom: 1px solid #959595;
- background-color: #e3dbdb;
- -webkit-border-bottom-left-radius: 7px;
- -moz-border-radius-bottomleft: 7px;
- border-bottom-left-radius: 7px;
- -webkit-border-bottom-right-radius: 7px;
- -moz-border-radius-bottomright: 7px;
- border-bottom-right-radius: 7px;
- padding: 7px 7px 0 7px;
- overflow: hidden;
-}
-
-.docFooter span {
- color: #784421;
- font-size: 16px;
- font-weight: bold;
-}
-
-.entityTools {
- -webkit-border-top-right-radius: 10px;
- -moz-border-radius-topright: 10px;
- border-top-right-radius: 10px;
- -webkit-border-bottom-right-radius: 10px;
- -moz-border-radius-bottomright: 10px;
- border-bottom-right-radius: 10px;
- background-color: #DEAA87;
-}
-
-.entityToolsNorth {
- margin: 10px;
-}
-
-.entityToolsNorth span {
- color: #a05a2c;
- font-size: 20px;
- font-weight: bold;
-}
-
-.entityToolsCenter {
- margin: 10px;
-}
-
-.entityToolsCenter span {
- color: #FFF;
- font-size: 22px;
- font-weight: bold;
-}
-
-.entityToolsSouth {
- border-top: 2px solid #FFF;
- padding: 10px;
-}
-
-.entityToolsSouth span {
- color: #a05a2c;
- font-size: 20px;
- font-weight: bold;
-}
-
Copied: trunk/src/main/java/cc/kune/gspace/client/resources/wsArmor.css (from rev 1224, trunk/src/main/java/cc/kune/wspace/client/resources/wsArmor.css)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/resources/wsArmor.css (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/wsArmor.css 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,171 @@
+@CHARSET "UTF-8";
+
+@external .*;
+.floatLeft {
+ float: left;
+}
+
+.mainPanel {
+ border-top: 2px solid white;
+ border-bottom: 7px solid white;
+ border-right: 7px solid white;
+ border-left: 7px solid white;
+}
+
+.floatRight {
+ float: right;
+}
+
+.siteBar {
+ overflow: hidden;
+}
+
+.entityHeader {
+ -webkit-border-top-left-radius: 10px;
+ -moz-border-radius-topleft: 10px;
+ border-top-left-radius: 10px;
+ background-color: #f4e3d7;
+ overflow: hidden;
+}
+
+.entityFooter {
+ -webkit-border-bottom-left-radius: 10px;
+ -moz-border-radius-bottomleft: 10px;
+ border-top-bottom-radius: 10px;
+ background-color: #f7ebe3;
+ padding: 7px 10px 0px 17px;
+ overflow: hidden;
+}
+
+.entityFooter span {
+ color: #784421;
+ font-size: 16px;
+ font-weight: bold;
+}
+
+.entityHeader span {
+ font-size: 56px;
+ margin-left: 15px;
+ color: #550000;
+ font-weight: bold;
+ font: 'UbuntuBold', Arial;
+}
+
+.docHeader {
+ background-color: #c87137;
+ overflow: hidden;
+}
+
+.docHeaderArrow {
+ position: relative;
+ z-index: 10;
+ top: -25px;
+ left: 10px;
+}
+
+.docHeader span {
+ color: #FFF;
+ font-size: 28px;
+ font-weight: bold;
+ margin-left: 15px;
+ font: 'UbuntuBold', Arial;
+}
+
+.docSubheader {
+ background-color: #f7ebe3;
+ padding: 15px 0 0 15px;
+ overflow: hidden;
+}
+
+.docSubheaderLeft {
+ position: relative;
+ top: 0;
+ left: -30px;
+}
+
+.docSubheader span {
+ color: #784421;
+ font-size: 20px;
+ font-weight: bold;
+}
+
+.docEditorMargin {
+ background-color: #f7ebe3;
+}
+
+.docEditor {
+ background-color: #FFF;
+ border-left: 1px solid #959595;
+ border-right: 1px solid #959595;
+ border-top: 1px solid #959595;
+ -webkit-border-top-left-radius: 7px;
+ -moz-border-radius-topleft: 7px;
+ border-top-left-radius: 7px;
+ -webkit-border-top-right-radius: 7px;
+ -moz-border-radius-topright: 7px;
+ border-top-right-radius: 7px;
+ padding: 5px;
+}
+
+.docFooter {
+ border-left: 1px solid #959595;
+ border-right: 1px solid #959595;
+ border-bottom: 1px solid #959595;
+ background-color: #e3dbdb;
+ -webkit-border-bottom-left-radius: 7px;
+ -moz-border-radius-bottomleft: 7px;
+ border-bottom-left-radius: 7px;
+ -webkit-border-bottom-right-radius: 7px;
+ -moz-border-radius-bottomright: 7px;
+ border-bottom-right-radius: 7px;
+ padding: 7px 7px 0 7px;
+ overflow: hidden;
+}
+
+.docFooter span {
+ color: #784421;
+ font-size: 16px;
+ font-weight: bold;
+}
+
+.entityTools {
+ -webkit-border-top-right-radius: 10px;
+ -moz-border-radius-topright: 10px;
+ border-top-right-radius: 10px;
+ -webkit-border-bottom-right-radius: 10px;
+ -moz-border-radius-bottomright: 10px;
+ border-bottom-right-radius: 10px;
+ background-color: #DEAA87;
+}
+
+.entityToolsNorth {
+ margin: 10px;
+}
+
+.entityToolsNorth span {
+ color: #a05a2c;
+ font-size: 20px;
+ font-weight: bold;
+}
+
+.entityToolsCenter {
+ margin: 10px;
+}
+
+.entityToolsCenter span {
+ color: #FFF;
+ font-size: 22px;
+ font-weight: bold;
+}
+
+.entityToolsSouth {
+ border-top: 2px solid #FFF;
+ padding: 10px;
+}
+
+.entityToolsSouth span {
+ color: #a05a2c;
+ font-size: 20px;
+ font-weight: bold;
+}
+
Modified: trunk/src/main/java/cc/kune/msgs/client/UserMessagesPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/msgs/client/UserMessagesPanel.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/cc/kune/msgs/client/UserMessagesPanel.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -14,22 +14,23 @@
public class UserMessagesPanel extends Composite implements UserMessagesView {
+ interface MessagesPanelUiBinder extends UiBinder<Widget, UserMessagesPanel> {
+ }
private static MessagesPanelUiBinder uiBinder = GWT.create(MessagesPanelUiBinder.class);
+
@UiField
VerticalPanel vp;
- interface MessagesPanelUiBinder extends UiBinder<Widget, UserMessagesPanel> {
- }
-
public UserMessagesPanel() {
initWidget(uiBinder.createAndBindUi(this));
}
@Override
- public void add(NotifyLevel level, String title, String message, boolean closeable, CloseCallback closeCallback) {
- UserMessage msg = new UserMessage(level, title, message, closeable, closeCallback);
+ public void add(final NotifyLevel level, final String title, final String message, final boolean closeable,
+ final CloseCallback closeCallback) {
+ final UserMessage msg = new UserMessage(level, title, message, closeable, closeCallback);
vp.add(msg);
- SlideUp anim = new SlideUp(msg.getElement());
+ final SlideUp anim = new SlideUp(msg.getElement());
anim.setDuration(.5);
anim.play();
}
Added: trunk/src/main/java/cc/kune/pspace/PSpace.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/pspace/PSpace.gwt.xml (rev 0)
+++ trunk/src/main/java/cc/kune/pspace/PSpace.gwt.xml 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.1/distro-source/core/…">
+<module>
+ <inherits name="com.google.gwt.user.User" />
+ <source path="client"/>
+</module>
\ No newline at end of file
Property changes on: trunk/src/main/java/cc/kune/pspace/PSpace.gwt.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/pspace/client/PSpaceGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/pspace/client/PSpaceGinModule.java (rev 0)
+++ trunk/src/main/java/cc/kune/pspace/client/PSpaceGinModule.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,19 @@
+package cc.kune.pspace.client;
+
+
+import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
+
+public class PSpaceGinModule extends AbstractPresenterModule {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.google.gwt.inject.client.AbstractGinModule#configure()
+ */
+ @Override
+ protected void configure() {
+ bindPresenter(PSpacePresenter.class, PSpacePresenter.PSpaceView.class, PSpacePanel.class,
+ PSpacePresenter.PSpaceProxy.class);
+ }
+
+}
\ No newline at end of file
Property changes on: trunk/src/main/java/cc/kune/pspace/client/PSpaceGinModule.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,85 @@
+package cc.kune.pspace.client;
+
+import cc.kune.common.client.actions.ui.ActionFlowPanel;
+import cc.kune.common.client.actions.ui.IsActionExtensible;
+import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.pspace.client.PSpacePresenter.PSpaceView;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Frame;
+import com.google.gwt.user.client.ui.HasText;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.InlineLabel;
+import com.google.gwt.user.client.ui.LayoutPanel;
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.inject.Inject;
+import com.gwtplatform.mvp.client.ViewImpl;
+
+public class PSpacePanel extends ViewImpl implements PSpaceView {
+
+ public interface PSpacePanelUiBinder extends UiBinder<Widget, PSpacePanel> {
+ }
+ private static PSpacePanelUiBinder uiBinder = GWT.create(PSpacePanelUiBinder.class);
+
+ private final ActionFlowPanel actionPanel;
+ @UiField
+ SimplePanel actionPanelContainer;
+ @UiField
+ InlineLabel description;
+ @UiField
+ Frame frame;
+ @UiField
+ Image icon;
+ @UiField
+ LayoutPanel mainPanel;
+ @UiField
+ FlowPanel messagePanel;
+ @UiField
+ InlineLabel title;
+ private final Widget widget;
+
+ @Inject
+ public PSpacePanel(final GuiProvider guiProvider, final CoreResources res) {
+ widget = uiBinder.createAndBindUi(this);
+ actionPanel = new ActionFlowPanel(guiProvider);
+ actionPanelContainer.add(actionPanel);
+ final Element layer = mainPanel.getWidgetContainerElement(messagePanel);
+ layer.addClassName("k-publicspace-msg");
+ layer.addClassName("k-opacity80");
+ layer.addClassName("k-box-5shadow");
+ layer.addClassName("k-5corners");
+ icon.setResource(res.browser32());
+ }
+
+ @Override
+ public Widget asWidget() {
+ return widget;
+ }
+
+ @Override
+ public IsActionExtensible getActionPanel() {
+ return actionPanel;
+ }
+
+ @Override
+ public HasText getDescription() {
+ return description;
+ }
+
+ @Override
+ public HasText getTitle() {
+ return title;
+ }
+
+ @Override
+ public void setContentGotoPublicUrl(final String publicUrl) {
+ frame.setUrl(publicUrl);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.ui.xml (rev 0)
+++ trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.ui.xml 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,27 @@
+<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
+<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
+ xmlns:g="urn:import:com.google.gwt.user.client.ui">
+ <ui:style>
+ .frame {
+ border: 0px;
+ margin: 0px;
+ }
+ </ui:style>
+ <g:LayoutPanel width="100%" height="100%" ui:field="mainPanel">
+ <g:layer left="0px" width="100.0pct" top="0px" height="100.0pct">
+ <g:Frame styleName="{style.frame}" ui:field="frame"
+ width="100%" height="100%" />
+ </g:layer>
+ <g:layer left="0px" width="100.0pct" top="0px" height="100.0pct">
+ <g:HTMLPanel ui:field="mask" styleName="k-publicspace-mask" width="100%" height="100%" />
+ </g:layer>
+ <g:layer left="50px" width="250px" height="100px" bottom="50px">
+ <g:FlowPanel width="250px" height="100px" ui:field="messagePanel" addStyleNames="k-publicspace-panel" >
+ <g:SimplePanel addStyleNames="k-publicspace-icon"><g:Image ui:field="icon" /></g:SimplePanel>
+ <g:InlineLabel ui:field="title" addStyleNames="k-publicspace-title" />
+ <g:InlineLabel ui:field="description" addStyleNames="k-publicspace-description" />
+ <g:SimplePanel ui:field="actionPanelContainer" addStyleNames="k-publicspace-actions" />
+ </g:FlowPanel>
+ </g:layer>
+ </g:LayoutPanel>
+</ui:UiBinder>
\ No newline at end of file
Property changes on: trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.ui.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,110 @@
+package cc.kune.pspace.client;
+
+import cc.kune.common.client.actions.ui.IsActionExtensible;
+import cc.kune.core.client.state.StateChangedEvent;
+import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
+import cc.kune.core.shared.domain.ContentStatus;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.GroupListDTO;
+import cc.kune.core.shared.dto.StateAbstractDTO;
+import cc.kune.core.shared.dto.StateContainerDTO;
+import cc.kune.core.shared.dto.StateContentDTO;
+import cc.kune.core.shared.dto.StateTokenUtils;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.user.client.ui.HasText;
+import com.google.inject.Inject;
+import com.gwtplatform.mvp.client.Presenter;
+import com.gwtplatform.mvp.client.View;
+import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit;
+import com.gwtplatform.mvp.client.proxy.Proxy;
+import com.gwtplatform.mvp.client.proxy.RevealRootContentEvent;
+
+public class PSpacePresenter extends Presenter<PSpacePresenter.PSpaceView, PSpacePresenter.PSpaceProxy> {
+
+ @ProxyCodeSplit
+ public interface PSpaceProxy extends Proxy<PSpacePresenter> {
+ }
+ public interface PSpaceView extends View {
+
+ IsActionExtensible getActionPanel();
+
+ HasText getDescription();
+
+ HasText getTitle();
+
+ void setContentGotoPublicUrl(String publicUrl);
+ }
+
+ private final I18nTranslationService i18n;
+ private final StateTokenUtils stateTokenUtils;
+
+ @Inject
+ public PSpacePresenter(final EventBus eventBus, final PSpaceView view, final PSpaceProxy proxy,
+ final I18nTranslationService i18n, final StateTokenUtils stateTokenUtils) {
+ super(eventBus, view, proxy);
+ this.i18n = i18n;
+ this.stateTokenUtils = stateTokenUtils;
+ eventBus.addHandler(StateChangedEvent.getType(), new StateChangedHandler() {
+ @Override
+ public void onStateChanged(final StateChangedEvent event) {
+ setState(event.getState());
+ }
+ });
+ }
+
+ @Override
+ protected void onReveal() {
+ super.onReveal();
+ }
+
+ @Override
+ protected void revealInParent() {
+ RevealRootContentEvent.fire(this, this);
+ }
+
+ private void setContentNotPublic() {
+ getView().getTitle().setText(i18n.t("Not Published yet"));
+ getView().getDescription().setText(
+ i18n.t("This is only a preview of how this page will looks like to the general public if you want to publish it"));
+ }
+
+ private void setContentNotPublicable() {
+ getView().getTitle().setText(i18n.t("Not Publicable"));
+ getView().getDescription().setText(i18n.t("This page is not publicable"));
+ getView().setContentGotoPublicUrl("about:blank");
+ }
+
+ private void setContentPublic() {
+ getView().getTitle().setText(i18n.t("Preview"));
+ getView().getDescription().setText(
+ i18n.t("This is only a preview of how this page looks like to the general public."));
+ }
+
+ public void setState(final StateAbstractDTO state) {
+ if (state instanceof StateContainerDTO) {
+ final StateToken token = state.getStateToken();
+ if (((StateContainerDTO) state).getAccessLists().getViewers().getMode().equals(GroupListDTO.EVERYONE)) {
+ final String publicUrl = stateTokenUtils.getPublicUrl(token);
+ // getView().setContentGotoPublicUrl(publicUrl);
+ getView().setContentGotoPublicUrl("http://www.google.com");
+ if (state instanceof StateContentDTO) {
+ final StateContentDTO content = (StateContentDTO) state;
+ if (content.getStatus().equals(ContentStatus.publishedOnline)) {
+ setContentPublic();
+ } else {
+ setContentNotPublic();
+ }
+ } else {
+ setContentPublic();
+ }
+ } else {
+ setContentNotPublic();
+ }
+ } else {
+ setContentNotPublicable();
+ }
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/pspace/client/PSpacePresenter.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -91,7 +91,6 @@
installGuiceModules(builder);
builder.add(KuneContainerListener.class);
- // builder.add(WaveContainerListener.class);
builder.exclude("/http-bind.*");
builder.exclude("/public/.*");
@@ -99,13 +98,35 @@
builder.exclude("/stylesheets/.*");
builder.exclude("/javascripts/.*");
builder.exclude("/templates/.*");
- builder.exclude("/wiab.*");
- builder.exclude("/socket.*");
+ /* Wave with context '/wiab/' */
+ // builder.exclude("/wiab.*");
+ // builder.exclude("/socket.*");
+
+ /* Wave with context '/' */
+ builder.exclude("/");
+ builder.exclude("/attachment/.*");
+ builder.exclude("/auth/signin");
+ builder.exclude("/auth/signout");
+ builder.exclude("/auth/register");
+ builder.exclude("/fetch/.*");
+ builder.exclude("/robot/dataapi");
+ builder.exclude("/robot/dataapi/oauth/.*");
+ builder.exclude("/robot/dataapi/rpc");
+ builder.exclude("/robot/register/.*");
+ builder.exclude("/robot/rpc");
+ builder.exclude("/gadgets");
+ builder.exclude("/gadgets/.*");
+ builder.exclude("/socket.io/*");
+ builder.exclude("/socket");
+ builder.exclude("/static/.*");
+ builder.exclude("/webclient/.*");
+
builder.at(".*").install(new LogFilter());
builder.at(".*").install(new GuiceFilter());
- builder.at("^/$").install(new RedirectFilter("/ws/"));
+ // NOTE: Commented this while testing Wave
+ // builder.at("^/$").install(new RedirectFilter("/ws/"));
builder.at("^/ws").install(new RedirectFilter("/ws/"));
builder.at("^/ws/$").install(new ListenerFilter(KuneApplicationListener.class),
@@ -132,9 +153,6 @@
builder.use(new GalleryServerModule());
builder.use(new RESTServicesModule());
builder.use(configModule);
- // builder.use(WavePropertiesParser.parseFlags(FlagSettings.class));
- // builder.use(new WaveInterceptorModule());
- // builder.use(new ServerModule());
}
}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/KuneWindowUtils.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/KuneWindowUtils.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/KuneWindowUtils.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,36 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.platf.client.ui;
-
-import com.google.gwt.user.client.Window;
-
-public class KuneWindowUtils {
- public static int getClientHeight() {
- return Window.getClientHeight();
- }
-
- public static int getClientWidth() {
- return Window.getClientWidth();
- }
-
- public static void open(String url) {
- Window.open(url, "_blank", "");
- }
-}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -19,10 +19,10 @@
*/
package org.ourproject.kune.workspace.client.licensefoot;
-import org.ourproject.kune.platf.client.ui.KuneWindowUtils;
import org.ourproject.kune.platf.client.ui.SimpleToolbar;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+import cc.kune.common.client.ui.KuneWindowUtils;
import cc.kune.core.shared.dto.LicenseDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardFlags.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardFlags.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardFlags.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -21,8 +21,8 @@
import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.platf.client.ui.IconLabel;
-import org.ourproject.kune.platf.client.ui.KuneWindowUtils;
+import cc.kune.common.client.ui.KuneWindowUtils;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.gwt.event.dom.client.ClickEvent;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -20,13 +20,13 @@
package org.ourproject.kune.workspace.client.newgroup;
import org.ourproject.kune.platf.client.ui.KuneUiUtils;
-import org.ourproject.kune.platf.client.ui.KuneWindowUtils;
import org.ourproject.kune.platf.client.ui.dialogs.DefaultFormUtils;
import org.ourproject.kune.platf.client.ui.dialogs.ExtendedDialog;
import org.ourproject.kune.workspace.client.licensewizard.LicenseWizard;
import cc.kune.common.client.noti.NotifyLevel;
import cc.kune.common.client.noti.NotifyLevelImages;
+import cc.kune.common.client.ui.KuneWindowUtils;
import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.client.ui.dialogs.MessageToolbar;
import cc.kune.core.shared.dto.LicenseDTO;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteoptions/SiteOptionsPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteoptions/SiteOptionsPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteoptions/SiteOptionsPresenter.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -28,8 +28,8 @@
import org.ourproject.kune.platf.client.actions.ui.MenuDescriptor;
import org.ourproject.kune.platf.client.actions.ui.MenuItemDescriptor;
import org.ourproject.kune.platf.client.actions.ui.MenuSeparatorDescriptor;
-import org.ourproject.kune.platf.client.ui.KuneWindowUtils;
+import cc.kune.common.client.ui.KuneWindowUtils;
import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.shared.i18n.I18nTranslationService;
Modified: trunk/src/main/resources/wave-server.properties
===================================================================
--- trunk/src/main/resources/wave-server.properties 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/resources/wave-server.properties 2011-01-31 18:51:35 UTC (rev 1228)
@@ -8,7 +8,7 @@
# Each address is a comma separated host:port pair.
http_frontend_public_address = localhost:9898
http_frontend_addresses = ${http_frontend_public_address}
-http_baseurl = /wiab/
+http_baseurl = /
resource_base = ./target/kune-0.0.7/
### Server-specific variables
Property changes on: trunk/src/main/webapp
___________________________________________________________________
Name: svn:ignore
+ webclient
static
Modified: trunk/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/src/main/webapp/WEB-INF/web.xml 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/main/webapp/WEB-INF/web.xml 2011-01-31 18:51:35 UTC (rev 1228)
@@ -14,6 +14,7 @@
<welcome-file-list>
<welcome-file>ws.html</welcome-file>
</welcome-file-list>
+ <!-- JRuby servlets ======================================================================================= -->
<!-- Note: this gives problems depending on the version of jetty or tomcat -->
<!-- <context-param> -->
<!-- <param-name>jruby.standalone</param-name> -->
@@ -52,6 +53,7 @@
<!-- <listener> -->
<!-- <listener-class>org.jruby.rack.rails.RailsServletContextListener</listener-class> -->
<!-- </listener> -->
+ <!-- Kune normal guice configuration ======================================================================== -->
<filter>
<filter-name>rack</filter-name>
<filter-class>org.ourproject.kune.rack.RackServletFilter</filter-class>
@@ -66,26 +68,7 @@
<filter-name>rack</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
- <!-- <servlet> -->
- <!-- <servlet-name>Proxy</servlet-name> -->
- <!-- <servlet-class>de.spieleck.servlets.ProxyServlet</servlet-class> -->
- <!-- <init-param> -->
- <!-- <param-name>remotePath</param-name> -->
- <!-- <param-value>/http-bind/</param-value> -->
- <!-- </init-param> -->
- <!-- <init-param> -->
- <!-- <param-name>remoteServer</param-name> -->
- <!-- <param-value>localhost</param-value> -->
- <!-- </init-param> -->
- <!-- <init-param> -->
- <!-- <param-name>remotePort</param-name> -->
- <!-- <param-value>5280</param-value> -->
- <!-- </init-param> -->
- <!-- </servlet> -->
- <!-- <servlet-mapping> -->
- <!-- <servlet-name>Proxy</servlet-name> -->
- <!-- <url-pattern>/http-bind/</url-pattern> -->
- <!-- </servlet-mapping> -->
+ <!-- Emite xmpp proxy ======================================================================================= -->
<servlet>
<servlet-name>HttpBind</servlet-name>
<servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
@@ -102,7 +85,212 @@
<servlet-name>HttpBind</servlet-name>
<url-pattern>/http-bind</url-pattern>
</servlet-mapping>
+ <!-- Wave proxies with context / ====================================================================== -->
<servlet>
+ <servlet-name>WiabAttachs</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabAttachs</servlet-name>
+ <url-pattern>/attachment/*</url-pattern>
+ </servlet-mapping>
+ <!-- ==================== -->
+ <servlet>
+ <servlet-name>WiabSignIn</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabSignIn</servlet-name>
+ <url-pattern>/auth/signin</url-pattern>
+ </servlet-mapping>
+ <!-- ==================== -->
+ <servlet>
+ <servlet-name>WiabSignOut</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabSignOut</servlet-name>
+ <url-pattern>/auth/signout</url-pattern>
+ </servlet-mapping>
+ <!-- ==================== -->
+ <servlet>
+ <servlet-name>WiabRegister</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabRegister</servlet-name>
+ <url-pattern>/auth/register</url-pattern>
+ </servlet-mapping>
+ <!-- ==================== -->
+ <servlet>
+ <servlet-name>WiabFetch</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabFetch</servlet-name>
+ <url-pattern>/fetch/*</url-pattern>
+ </servlet-mapping>
+ <!-- ==================== -->
+ <servlet>
+ <servlet-name>WiabRobotDataApi</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabRobotDataApi</servlet-name>
+ <url-pattern>/robot/dataapi</url-pattern>
+ </servlet-mapping>
+ <!-- ==================== -->
+ <servlet>
+ <servlet-name>WiabRobotDataApiOauth</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabRobotDataApiOauth</servlet-name>
+ <url-pattern>/robot/dataapi/oauth/*</url-pattern>
+ </servlet-mapping>
+ <!-- ==================== -->
+ <servlet>
+ <servlet-name>WiabRobotDataApiRpc</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabRobotDataApiRpc</servlet-name>
+ <url-pattern>/robot/dataapi/rpc</url-pattern>
+ </servlet-mapping>
+ <!-- ==================== -->
+ <servlet>
+ <servlet-name>WiabRobotRegister</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabRobotRegister</servlet-name>
+ <url-pattern>/robot/register/*</url-pattern>
+ </servlet-mapping>
+ <!-- ==================== -->
+ <servlet>
+ <servlet-name>WiabRobotRpc</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabRobotRpc</servlet-name>
+ <url-pattern>/robot/rpc</url-pattern>
+ </servlet-mapping>
+ <!-- ==================== -->
+ <servlet>
+ <servlet-name>WiabGadgets</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabGadgets</servlet-name>
+ <url-pattern>/gadgets</url-pattern>
+ </servlet-mapping>
+ <!-- ==================== -->
+ <servlet>
+ <servlet-name>WiabGadgetsAst</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabGadgetsAst</servlet-name>
+ <url-pattern>/gadgets/*</url-pattern>
+ </servlet-mapping>
+ <!-- ==================== -->
+ <servlet>
<servlet-name>WiabSocketIO</servlet-name>
<servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
<init-param>
@@ -118,8 +306,9 @@
<servlet-name>WiabSocketIO</servlet-name>
<url-pattern>/socket.io/*</url-pattern>
</servlet-mapping>
+ <!-- ==================== -->
<servlet>
- <servlet-name>WiabServlets</servlet-name>
+ <servlet-name>WiabSocket</servlet-name>
<servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
<init-param>
<param-name>ProxyTo</param-name>
@@ -131,56 +320,75 @@
</init-param>
</servlet>
<servlet-mapping>
- <servlet-name>WiabServlets</servlet-name>
- <url-pattern>/wiab/*</url-pattern>
+ <servlet-name>WiabSocket</servlet-name>
+ <url-pattern>/socket</url-pattern>
</servlet-mapping>
-
+ <!-- ==================== -->
+ <servlet>
+ <servlet-name>WiabStatic</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabStatic</servlet-name>
+ <url-pattern>/static/*</url-pattern>
+ </servlet-mapping>
+ <!-- ==================== -->
+ <servlet>
+ <servlet-name>WiabWebClient</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabWebClient</servlet-name>
+ <url-pattern>/webclient/*</url-pattern>
+ </servlet-mapping>
+ <!-- Wave proxies with context /wiab/ ====================================================================== -->
<!-- <servlet> -->
- <!-- <servlet-name>WIABProxy</servlet-name> -->
- <!-- <servlet-class>de.spieleck.servlets.ProxyServlet</servlet-class> -->
+ <!-- <servlet-name>WiabSocketIO</servlet-name> -->
+ <!-- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class> -->
<!-- <init-param> -->
- <!-- <param-name>remotePath</param-name> -->
- <!-- <param-value>/wiab/</param-value> -->
+ <!-- <param-name>ProxyTo</param-name> -->
+ <!-- <param-value>http://127.0.0.1:9898/</param-value> -->
<!-- </init-param> -->
<!-- <init-param> -->
- <!-- <param-name>remoteServer</param-name> -->
- <!-- <param-value>localhost</param-value> -->
+ <!-- <param-name>Prefix</param-name> -->
+ <!-- <param-value>/</param-value> -->
<!-- </init-param> -->
- <!-- <init-param> -->
- <!-- <param-name>remotePort</param-name> -->
- <!-- <param-value>9898</param-value> -->
- <!-- </init-param> -->
<!-- </servlet> -->
<!-- <servlet-mapping> -->
- <!-- <servlet-name>WIABProxy</servlet-name> -->
- <!-- <url-pattern>/wiab/*</url-pattern> -->
+ <!-- <servlet-name>WiabSocketIO</servlet-name> -->
+ <!-- <url-pattern>/socket.io/*</url-pattern> -->
<!-- </servlet-mapping> -->
<!-- <servlet> -->
- <!-- <servlet-name>WIABSocket</servlet-name> -->
- <!-- <servlet-class>de.spieleck.servlets.ProxyServlet</servlet-class> -->
+ <!-- <servlet-name>WiabServlets</servlet-name> -->
+ <!-- <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class> -->
<!-- <init-param> -->
- <!-- <param-name>remotePath</param-name> -->
- <!-- <param-value>/wiab/socket.io/</param-value> -->
+ <!-- <param-name>ProxyTo</param-name> -->
+ <!-- <param-value>http://127.0.0.1:9898/</param-value> -->
<!-- </init-param> -->
<!-- <init-param> -->
- <!-- <param-name>remoteServer</param-name> -->
- <!-- <param-value>localhost</param-value> -->
+ <!-- <param-name>Prefix</param-name> -->
+ <!-- <param-value>/</param-value> -->
<!-- </init-param> -->
- <!-- <init-param> -->
- <!-- <param-name>remotePort</param-name> -->
- <!-- <param-value>9898</param-value> -->
- <!-- </init-param> -->
<!-- </servlet> -->
<!-- <servlet-mapping> -->
- <!-- <servlet-name>WIABsocket</servlet-name> -->
- <!-- <url-pattern>/socket.io/*</url-pattern> -->
+ <!-- <servlet-name>WiabServlets</servlet-name> -->
+ <!-- <url-pattern>/wiab/*</url-pattern> -->
<!-- </servlet-mapping> -->
- <servlet>
- <servlet-name>remoteLoggerServiceImpl</servlet-name>
- <servlet-class>com.allen_sauer.gwt.log.server.RemoteLoggerServiceImpl</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>remoteLoggerServiceImpl</servlet-name>
- <url-pattern>/ws/gwt-log</url-pattern>
- </servlet-mapping>
+
</web-app>
Added: trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java
===================================================================
--- trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -0,0 +1,40 @@
+package cc.kune.core.client.state;
+
+import java.util.ArrayList;
+
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.SimpleEventBus;
+
+public class EventBusTester extends SimpleEventBus {
+ private final ArrayList<GwtEvent<?>> all;
+ private GwtEvent<?> lastEvent;
+
+ public EventBusTester() {
+ all = new ArrayList<GwtEvent<?>>();
+ }
+
+ @Override
+ public void fireEvent(final GwtEvent<?> event) {
+ all.add(event);
+ this.lastEvent = event;
+ super.fireEvent(event);
+ }
+
+ public GwtEvent<?> getLastEvent() {
+ return lastEvent;
+ }
+
+ @SuppressWarnings("unchecked")
+ public <T extends GwtEvent<?>> Class<T> getLastEventClass() {
+ return (Class<T>) lastEvent.getClass();
+ }
+
+ public boolean receivedEventOfClass(final Class<? extends GwtEvent<?>> eventClass) {
+ for (final GwtEvent<?> event : all) {
+ if (eventClass.equals(event.getClass())) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
Property changes on: trunk/src/test/java/cc/kune/core/client/state/EventBusTester.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -1,18 +1,16 @@
package cc.kune.core.client.state;
-import static org.junit.Assert.assertTrue;
-
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import cc.kune.common.client.actions.BeforeActionListener;
+import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
+import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
+import cc.kune.core.client.state.ToolChangedEvent.ToolChangedHandler;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.StateAbstractDTO;
-import com.calclab.suco.testing.events.MockedListener;
-import com.calclab.suco.testing.events.MockedListener2;
-import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.rpc.AsyncCallback;
public class StateManagerTest {
@@ -21,41 +19,41 @@
private BeforeActionListener beforeChangeListener1;
private BeforeActionListener beforeChangeListener2;
private ContentProvider contentProvider;
- private MockedListener2<String, String> groupChangeListener;
+ private EventBusTester eventBus;
+ private GroupChangedHandler groupChangeHandler;
private HistoryWrapper history;
private Session session;
private StateAbstractDTO state;
- private MockedListener<StateAbstractDTO> stateChangeListener;
+ private StateChangedHandler stateChangeHandler;
private StateManagerDefault stateManager;
- private MockedListener2<String, String> toolChangeListener;
+ private ToolChangedHandler toolChangeHandler;
@Before
public void before() {
contentProvider = Mockito.mock(ContentProvider.class);
session = Mockito.mock(Session.class);
history = Mockito.mock(HistoryWrapper.class);
- final EventBus eventBus = Mockito.mock(EventBus.class);
+ eventBus = new EventBusTester();
stateManager = new StateManagerDefault(contentProvider, session, history, eventBus);
Mockito.when(session.getUserHash()).thenReturn(HASH);
state = Mockito.mock(StateAbstractDTO.class);
- stateChangeListener = new MockedListener<StateAbstractDTO>();
- groupChangeListener = new MockedListener2<String, String>();
- toolChangeListener = new MockedListener2<String, String>();
+ stateChangeHandler = Mockito.mock(StateChangedHandler.class);
+ groupChangeHandler = Mockito.mock(GroupChangedHandler.class);
+ toolChangeHandler = Mockito.mock(ToolChangedHandler.class);
beforeChangeListener1 = Mockito.mock(BeforeActionListener.class);
beforeChangeListener2 = Mockito.mock(BeforeActionListener.class);
- stateManager.onStateChanged(stateChangeListener);
- stateManager.onGroupChanged(groupChangeListener);
- stateManager.onToolChanged(toolChangeListener);
+ eventBus.addHandler(StateChangedEvent.getType(), stateChangeHandler);
+ eventBus.addHandler(GroupChangedEvent.getType(), groupChangeHandler);
+ eventBus.addHandler(ToolChangedEvent.getType(), toolChangeHandler);
// new NotifyUser(null, null);
}
@Test
public void changeGroupWithNoTool() {
changeState("group1", "group2");
- assertTrue(groupChangeListener.isCalledWithEquals("", "group1", "group1", "group2"));
- assertTrue(toolChangeListener.isCalledWithEquals("", ""));
- assertTrue(groupChangeListener.isCalled(2));
- assertTrue(stateChangeListener.isCalled(2));
+ Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged((GroupChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged((GroupChangedEvent) Mockito.anyObject());
}
private void changeState(final String... tokens) {
@@ -68,43 +66,61 @@
@Test
public void changeStateWithDifferentAndGroupsToolsMustFireListener() {
changeState("group2.tool1", "group1.tool2");
- assertTrue(stateChangeListener.isCalled(2));
- assertTrue(groupChangeListener.isCalledWithEquals("", "group2", "group2", "group1"));
- assertTrue(toolChangeListener.isCalledWithEquals("", "tool1", "tool1", "tool2"));
+ Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged((GroupChangedEvent) Mockito.anyObject());
+ Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged((ToolChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group2"));
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("group2", "group1"));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1"));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("tool1", "tool2"));
}
@Test
public void changeStateWithDifferentGroupsMustFireListener() {
changeState("group1.tool1", "group2.tool1");
- assertTrue(stateChangeListener.isCalled(2));
- assertTrue(groupChangeListener.isCalledWithEquals("", "group1", "group1", "group2"));
- assertTrue(toolChangeListener.isCalledWithEquals("", "tool1"));
+ // assertTrue(stateChangeListener.isCalled(2));
+ // assertTrue(groupChangeListener.isCalledWithEquals("", "group1",
+ // "group1", "group2"));
+ // assertTrue(toolChangeListener.isCalledWithEquals("", "tool1"));
+ Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(2)).onGroupChanged((GroupChangedEvent) Mockito.anyObject());
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged((ToolChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group1"));
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("group1", "group2"));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1"));
+
}
@Test
public void changeStateWithDifferentToolsMustFireListener() {
changeState("group1.tool1", "group1.tool2");
- assertTrue(stateChangeListener.isCalled(2));
- assertTrue(toolChangeListener.isCalledWithEquals("", "tool1", "tool1", "tool2"));
- assertTrue(groupChangeListener.isCalledWithEquals("", "group1"));
+ Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged((GroupChangedEvent) Mockito.anyObject());
+ Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged((ToolChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group1"));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1"));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("tool1", "tool2"));
}
@Test
public void changeToNoTool() {
changeState("group1.tool1", "group1");
- assertTrue(groupChangeListener.isCalledWithEquals("", "group1"));
- assertTrue(toolChangeListener.isCalledWithEquals("", "tool1", "tool1", ""));
- assertTrue(groupChangeListener.isCalledOnce());
- assertTrue(stateChangeListener.isCalled(2));
+ Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged((GroupChangedEvent) Mockito.anyObject());
+ Mockito.verify(toolChangeHandler, Mockito.times(2)).onToolChanged((ToolChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group1"));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1"));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("tool1", ""));
}
@Test
public void changeToSameToken() {
changeState("group1.tool1", "group1.tool1");
- assertTrue(groupChangeListener.isCalledWithEquals("", "group1"));
- assertTrue(toolChangeListener.isCalledWithEquals("", "tool1"));
- assertTrue(groupChangeListener.isCalledOnce());
- assertTrue(stateChangeListener.isCalled(2));
+ Mockito.verify(stateChangeHandler, Mockito.times(2)).onStateChanged((StateChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged((GroupChangedEvent) Mockito.anyObject());
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged((ToolChangedEvent) Mockito.anyObject());
+ Mockito.verify(groupChangeHandler, Mockito.times(1)).onGroupChanged(new GroupChangedEvent("", "group1"));
+ Mockito.verify(toolChangeHandler, Mockito.times(1)).onToolChanged(new ToolChangedEvent("", "tool1"));
}
private String confBeforeStateChangeListeners(final boolean value, final boolean value2) {
Modified: trunk/src/test/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenterTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenterTest.java 2011-01-29 03:38:12 UTC (rev 1227)
+++ trunk/src/test/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenterTest.java 2011-01-31 18:51:35 UTC (rev 1228)
@@ -6,7 +6,7 @@
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
-import org.mockito.internal.verification.api.VerificationMode;
+import org.mockito.verification.VerificationMode;
import org.ourproject.kune.platf.client.i18n.Resources;
import org.ourproject.kune.platf.client.ui.rte.img.RTEImgResources;
1
0
Author: vjrj_
Date: 2011-01-29 04:38:12 +0100 (Sat, 29 Jan 2011)
New Revision: 1227
Added:
trunk/README_FIRST
trunk/src/main/java/cc/kune/chat/
trunk/src/main/java/cc/kune/chat/Chat.gwt.xml
trunk/src/main/java/cc/kune/chat/client/
trunk/src/main/java/cc/kune/chat/client/ChatClient.java
trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java
trunk/src/main/java/cc/kune/chat/client/ShowChatDialogEvent.java
trunk/src/main/java/cc/kune/chat/client/ToggleShowChatDialogEvent.java
trunk/src/main/java/cc/kune/common/client/actions/ui/ActionSimplePanel.java
trunk/src/main/java/cc/kune/common/client/ui/AbstractAtBorderPopupPanel.java
trunk/src/main/java/cc/kune/common/client/ui/PopupBottomPanel.java
trunk/src/main/java/cc/kune/common/client/ui/PopupTopPanel.java
trunk/src/main/java/cc/kune/core/client/logs/Log.java
trunk/src/main/java/cc/kune/core/client/resources/icons/
trunk/src/main/java/cc/kune/core/client/resources/icons/IconBorrarCssResource.java
trunk/src/main/java/cc/kune/core/client/resources/icons/IconConstants.java
trunk/src/main/java/cc/kune/core/client/resources/icons/IconResources.java
trunk/src/main/java/cc/kune/core/client/resources/icons/add-green.png
trunk/src/main/java/cc/kune/core/client/resources/icons/arrow_in.png
trunk/src/main/java/cc/kune/core/client/resources/icons/arrow_out.png
trunk/src/main/java/cc/kune/core/client/resources/icons/bug.png
trunk/src/main/java/cc/kune/core/client/resources/icons/del-green.png
trunk/src/main/java/cc/kune/core/client/resources/icons/e-icon.gif
trunk/src/main/java/cc/kune/core/client/resources/icons/group-home.png
trunk/src/main/java/cc/kune/core/client/resources/icons/info.png
trunk/src/main/java/cc/kune/core/client/resources/icons/kicon.css
trunk/src/main/java/cc/kune/core/client/resources/icons/kune-icon16.png
trunk/src/main/java/cc/kune/core/client/resources/icons/language.png
trunk/src/main/java/cc/kune/core/client/resources/icons/prefs.png
trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java
trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java
trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java
trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java
Removed:
trunk/pom.xml.dic11
trunk/pom.xml.net
trunk/src/main/java/cc/kune/common/client/ui/PopupPanelBottomCentered.java
trunk/src/main/java/cc/kune/common/client/ui/PopupPanelTopCentered.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/IconCssResource.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgConstants.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgCssResource.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgResources.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/add-green.png
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/arrow_in.png
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/arrow_out.png
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/bug.png
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/del-green.png
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/group-home.png
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/info.png
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/kimg.css
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/kune-icon16.png
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/language.png
trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/prefs.png
trunk/src/main/java/org/ourproject/kune/workspace/client/wave/
Modified:
trunk/.classpath
trunk/pom.xml
trunk/script/mvn-eclipse.sh
trunk/src/main/java/cc/kune/Kune.gwt.xml
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtGuiProvider.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java
trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java
trunk/src/main/java/cc/kune/common/client/actions/ui/ActionFlowPanel.java
trunk/src/main/java/cc/kune/common/public/kune-common.css
trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
trunk/src/main/java/cc/kune/core/client/CoreGinjector.java
trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java
trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java
trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierViewImpl.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsViewImpl.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java
trunk/src/main/java/cc/kune/core/client/state/AccessRightsClientManager.java
trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java
trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java
trunk/src/main/java/cc/kune/core/public/ws.css
trunk/src/main/java/cc/kune/core/public/ws.html
trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java
trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java
trunk/src/main/java/org/ourproject/kune/chat/KuneChat.gwt.xml
trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatConnectionOptions.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java
trunk/src/main/java/org/ourproject/kune/chat/client/ctx/room/AddRoomPanel.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java
trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java
trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java
trunk/src/main/java/org/ourproject/kune/platf/KunePlatform.gwt.xml
trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractGuiItem.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/IconLabelEditable.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/gridmenu/GridDropConfiguration.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/gridmenu/GridMenuPanel.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/noti/NotifyUser.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenter.java
trunk/src/main/java/org/ourproject/kune/platf/server/init/DatabaseInitializer.java
trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java
trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java
trunk/src/main/java/org/ourproject/kune/workspace/KuneWorkspace.gwt.xml
trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/ActionsModule.java
trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java
trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/maxmin/MaxMinWorkspacePresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/hello/HelloWorldModule.java
trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/SiteOptionsI18nTranslatorAction.java
trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardFirstForm.java
trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardFrdForm.java
trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardTrdForm.java
trunk/src/main/java/org/ourproject/kune/workspace/client/options/GroupOptionsPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/options/UserOptionsPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteoptions/SiteOptionsPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteusermenu/SiteUserOptionsPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipateAction.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/UnjoinAction.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/other/AddAsBuddieHeaderButton.java
trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsBackManagerImpl.java
trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsThemeManager.java
trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsThemeSelectorPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/title/RenameAction.java
trunk/src/main/java/org/ourproject/kune/workspace/client/upload/FileUploaderPresenter.java
trunk/src/main/webapp/WEB-INF/web.xml
Log:
NEW - # 17: emite chat update
http://kune.ourproject.org/issues/ticket/17
NEW - # 14: Site bar update
http://kune.ourproject.org/issues/ticket/14
Modified: trunk/.classpath
===================================================================
--- trunk/.classpath 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/.classpath 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,111 +1,104 @@
-<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry including="**/*.java" kind="src" output="target/test-classes" path="src/test/java"/>
- <classpathentry including="**/*.java" kind="src" path="src/main/java"/>
- <classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
- <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar" sourcepath="M2_REPO/javax/activation/activation/1.1/activation-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar" sourcepath="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.1/jta-1.1.jar" sourcepath="M2_REPO/javax/transaction/jta/1.1/jta-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar" sourcepath="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar" sourcepath="M2_REPO/javax/servlet/servlet-api/2.4/servlet-api-2.4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar" sourcepath="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA.jar" sourcepath="M2_REPO/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar" sourcepath="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"/>
- <classpathentry kind="var" path="M2_REPO/c3p0/c3p0/0.9.1.2/c3p0-0.9.1.2.jar" sourcepath="M2_REPO/c3p0/c3p0/0.9.1.2/c3p0-0.9.1.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3.jar" sourcepath="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/cobogw/gwt/cobogw/1.3.1/cobogw-1.3.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2.jar" sourcepath="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar" sourcepath="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.1.1/commons-fileupload-1.1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.2/commons-io-1.2.jar" sourcepath="M2_REPO/commons-io/commons-io/1.2/commons-io-1.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5.jar" sourcepath="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar" sourcepath="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0.jar" sourcepath="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar" sourcepath="M2_REPO/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar" sourcepath="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/calclab/emite/emite/0.4.7/emite-0.4.7.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3.jar" sourcepath="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/freemarker/freemarker/2.3.8/freemarker-2.3.8.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/googlecode/gwt/inject/gin/r137/gin-r137.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/guava/guava-gwt/r07/guava-gwt-r07.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/code/guice/guice/2.1-SNAPSHOT-r1160/guice-2.1-SNAPSHOT-r1160.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/code/guice/guice-servlet/2.0.1/guice-servlet-2.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/adamtacy/gwt-fx/r464/gwt-fx-r464.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/log/gwt-log/gwt-log/3.0.1/gwt-log-3.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.0/gwt-util-src-0.3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/voices/gwt-voices/gwt-voices/1.6.0/gwt-voices-1.6.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtext/gwtext/2.0.5/gwtext-2.0.5.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtextux/gwtextux/0.4.0.924/gwtextux-0.4.0.924.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp/0.5-SNAPSHOT/gwtp-0.5-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/extjs/gxt/2.2.1/gxt-2.2.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.20070617/h2-1.0.20070617.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate/3.2.1.ga/hibernate-3.2.1.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate/3.2.1.ga/hibernate-3.2.1.ga-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-tools/3.2.3.GA/hibernate-tools-3.2.3.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-validator/4.0.2.GA/hibernate-validator-4.0.2.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-validator/4.0.2.GA/hibernate-validator-4.0.2.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.3/jaxb-impl-2.1.3.jar" sourcepath="M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.3/jaxb-impl-2.1.3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2.jar" sourcepath="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/jmagick/jmagick/6.2.6-0/jmagick-6.2.6-0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jruby/jruby-complete/1.5.1/jruby-complete-1.5.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jruby/rack/jruby-rack/1.0.3/jruby-rack-1.0.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15.jar" sourcepath="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47.jar" sourcepath="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/jtidy/r8-20060801/jtidy-r8-20060801.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/4.8.1/junit-4.8.1.jar" sourcepath="M2_REPO/junit/junit/4.8.1/junit-4.8.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-core/1.7.0/liquibase-core-1.7.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-plugin/1.7.0.0/liquibase-plugin-1.7.0.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16.jar" sourcepath="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1.jar" sourcepath="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0.jar" sourcepath="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-all/1.6/mockito-all-1.6.jar"/>
- <classpathentry kind="var" path="M2_REPO/mysql/mysql-connector-java/5.1.13/mysql-connector-java-5.1.13.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-gwt/0.3.1/proto-gwt-0.3.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smack/smack/3.0.4/smack-3.0.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smackx/smackx/3.0.4/smackx-3.0.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smackx/debugger/smackx-debugger/3.0.4/smackx-debugger-3.0.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/calclab/suco/0.6.5/suco-0.6.5.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5.jar" sourcepath="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/wideplay/warp-persist/2.0-SNAPSHOT/warp-persist-2.0-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/waveinabox-server-custom/0.3.6/waveinabox-server-custom-0.3.6.jar"/>
- <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar" sourcepath="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/xwiki/platform/xwiki-web-gwt-dom/2.3-rc-1/xwiki-web-gwt-dom-2.3-rc-1.jar" sourcepath="M2_REPO/org/xwiki/platform/xwiki-web-gwt-dom/2.3-rc-1/xwiki-web-gwt-dom-2.3-rc-1-sources.jar"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry including="**/*.java" kind="src" path="target/generated-sources/apt"/>
- <classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
- <classpathentry kind="src" path=".apt_generated">
- <attributes>
- <attribute name="optional" value="true"/>
- </attributes>
- </classpathentry>
- <classpathentry kind="output" path="target/kune-0.0.7/WEB-INF/classes"/>
-</classpath>
+ <classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
+ <classpathentry kind="src" path="src/main/java" including="**/*.java"/>
+ <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
+ <classpathentry kind="output" path="target/kune-0.0.7/WEB-INF/classes"/>
+ <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar" sourcepath="M2_REPO/javax/activation/activation/1.1/activation-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar" sourcepath="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.1/jta-1.1.jar" sourcepath="M2_REPO/javax/transaction/jta/1.1/jta-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar" sourcepath="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar" sourcepath="M2_REPO/javax/servlet/servlet-api/2.4/servlet-api-2.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar" sourcepath="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA.jar" sourcepath="M2_REPO/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar" sourcepath="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/c3p0/c3p0/0.9.1.2/c3p0-0.9.1.2.jar" sourcepath="M2_REPO/c3p0/c3p0/0.9.1.2/c3p0-0.9.1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3.jar" sourcepath="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/cobogw/gwt/cobogw/1.3.1/cobogw-1.3.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2.jar" sourcepath="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar" sourcepath="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.1.1/commons-fileupload-1.1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.2/commons-io-1.2.jar" sourcepath="M2_REPO/commons-io/commons-io/1.2/commons-io-1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5.jar" sourcepath="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar" sourcepath="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0.jar" sourcepath="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar" sourcepath="M2_REPO/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar" sourcepath="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/calclab/emite/emite/r1694/emite-r1694.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3.jar" sourcepath="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/freemarker/freemarker/2.3.8/freemarker-2.3.8.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/googlecode/gwt/inject/gin/r137/gin-r137.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/guava/guava-gwt/r07/guava-gwt-r07.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/code/guice/guice/2.1-SNAPSHOT-r1160/guice-2.1-SNAPSHOT-r1160.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/code/guice/guice-servlet/2.0.1/guice-servlet-2.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/adamtacy/gwt-fx/r464/gwt-fx-r464.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/log/gwt-log/gwt-log/3.0.1/gwt-log-3.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.0/gwt-util-src-0.3.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/voices/gwt-voices/gwt-voices/1.6.0/gwt-voices-1.6.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtext/gwtext/2.0.5/gwtext-2.0.5.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtextux/gwtextux/0.4.0.924/gwtextux-0.4.0.924.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp/0.5-SNAPSHOT/gwtp-0.5-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/extjs/gxt/2.2.1/gxt-2.2.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.20070617/h2-1.0.20070617.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/calclab/emite/hablar/r1694/hablar-r1694.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate/3.2.1.ga/hibernate-3.2.1.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate/3.2.1.ga/hibernate-3.2.1.ga-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-tools/3.2.3.GA/hibernate-tools-3.2.3.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-validator/4.0.2.GA/hibernate-validator-4.0.2.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-validator/4.0.2.GA/hibernate-validator-4.0.2.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.3/jaxb-impl-2.1.3.jar" sourcepath="M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.3/jaxb-impl-2.1.3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2.jar" sourcepath="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jmagick/jmagick/6.2.6-0/jmagick-6.2.6-0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jruby/jruby-complete/1.5.1/jruby-complete-1.5.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jruby/rack/jruby-rack/1.0.3/jruby-rack-1.0.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15.jar" sourcepath="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47.jar" sourcepath="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/jtidy/r8-20060801/jtidy-r8-20060801.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/4.8.1/junit-4.8.1.jar" sourcepath="M2_REPO/junit/junit/4.8.1/junit-4.8.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-core/1.7.0/liquibase-core-1.7.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-plugin/1.7.0.0/liquibase-plugin-1.7.0.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16.jar" sourcepath="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1.jar" sourcepath="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0.jar" sourcepath="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-all/1.6/mockito-all-1.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/mysql/mysql-connector-java/5.1.13/mysql-connector-java-5.1.13.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-gwt/0.3.1/proto-gwt-0.3.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smack/smack/3.0.4/smack-3.0.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smackx/smackx/3.0.4/smackx-3.0.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smackx/debugger/smackx-debugger/3.0.4/smackx-debugger-3.0.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5.jar" sourcepath="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/wideplay/warp-persist/2.0-SNAPSHOT/warp-persist-2.0-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/waveinabox-server-custom/0.3.6/waveinabox-server-custom-0.3.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar" sourcepath="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/xwiki/platform/xwiki-web-gwt-dom/2.3-rc-1/xwiki-web-gwt-dom-2.3-rc-1.jar" sourcepath="M2_REPO/org/xwiki/platform/xwiki-web-gwt-dom/2.3-rc-1/xwiki-web-gwt-dom-2.3-rc-1-sources.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="src" path="target/generated-sources/apt" including="**/*.java"/> <classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
+</classpath>
\ No newline at end of file
Added: trunk/README_FIRST
===================================================================
--- trunk/README_FIRST (rev 0)
+++ trunk/README_FIRST 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,2 @@
+WARNING
+Please note that we are doing a big refactorization of Kune to addapt it to Wave. Also we are starting to use other libraries (for instance gin for IoC instead of our old Suco library). Then don't expect to much of /trunk/ because of that (for our old more stable code see tag 0.0.6-pre-wiab).
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/pom.xml 2011-01-29 03:38:12 UTC (rev 1227)
@@ -274,11 +274,11 @@
<artifactId>dozer</artifactId>
<version>4.0</version>
</dependency>
- <dependency>
+ <!-- <dependency>
<groupId>com.calclab</groupId>
<artifactId>suco</artifactId>
<version>0.6.5</version>
- </dependency>
+ </dependency> -->
<dependency>
<groupId>jmagick</groupId>
<artifactId>jmagick</artifactId>
@@ -296,9 +296,14 @@
<dependency>
<groupId>com.calclab.emite</groupId>
<artifactId>emite</artifactId>
- <version>0.6.0-RC1</version>
+ <version>r1694</version>
</dependency>
<dependency>
+ <groupId>com.calclab.emite</groupId>
+ <artifactId>hablar</artifactId>
+ <version>r1694</version>
+ </dependency>
+ <dependency>
<groupId>org.jivesoftware.smack</groupId>
<artifactId>smack</artifactId>
<version>3.0.4</version>
Deleted: trunk/pom.xml.dic11
===================================================================
--- trunk/pom.xml.dic11 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/pom.xml.dic11 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,894 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.ourproject</groupId>
- <artifactId>kune</artifactId>
- <packaging>jar</packaging>
- <version>0.0.6</version>
- <description>
- kune free/open/libre collaboration platform
- </description>
- <name>kune</name>
- <url>http://kune.ourproject.org</url>
- <properties>
- <!-- Available versions: http://repo1.maven.org/maven2/com/google/gwt/gwt-dev/
- or also in: http://google-web-toolkit.googlecode.com/svn/2.1.0.M2/gwt/maven/
- and similars. -->
- <!-- Convenience property to set the GWT version -->
- <gwtVersion>2.1.0</gwtVersion>
- <!-- GWT needs at least java 1.5 -->
- <maven.compiler.source>1.6</maven.compiler.source>
- <maven.compiler.target>1.6</maven.compiler.target>
- <webappDirectory>${project.build.directory}/${project.build.finalName}</webappDirectory>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- <dependencies>
- <!-- guice -->
- <dependency>
- <groupId>com.google.code.guice</groupId>
- <artifactId>guice</artifactId>
- <version>2.0.1</version>
- </dependency>
- <dependency>
- <groupId>com.google.code.guice</groupId>
- <artifactId>guice-servlet</artifactId>
- <version>2.0.1</version>
- </dependency>
- <!-- GWT dependencies (from maven "central" repo) -->
- <dependency>
- <groupId>com.google.gwt</groupId>
- <artifactId>gwt-servlet</artifactId>
- <version>${gwtVersion}</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>com.google.gwt</groupId>
- <artifactId>gwt-user</artifactId>
- <version>${gwtVersion}</version>
- <type>jar</type>
- <scope>provided</scope>
- </dependency>
- <!-- <dependency> <groupId>com.extjs</groupId> <artifactId>gxt</artifactId>
- <version>1.0-beta2</version> </dependency> -->
- <dependency>
- <groupId>org.cobogw</groupId>
- <artifactId>gwt</artifactId>
- <version>1.2.2</version>
- </dependency>
- <dependency>
- <groupId>com.gwtext</groupId>
- <artifactId>gwtext</artifactId>
- <version>2.0.5</version>
- </dependency>
- <dependency>
- <groupId>com.gwtextux</groupId>
- <artifactId>gwtextux</artifactId>
- <version>0.4.0.924</version>
- </dependency>
- <dependency>
- <groupId>com.allen_sauer.gwt.log.gwt-log</groupId>
- <artifactId>gwt-log</artifactId>
- <version>3.0.1</version>
- </dependency>
- <dependency>
- <groupId>com.allen_sauer.gwt.voices.gwt-voices</groupId>
- <artifactId>gwt-voices</artifactId>
- <version>1.6.0</version>
- </dependency>
- <!-- utilities -->
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.14</version>
- </dependency>
- <dependency>
- <groupId>net.sf.dozer</groupId>
- <artifactId>dozer</artifactId>
- <version>4.0</version>
- </dependency>
- <dependency>
- <groupId>com.calclab</groupId>
- <artifactId>suco</artifactId>
- <scope>compile</scope>
- <version>0.6.5</version>
- </dependency>
- <dependency>
- <groupId>jmagick</groupId>
- <artifactId>jmagick</artifactId>
- <version>6.2.6-0</version>
- </dependency>
- <dependency>
- <groupId>org.xwiki.platform</groupId>
- <artifactId>xwiki-web-gwt-dom</artifactId>
- <version>2.3-rc-1</version>
- <!-- <version>2.0-SNAPSHOT-g164</version> -->
- <!-- <version>2.0-SNAPSHOT</version> -->
- <!-- <version>2.0-SNAPSHOT-g20s</version> -->
- </dependency>
- <!-- xmpp -->
- <dependency>
- <groupId>com.calclab.emite</groupId>
- <artifactId>emite</artifactId>
- <version>0.4.7</version>
- </dependency>
- <dependency>
- <groupId>org.jivesoftware.smack</groupId>
- <artifactId>smack</artifactId>
- <version>3.0.4</version>
- </dependency>
- <dependency>
- <groupId>org.jivesoftware.smackx</groupId>
- <artifactId>smackx</artifactId>
- <version>3.0.4</version>
- </dependency>
- <dependency>
- <groupId>org.jivesoftware.smackx.debugger</groupId>
- <artifactId>smackx-debugger</artifactId>
- <version>3.0.4</version>
- </dependency>
- <!-- mysql -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.0.5</version>
- </dependency>
- <!-- hibernate JPA -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-core</artifactId>
- <version>3.3.1.GA</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-validator</artifactId>
- <version>3.1.0.GA</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-annotations</artifactId>
- <version>3.4.0.GA</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-commons-annotations</artifactId>
- <version>3.3.0.ga</version>
- </dependency>
- <!-- <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId>
- <version>3.3.1.GA</version> </dependency> -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-search</artifactId>
- <version>3.1.0.GA</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- <version>3.4.0.GA</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-tools</artifactId>
- <version>3.2.3.GA</version>
- </dependency>
- <dependency>
- <groupId>c3p0</groupId>
- <artifactId>c3p0</artifactId>
- <version>0.9.1.2</version>
- </dependency>
- <dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- <version>2.0</version>
- </dependency>
- <dependency>
- <groupId>com.wideplay</groupId>
- <artifactId>warp-persist</artifactId>
- <version>2.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.5.2</version>
- </dependency>
- <!-- REST: xml and json (stax) -->
- <dependency>
- <groupId>com.thoughtworks.xstream</groupId>
- <artifactId>xstream</artifactId>
- <version>1.2.2</version>
- </dependency>
- <dependency>
- <groupId>stax</groupId>
- <artifactId>stax-api</artifactId>
- <version>1.0.1</version>
- </dependency>
- <dependency>
- <groupId>org.codehaus.jettison</groupId>
- <artifactId>jettison</artifactId>
- <version>1.0-RC2</version>
- </dependency>
- <dependency>
- <groupId>net.sf.json-lib</groupId>
- <artifactId>json-lib</artifactId>
- <version>2.1</version>
- <classifier>jdk15</classifier>
- </dependency>
- <dependency>
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
- <version>3.2</version>
- </dependency>
- <!-- File upload -->
- <dependency>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils</artifactId>
- <version>1.7.0</version>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>1.2</version>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>1.1</version>
- </dependency>
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>1.1.1</version>
- </dependency>
- <!-- db upgrades -->
- <dependency>
- <groupId>org.liquibase</groupId>
- <artifactId>liquibase-core</artifactId>
- <version>1.7.0</version>
- </dependency>
- <dependency>
- <groupId>org.liquibase</groupId>
- <artifactId>liquibase-plugin</artifactId>
- <version>1.7.0.0</version>
- </dependency>
- <!-- jetty dependencies -->
- <dependency>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>jetty-util</artifactId>
- <version>6.1.11</version>
- <!-- <version>7.0.0.pre5</version> -->
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>maven-jetty-plugin</artifactId>
- <!-- <artifactId>jetty-maven-plugin</artifactId> -->
- <!-- <version>7.0.0.1beta0</version> -->
- <version>6.1.11</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.4</version>
- <scope>provided</scope>
- </dependency>
- <!-- testing dependencies -->
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- <scope>test</scope>
- <version>1.6</version>
- </dependency>
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <version>1.0.20070617</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.7</version>
- <scope>test</scope>
- </dependency>
- <!-- <dependency> -->
- <!-- <groupId>org.openqa.selenium.client-drivers</groupId> -->
- <!-- <artifactId>selenium-java-client-driver</artifactId> -->
- <!-- <version>1.0-beta-1</version> -->
- <!-- <scope>test</scope> -->
- <!-- </dependency> -->
- <!-- public side -->
- <dependency>
- <groupId>org.jruby.rack</groupId>
- <artifactId>jruby-rack</artifactId>
- <version>0.9.4</version>
- </dependency>
- <!-- wave -->
- <dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>kune-wave-server</artifactId>
- <version>0.0.2.2</version>
- </dependency>
- <dependency>
- <groupId>commons-cli</groupId>
- <artifactId>commons-cli</artifactId>
- <version>1.2</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- <version>1.3</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>dom4j</groupId>
- <artifactId>dom4j</artifactId>
- <version>1.6.1</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>com.google.code.guice</groupId>
- <artifactId>guice-assistedinject</artifactId>
- <version>2.0</version>
- </dependency>
- <dependency>
- <groupId>jline</groupId>
- <artifactId>jline</artifactId>
- <version>0.9.94</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.gnu.inet</groupId>
- <artifactId>libidn</artifactId>
- <version>1.15</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>com.google.protobuf</groupId>
- <artifactId>protobuf-java</artifactId>
- <version>2.1.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>xpp3</groupId>
- <artifactId>xpp3</artifactId>
- <version>1.1.4c</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>xpp3</groupId>
- <artifactId>xpp3_xpath</artifactId>
- <version>1.1.4c</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>aopalliance</groupId>
- <artifactId>aopalliance</artifactId>
- <version>1.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>org.wave-protocol</groupId>
- <artifactId>xmpp</artifactId>
- <version>1.0.0</version>
- </dependency>
- <dependency>
- <groupId>org.wave-protocol</groupId>
- <artifactId>whack</artifactId>
- <version>1.0.0</version>
- </dependency>
- <dependency>
- <groupId>com.google.common</groupId>
- <artifactId>collect</artifactId>
- <version>1.0-rc2</version>
- </dependency>
- </dependencies>
- <distributionManagement>
- <repository>
- <id>kune.ourproject.org</id>
- <url>scpexe://kune.ourproject.org/home/groups/kune/htdocs/mavenrepo/</url>
- </repository>
- </distributionManagement>
- <!-- http://gwt-maven.googlecode.com/svn/docs/maven-googlewebtoolkit2-plugin/ind… -->
- <pluginRepositories>
- <!-- <pluginRepository> <id>gwt-maven</id> <url>http://gwt-maven.googlecode.com/svn/trunk/mavenrepo</url>
- </pluginRepository> -->
- <pluginRepository>
- <id>Codehaus Snapshots</id>
- <url>http://snapshots.repository.codehaus.org/</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- <releases>
- <enabled>true</enabled> <!-- Workaround for MNG-2974, see note below -->
- </releases>
- </pluginRepository>
- <pluginRepository>
- <id>gwt-plugin-repo</id>
- <url>http://google-web-toolkit.googlecode.com/svn/2.1.0.M3/gwt/maven</url>
- <name>Google Web Toolkit Plugin Repository</name>
- </pluginRepository>
- </pluginRepositories>
- <repositories>
- <repository>
- <id>guice-maven</id>
- <name>guice maven</name>
- <url>http://guice-maven.googlecode.com/svn/trunk</url>
- </repository>
- <repository>
- <id>Codehaus Snapshots</id>
- <url>http://snapshots.repository.codehaus.org/</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
- <repository>
- <id>repository.jboss.org</id>
- <name>JBoss Maven Repository</name>
- <url>http://repository.jboss.org/maven2</url>
- <layout>default</layout>
- </repository>
- <repository>
- <id>dyndns-repo</id>
- <url>http://maven.dyndns.org/2</url>
- </repository>
- <repository>
- <id>gwt-maven</id>
- <url>
- http://gwt-maven.googlecode.com/svn/trunk/mavenrepo/
- </url>
- </repository>
- <repository>
- <id>kune-maven</id>
- <url>http://kune.ourproject.org/mavenrepo/</url>
- </repository>
- <repository>
- <id>gwtext</id>
- <url>http://www.gwt-ext.com/maven2/</url>
- </repository>
- <repository>
- <id>google-maven-snapshot-repository</id>
- <name>Google Maven Snapshot Repository</name>
- <url>https://oss.sonatype.org/content/repositories/google-snapshots/</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>openqa.org</id>
- <name>Openqa Release Repository</name>
- <url>http://archiva.openqa.org/repository/releases</url>
- <layout>default</layout>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- <releases>
- <enabled>true</enabled>
- </releases>
- </repository>
- <repository>
- <id>openqa.org snapshots</id>
- <name>Openqa Snapshot Repository</name>
- <url>http://archiva.openqa.org/repository/snapshots</url>
- <layout>default</layout>
- <snapshots>
- <enabled>true</enabled>
- <updatePolicy>daily</updatePolicy>
- <checksumPolicy>ignore</checksumPolicy>
- </snapshots>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
- <repository>
- <id>xwiki-releases</id>
- <name>XWiki Maven2 Remote Repository for Releases</name>
- <url>http://maven.xwiki.org/releases</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>xwiki</id>
- <name>XWiki Repository</name>
- <url>http://maven.xwiki.org/snapshots</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- <updatePolicy>daily</updatePolicy>
- <checksumPolicy>warn</checksumPolicy>
- </snapshots>
- </repository>
- </repositories>
- <issueManagement>
- <system>kune issues list at ourproject.org</system>
- <url>http://kune.ourproject.org/issues/</url>
- </issueManagement>
- <developers>
- <developer>
- <id>dani</id>
- <name>Daniel Gómez Blasco</name>
- <email>danigb(a)gmail.com</email>
- </developer>
- <developer>
- <name>Samer Hassan</name>
- <email>samer2004(a)gmail.com</email>
- </developer>
- <developer>
- <name>Vicente J. Ruiz Jurado</name>
- <email>vjrj(a)ourproject.org</email>
- </developer>
- </developers>
- <scm>
- <url>svn://scm.ourproject.org/svnroot/kune/trunk</url>
- </scm>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.3</version>
- <configuration>
- <forkMode>pertest</forkMode>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.6</source>
- <target>1.6</target>
- <!-- Uncomment and run mvn with -X -e if we have same compile problems
- <compilerArgument>-verbose</compilerArgument> <fork>true</fork> <verbose>true</verbose> -->
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>gwt-maven-plugin</artifactId>
- <!--<version>1.2</version> -->
- <version>2.1.0</version>
- <executions>
- <execution>
- <id>test</id>
- <goals>
- <goal>test</goal>
- <!-- <goal>i18n</goal> -->
- <!-- <goal>generateAsync</goal> -->
- </goals>
- </execution>
- <execution>
- <id>gwtcompile</id><phase>prepare-package</phase>
- <goals>
- <goal>compile</goal>
- <!-- http://mojo.codehaus.org/gwt-maven-plugin/user-guide/library.html -->
- <goal>resources</goal>
- </goals>
- </execution>
- <execution>
- <configuration>
- <inplace>true</inplace>
- <!-- <extraJvmArgs>-Xmx512M</extraJvmArgs> -->
- <soyc>false</soyc>
- <style>OBF</style>
- <localWorkers>2</localWorkers>
- <copyWebapp>true</copyWebapp>
- </configuration>
- <goals>
- <!-- gwt:* goals to be executed during build -->
- <goal>compile</goal>
- <!-- http://mojo.codehaus.org/gwt-maven-plugin/user-guide/library.html -->
- <goal>resources</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <generateDirectory>${project.build.directory}/generated-sources/gwt</generateDirectory>
- <gen>${project.build.directory}/generated</gen>
- <productionMode>true</productionMode>
- <!--<extraJvmArgs>-Xmx512m -verbose</extraJvmArgs> -->
- <logLevel>INFO</logLevel>
- <style>OBF</style>
- <localWorkers>2</localWorkers>
- <!--<mode>htmlunit</mode> -->
- <hostedWebapp>${webappDirectory}</hostedWebapp>
- <runTarget>org.ourproject.kune.app.Kune/ws.html?log_level=DEBUG</runTarget>
- <gwt.module>org.ourproject.kune.app.Kune</gwt.module>
- <!-- <webappDirectory>${basedir}/war</webappDirectory> -->
- <inplace>true</inplace>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-war-plugin</artifactId>
- <version>2.1</version>
- <executions>
- <execution>
- <phase>compile</phase>
- <goals>
- <goal>exploded</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <webappDirectory>${webappDirectory}</webappDirectory>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-eclipse-plugin</artifactId>
- <version>2.7</version>
- <configuration>
- <downloadSources>true</downloadSources>
- <downloadJavadocs>false</downloadJavadocs>
- <wtpversion>2.0</wtpversion>
- <additionalBuildcommands>
- <buildCommand>
- <name>com.google.gwt.eclipse.core.gwtProjectValidator</name>
- </buildCommand>
- </additionalBuildcommands>
- <additionalProjectnatures>
- <projectnature>org.eclipse.ajdt.ui.ajnature</projectnature>
- <projectnature>com.google.gwt.eclipse.core.gwtNature</projectnature>
- </additionalProjectnatures>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-javadoc-plugin</artifactId>
- <version>2.7</version>
- <executions>
- <execution>
- <id>javadoc-jar</id>
- <phase>package</phase>
- <goals>
- <goal>jar</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- <version>2.1.2</version>
- <executions>
- <execution>
- <id>attach-sources</id>
- <phase>package</phase>
- <goals>
- <goal>jar-no-fork</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.mortbay.jetty</groupId>
- <!-- <artifactId>jetty-maven-plugin</artifactId> -->
- <!-- <version>7.0.0.1beta0</version> -->
- <artifactId>maven-jetty-plugin</artifactId>
- <version>6.1.14</version>
- <configuration>
- <contextPath>/</contextPath>
- <!-- <webAppSourceDirectory>war</webAppSourceDirectory> -->
- <!-- <tmpDir>war</tmpDir> -->
- <reload>manual</reload>
- <scanIntervalSeconds>0</scanIntervalSeconds>
- <!-- <scanTargets> -->
- <!-- <scanTarget>${basedir}/war</scanTarget> -->
- <!-- </scanTargets> -->
- </configuration>
- </plugin>
- <!-- <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>deb-maven-plugin</artifactId>
- <version>1.0-SNAPSHOT</version> <configuration> <description>kune free/open/libre
- collaboration platform</description> <maintainer>Kune Development Team <kune-devel(a)lists.ourproject.org></maintainer>
- <section>web</section> <priority>optional</priority> <architecture>all</architecture>
- </configuration> <executions> <execution> <goals> <goal>deb</goal> </goals>
- </execution> </executions> </plugin> -->
- <plugin>
- <groupId>org.liquibase</groupId>
- <artifactId>liquibase-plugin</artifactId>
- <version>1.7.0.0</version>
- <executions>
- <execution>
- <phase>process-resources</phase>
- <configuration>
- <changeLogFile>
- src/main/resources/db/liquibase_changelog.xml </changeLogFile>
- <driver>com.mysql.jdbc.Driver</driver>
- <url>jdbc:mysql://localhost/kune_dev</url>
- <username>kune</username>
- <password>db4kune</password>
- <verbose>true</verbose>
- </configuration>
- <!-- <configuration> <verbose>true</verbose> <propertiesFile>
- src/main/resources/db/liquibase.properties </propertiesFile> </configuration> -->
- <goals>
- <goal>update</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>2.2</version>
- <executions>
- <execution>
- <id>core</id>
- <phase>package</phase>
- <goals>
- <goal>jar</goal>
- </goals>
- <configuration>
- <classifier>core</classifier>
- <includes>
- <include>**/KunePlatform.gwt.xml**</include>
- <include>**/i18n/I18nTranslationService.**</include>
- <include>**/i18n/I18nTranslationServiceMocked.**</include>
- <include>**/TextUtils.**</include>
- <include>**/IconLabelEditable.**</include>
- <include>**/QuickTipsHelper.**</include>
- <include>**/RichText.gwt.xml**</include>
- <include>**/BasicDialog.**</include>
- <include>**/HorizontalLine.**</include>
- <include>**/AbstractLabel.**</include>
- <include>**/IconLabel.**</include>
- <include> **/EditableIconLabel.** </include>
- <include> **/EditableClickListener.** </include>
- <include>**/KuneStringUtils.**</include>
- <include>**/IconHyperlink*.**</include>
- <include>**/LabelWrapper*.**</include>
- <include>**/KuneUiUtils.**</include>
- <include>**/View.**</include>
- <!-- <include>**/platf/**</include> <include>**/platf/client/extend/**</include>
- <include>**/platf/client/*java</include> <include>**/platf/client/app/**</include>
- <include>**/platf/client/dispatch/**</include> -->
- </includes>
- </configuration>
- </execution>
- <execution>
- <id>helloworldmodule</id>
- <phase>package</phase>
- <goals>
- <goal>jar</goal>
- </goals>
- <configuration>
- <classifier>helloworldmodule</classifier>
- <includes>
- <include>**/HelloWorld*</include>
- </includes>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <!-- <plugin> -->
- <!-- <groupId>org.codehaus.mojo</groupId> -->
- <!-- <artifactId>selenium-maven-plugin</artifactId> -->
- <!-- <configuration> -->
- <!-- <port>4441</port> -->
- <!-- </configuration> -->
- <!-- <executions> -->
- <!-- <execution> -->
- <!-- <phase>pre-integration-test</phase> -->
- <!-- <goals> -->
- <!-- <goal>start-server</goal> -->
- <!-- </goals> -->
- <!-- <configuration> -->
- <!-- <background>true</background> -->
- <!-- </configuration> -->
- <!-- </execution> -->
- <!-- </executions> -->
- <!-- </plugin> -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <forkMode>pertest</forkMode>
- <!-- Skip the normal tests, we'll run them in the integration-test
- phase -->
- <skip>true</skip>
- </configuration>
- <executions>
- <execution>
- <phase>integration-test</phase>
- <goals>
- <goal>test</goal>
- </goals>
- <configuration>
- <skip>false</skip>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <!-- <plugin> <artifactId>maven-clean-plugin</artifactId> <version>2.2</version>
- <configuration> <filesets> <fileset> <directory>src/main/webapp/gwt/</directory>
- <includes> <include>**/org.ourproject.kune.app.Kune*</include> <followSymlinks>false</followSymlinks>
- </includes> </fileset> </filesets> </configuration> </plugin> -->
- </plugins>
- <!-- Generate compiled stuff in the folder used for developing mode -->
-<!-- <outputDirectory>${webappDirectory}/WEB-INF/classes</outputDirectory>-->
- <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
- <testOutputDirectory>war/WEB-INF/test-classes</testOutputDirectory>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- </resource>
- <resource>
- <directory>src/main/java</directory>
- </resource>
- </resources>
- <extensions>
- <extension>
- <groupId>org.apache.maven.wagon</groupId>
- <artifactId>wagon-ssh-external</artifactId>
- <version>1.0-beta-2</version>
- </extension>
- </extensions>
- </build>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jxr-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-pmd-plugin</artifactId>
- <version>2.4</version>
- <configuration>
- <linkXref>true</linkXref>
- <sourceEncoding>utf-8</sourceEncoding>
- <minimumTokens>100</minimumTokens>
- <targetJdk>1.5</targetJdk>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>cobertura-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>jdepend-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>findbugs-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </reporting>
- <profiles>
- <profile>
- <!-- Activate only when within eclipse -->
- <id>m2eclipse</id>
- <activation>
- <property>
- <name>!m2e.version</name>
- </property>
- </activation>
- <!-- GWT SDK is provided by GWT SDK Classpath Container -->
- <dependencies>
- <dependency>
- <groupId>com.google.gwt</groupId>
- <artifactId>gwt-servlet</artifactId>
- <version>${gwtVersion}</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>com.google.gwt</groupId>
- <artifactId>gwt-user</artifactId>
- <version>${gwtVersion}</version>
- <scope>provided</scope>
- </dependency>
- </dependencies>
- </profile>
- </profiles>
-</project>
Deleted: trunk/pom.xml.net
===================================================================
--- trunk/pom.xml.net 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/pom.xml.net 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,826 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.ourproject</groupId>
- <artifactId>kune</artifactId>
- <packaging>jar</packaging>
- <version>0.0.6</version>
- <description>
- kune free/open/libre collaboration platform
- </description>
- <name>kune</name>
- <url>http://kune.ourproject.org</url>
- <properties>
- <gwtVersion>1.7.0</gwtVersion>
- </properties>
- <dependencies>
- <!-- guice -->
- <dependency>
- <groupId>com.google.code.guice</groupId>
- <artifactId>guice</artifactId>
- <version>1.0</version>
- </dependency>
- <dependency>
- <groupId>com.google.code.guice</groupId>
- <artifactId>guice-servlet</artifactId>
- <version>1.0</version>
- </dependency>
- <dependency>
- <groupId>aopalliance</groupId>
- <artifactId>aopalliance</artifactId>
- <version>1.0</version>
- </dependency>
-
- <!-- G WT deps (from central repo) -->
- <dependency>
- <groupId>com.google.gwt</groupId>
- <artifactId>gwt-servlet</artifactId>
- <version>${gwtVersion}</version>
- <scope>runtime</scope>
- </dependency>
- <dependency>
- <groupId>com.google.gwt</groupId>
- <artifactId>gwt-user</artifactId>
- <version>${gwtVersion}</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>com.google.gwt</groupId>
- <artifactId>gwt-dev</artifactId>
- <version>${gwtVersion}</version>
- <classifier>${platform}-libs</classifier>
- <type>zip</type>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>com.google.gwt</groupId>
- <artifactId>gwt-dev</artifactId>
- <version>${gwtVersion}</version>
- <classifier>${platform}</classifier>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>com.google.gwt</groupId>
- <artifactId>gwt-incubator</artifactId>
- <version>march-02-2009</version>
- <scope>provided</scope>
- </dependency>
- <!--
- <dependency> <groupId>com.extjs</groupId>
- <artifactId>gxt</artifactId> <version>1.0-beta2</version>
- </dependency>
- -->
- <dependency>
- <groupId>org.cobogw</groupId>
- <artifactId>gwt</artifactId>
- <version>1.2.2</version>
- </dependency>
- <dependency>
- <groupId>com.gwtext</groupId>
- <artifactId>gwtext</artifactId>
- <version>2.0.5</version>
- </dependency>
- <dependency>
- <groupId>com.gwtextux</groupId>
- <artifactId>gwtextux</artifactId>
- <version>0.4.0.924</version>
- </dependency>
- <dependency>
- <groupId>com.allen_sauer.gwt.log.gwt-log</groupId>
- <artifactId>gwt-log</artifactId>
- <version>2.6.2</version>
- </dependency>
- <dependency>
- <groupId>com.allen_sauer.gwt.voices.gwt-voices</groupId>
- <artifactId>gwt-voices</artifactId>
- <version>1.6.0</version>
- </dependency>
-
- <!-- utilities -->
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.14</version>
- </dependency>
- <dependency>
- <groupId>net.sf.dozer</groupId>
- <artifactId>dozer</artifactId>
- <version>4.0</version>
- </dependency>
- <dependency>
- <groupId>com.calclab</groupId>
- <artifactId>suco</artifactId>
- <version>0.6.1</version>
- </dependency>
- <dependency>
- <groupId>jmagick</groupId>
- <artifactId>jmagick</artifactId>
- <version>6.2.6-0</version>
- </dependency>
- <dependency>
- <groupId>org.xwiki.platform</groupId>
- <artifactId>xwiki-web-gwt-dom</artifactId>
- <version>2.0-SNAPSHOT</version>
- <!-- <version>2.0-SNAPSHOT-g164</version> -->
- </dependency>
-
- <!-- xmpp -->
- <dependency>
- <groupId>com.calclab.emite</groupId>
- <artifactId>emite</artifactId>
- <version>0.4.7</version>
- </dependency>
- <dependency>
- <groupId>org.jivesoftware.smack</groupId>
- <artifactId>smack</artifactId>
- <version>3.0.4</version>
- </dependency>
- <dependency>
- <groupId>org.jivesoftware.smackx</groupId>
- <artifactId>smackx</artifactId>
- <version>3.0.4</version>
- </dependency>
- <dependency>
- <groupId>org.jivesoftware.smackx.debugger</groupId>
- <artifactId>smackx-debugger</artifactId>
- <version>3.0.4</version>
- </dependency>
-
- <!-- mysql -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.0.5</version>
- </dependency>
-
- <!-- hibernate JPA -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-search</artifactId>
- <version>3.1.0.GA</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate</artifactId>
- <version>3.2.6.ga</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-annotations</artifactId>
- <version>3.4.0.GA</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-validator</artifactId>
- <version>3.0.0.ga</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-entitymanager</artifactId>
- <version>3.4.0.GA</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-tools</artifactId>
- <version>3.2.3.GA</version>
- </dependency>
- <dependency>
- <groupId>c3p0</groupId>
- <artifactId>c3p0</artifactId>
- <version>0.9.1.2</version>
- </dependency>
- <dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
- <version>2.0</version>
- </dependency>
- <dependency>
- <groupId>com.wideplay</groupId>
- <artifactId>warp-persist</artifactId>
- <version>1.0.1</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.5.2</version>
- </dependency>
-
- <!-- REST: xml and json (stax) -->
- <dependency>
- <groupId>com.thoughtworks.xstream</groupId>
- <artifactId>xstream</artifactId>
- <version>1.2.2</version>
- </dependency>
- <dependency>
- <groupId>stax</groupId>
- <artifactId>stax-api</artifactId>
- <version>1.0.1</version>
- </dependency>
- <dependency>
- <groupId>org.codehaus.jettison</groupId>
- <artifactId>jettison</artifactId>
- <version>1.0-RC2</version>
- </dependency>
- <dependency>
- <groupId>net.sf.json-lib</groupId>
- <artifactId>json-lib</artifactId>
- <version>2.1</version>
- <classifier>jdk15</classifier>
- </dependency>
- <dependency>
- <groupId>commons-collections</groupId>
- <artifactId>commons-collections</artifactId>
- <version>3.2</version>
- </dependency>
-
- <!-- File upload -->
- <dependency>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils</artifactId>
- <version>1.7.0</version>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>1.2</version>
- </dependency>
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>1.1</version>
- </dependency>
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>1.1.1</version>
- </dependency>
-
- <!-- db upgrades -->
- <dependency>
- <groupId>org.liquibase</groupId>
- <artifactId>liquibase-core</artifactId>
- <version>1.7.0</version>
- </dependency>
- <dependency>
- <groupId>org.liquibase</groupId>
- <artifactId>liquibase-plugin</artifactId>
- <version>1.7.0.0</version>
- </dependency>
-
- <!-- jetty dependencies -->
- <dependency>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>jetty-util</artifactId>
- <version>6.1.5</version>
- <!--
- <version>7.0.0.pre5</version>
- -->
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>maven-jetty-plugin</artifactId>
- <!--
- <artifactId>jetty-maven-plugin</artifactId>
- <version>7.0.0.1beta0</version>
- -->
- <version>6.1.5</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.4</version>
- <scope>provided</scope>
- </dependency>
-
- <!-- testing dependencies -->
- <dependency>
- <groupId>org.mockito</groupId>
- <artifactId>mockito-all</artifactId>
- <version>1.6</version>
- </dependency>
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <version>1.0.20070617</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.4</version>
- <!--
- <scope>test</scope>
- -->
- </dependency>
- <dependency>
- <groupId>org.openqa.selenium.client-drivers</groupId>
- <artifactId>selenium-java-client-driver</artifactId>
- <version>1.0-beta-1</version>
- <scope>test</scope>
- </dependency>
-
- <!-- public side -->
- <dependency>
- <groupId>org.jruby.rack</groupId>
- <artifactId>jruby-rack</artifactId>
- <version>0.9.4</version>
- </dependency>
- </dependencies>
- <!--
- http://gwt-maven.googlecode.com/svn/docs/maven-googlewebtoolkit2-plugin/ind…
- -->
- <pluginRepositories>
- <pluginRepository>
- <id>gwt-maven</id>
- <url>http://gwt-maven.googlecode.com/svn/trunk/mavenrepo</url>
- </pluginRepository>
- <pluginRepository>
- <id>Codehaus Snapshots</id>
- <url>http://snapshots.repository.codehaus.org/</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- <releases>
- <enabled>false</enabled> <!-- Workaround for MNG-2974, see note below -->
- </releases>
- </pluginRepository>
- </pluginRepositories>
- <repositories>
- <repository>
- <id>Codehaus Snapshots</id>
- <url>http://snapshots.repository.codehaus.org/</url>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
- <repository>
- <id>repository.jboss.org</id>
- <name>JBoss Maven Repository</name>
- <url>http://repository.jboss.org/maven2</url>
- <layout>default</layout>
- </repository>
- <repository>
- <id>dyndns-repo</id>
- <url>http://maven.dyndns.org/2</url>
- </repository>
- <repository>
- <id>gwt-maven</id>
- <url>
- http://gwt-maven.googlecode.com/svn/trunk/mavenrepo/
- </url>
- </repository>
- <repository>
- <id>kune-maven</id>
- <url>http://kune.ourproject.org/mavenrepo/</url>
- </repository>
- <repository>
- <id>gwtext</id>
- <url>http://www.gwt-ext.com/maven2/</url>
- </repository>
- <repository>
- <id>openqa.org</id>
- <name>Openqa Release Repository</name>
- <url>http://archiva.openqa.org/repository/releases</url>
- <layout>default</layout>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- <releases>
- <enabled>true</enabled>
- </releases>
- </repository>
- <repository>
- <id>openqa.org</id>
- <name>Openqa Snapshot Repository</name>
- <url>http://archiva.openqa.org/repository/snapshots</url>
- <layout>default</layout>
- <snapshots>
- <enabled>true</enabled>
- <updatePolicy>daily</updatePolicy>
- <checksumPolicy>ignore</checksumPolicy>
- </snapshots>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
- <repository>
- <id>xwiki</id>
- <name>XWiki Repository</name>
- <url>http://maven.xwiki.org/snapshots</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- <updatePolicy>daily</updatePolicy>
- <checksumPolicy>warn</checksumPolicy>
- </snapshots>
- </repository>
- </repositories>
- <issueManagement>
- <system>kune issues list at ourproject.org</system>
- <url>http://ourproject.org/tracker/?group_id=407</url>
- </issueManagement>
- <developers>
- <developer>
- <id>dani</id>
- <name>Daniel Gómez Blasco</name>
- <email>danigb(a)gmail.com</email>
- </developer>
- <developer>
- <name>Samer Hassan</name>
- <email>samer2004(a)gmail.com</email>
- </developer>
- <developer>
- <name>Vicente J. Ruiz Jurado</name>
- <email>vjrj(a)ourproject.org</email>
- </developer>
- </developers>
- <scm>
- <url>svn://scm.ourproject.org/svnroot/kune/trunk</url>
- </scm>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.3</version>
- <configuration>
- <forkMode>pertest</forkMode>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.5</source>
- <target>1.5</target>
- <!--
- Uncomment and run mvn with -X -e if we have same compile
- problems <compilerArgument>-verbose</compilerArgument>
- <fork>true</fork> <verbose>true</verbose>
- -->
- </configuration>
- </plugin>
- <plugin>
- <groupId>com.totsp.gwt</groupId>
- <artifactId>maven-googlewebtoolkit2-plugin</artifactId>
- <version>2.0-RC1</version>
- <configuration>
- <logLevel>INFO</logLevel>
- <!-- <style>OBF or PRETTY</style> -->
- <style>PRETTY</style>
- <!--
- <output>${project.build.directory}/gwt/www</output>
- -->
- <logLevel>INFO</logLevel>
- <noServer>true</noServer>
- <extraJvmArgs>-Xmx640m</extraJvmArgs>
- <gwtVersion>${gwtVersion}</gwtVersion>
- <output>war/</output>
- <runTarget>ws/Kune.html</runTarget>
- <compileTargets>
- <compileTarget>org.ourproject.kune.app.Kune</compileTarget>
- </compileTargets>
- <generatorRootClasses>
- <value>org.ourproject.kune.MyBean</value>
- </generatorRootClasses>
- <generatorDestinationPackage> org.ourproject.kune.app.Kune </generatorDestinationPackage>
- <generateGettersAndSetters> true </generateGettersAndSetters>
- <generatePropertyChangeSupport> true </generatePropertyChangeSupport>
- </configuration>
- <executions>
- <execution>
- <goals>
- <!-- <goal>mergewebxml</goal> -->
- <!-- <goal>compile</goal> -->
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-war-plugin</artifactId>
- <version>2.0</version>
- <configuration>
- <webXml>${project.build.directory}/WEB-INF/web.xml</webXml>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-eclipse-plugin</artifactId>
- <version>2.3</version>
- <configuration>
- <downloadSources>true</downloadSources>
- <downloadJavadocs>true</downloadJavadocs>
- <wtpversion>1.5</wtpversion>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>maven-jetty-plugin</artifactId>
- <version>6.1.5</version>
- <!--
- <artifactId>jetty-maven-plugin</artifactId>
- <version>7.0.0.1beta0</version>
- -->
- <configuration>
- <contextPath>/</contextPath>
- <webAppSourceDirectory>war</webAppSourceDirectory>
- <reload>manual</reload>
- <scanIntervalSeconds>0</scanIntervalSeconds>
- </configuration>
- </plugin>
- <!--
- <plugin> <groupId>org.codehaus.mojo</groupId>
- <artifactId>deb-maven-plugin</artifactId>
- <version>1.0-SNAPSHOT</version> <configuration>
- <description>kune free/open/libre collaboration
- platform</description> <maintainer>Kune Development Team
- <kune-devel(a)lists.ourproject.org></maintainer>
- <section>web</section> <priority>optional</priority>
- <architecture>all</architecture> </configuration> <executions>
- <execution> <goals> <goal>deb</goal> </goals> </execution>
- </executions> </plugin>
- -->
- <plugin>
- <groupId>org.liquibase</groupId>
- <artifactId>liquibase-plugin</artifactId>
- <version>1.7.0.0</version>
- <executions>
- <execution>
- <phase>process-resources</phase>
- <configuration>
- <changeLogFile>
- src/main/resources/db/liquibase_changelog.xml </changeLogFile>
- <driver>com.mysql.jdbc.Driver</driver>
- <url>jdbc:mysql://localhost/kune_dev</url>
- <username>kune</username>
- <password>db4kune</password>
- <verbose>true</verbose>
- </configuration>
- <!--
- <configuration> <verbose>true</verbose> <propertiesFile>
- src/main/resources/db/liquibase.properties
- </propertiesFile> </configuration>
- -->
- <goals>
- <goal>update</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>2.2</version>
- <executions>
- <execution>
- <id>core</id>
- <phase>package</phase>
- <goals>
- <goal>jar</goal>
- </goals>
- <configuration>
- <classifier>core</classifier>
- <includes>
- <include>**/KunePlatform.gwt.xml**</include>
- <include>**/i18n/I18nTranslationService.**</include>
- <include>**/i18n/I18nTranslationServiceMocked.**</include>
- <include>**/TextUtils.**</include>
- <include>**/IconLabelEditable.**</include>
- <include>**/QuickTipsHelper.**</include>
- <include>**/RichText.gwt.xml**</include>
- <include>**/BasicDialog.**</include>
- <include>**/HorizontalLine.**</include>
- <include>**/AbstractLabel.**</include>
- <include>**/IconLabel.**</include>
- <include> **/EditableIconLabel.** </include>
- <include> **/EditableClickListener.** </include>
- <include>**/KuneStringUtils.**</include>
- <include>**/IconHyperlink*.**</include>
- <include>**/LabelWrapper*.**</include>
- <include>**/KuneUiUtils.**</include>
- <include>**/View.**</include>
- <!--
- <include>**/platf/**</include>
- <include>**/platf/client/extend/**</include>
- <include>**/platf/client/*java</include>
- <include>**/platf/client/app/**</include>
- <include>**/platf/client/dispatch/**</include>
- -->
- </includes>
- </configuration>
- </execution>
- <execution>
- <id>helloworldmodule</id>
- <phase>package</phase>
- <goals>
- <goal>jar</goal>
- </goals>
- <configuration>
- <classifier>helloworldmodule</classifier>
- <includes>
- <include>**/HelloWorld*</include>
- </includes>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>selenium-maven-plugin</artifactId>
- <configuration>
- <port>4441</port>
- </configuration>
- <executions>
- <execution>
- <phase>pre-integration-test</phase>
- <goals>
- <goal>start-server</goal>
- </goals>
- <configuration>
- <background>true</background>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <forkMode>pertest</forkMode>
- <!--
- Skip the normal tests, we'll run them in the
- integration-test phase
- -->
- <skip>true</skip>
- </configuration>
- <executions>
- <execution>
- <phase>integration-test</phase>
- <goals>
- <goal>test</goal>
- </goals>
- <configuration>
- <skip>false</skip>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <!--
- <plugin> <artifactId>maven-clean-plugin</artifactId>
- <version>2.2</version> <configuration> <filesets> <fileset>
- <directory>src/main/webapp/gwt/</directory> <includes>
- <include>**/org.ourproject.kune.app.Kune*</include>
- <followSymlinks>false</followSymlinks> </includes> </fileset>
- </filesets> </configuration> </plugin>
- -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <executions>
- <execution>
- <id>unpack</id>
- <phase>compile</phase>
- <goals>
- <goal>unpack</goal>
- </goals>
- <configuration>
- <artifactItems>
- <artifactItem>
- <groupId>com.google.gwt</groupId>
- <artifactId>gwt-dev</artifactId>
- <version>${gwtVersion}</version>
- <classifier>${platform}-libs</classifier>
- <type>zip</type>
- <overWrite>false</overWrite>
- <outputDirectory>${settings.localRepository}/com/google/gwt/gwt-dev/${gwtVersion}</outputDirectory>
- </artifactItem>
- </artifactItems>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- <outputDirectory>war/WEB-INF/classes</outputDirectory>
- <testOutputDirectory>war/WEB-INF/test-classes</testOutputDirectory>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- </resource>
- <resource>
- <directory>src/main/java</directory>
- </resource>
- </resources>
- </build>
- <reporting>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jxr-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-pmd-plugin</artifactId>
- <version>2.4</version>
- <configuration>
- <linkXref>true</linkXref>
- <sourceEncoding>utf-8</sourceEncoding>
- <minimumTokens>100</minimumTokens>
- <targetJdk>1.5</targetJdk>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>cobertura-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemProperties>
- <property>
- <name> net.sourceforge.cobertura.datafile </name>
- <value>
- ${project.reporting.directory}/cobertura/cobertura.ser </value>
- </property>
- </systemProperties>
- <forkMode>pertest</forkMode>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>jdepend-maven-plugin</artifactId>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>findbugs-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </reporting>
-
- <!-- profiles (with activation per platform) -->
- <profiles>
- <profile>
- <id>gwt-dev-windows</id>
- <properties>
- <platform>windows</platform>
- </properties>
- <activation>
- <activeByDefault>false</activeByDefault>
- <os>
- <family>windows</family>
- </os>
- </activation>
- <!-- FIXME: put here a similar temp directory to linux/unix systems -->
- <build>
- <directory>target/</directory>
- </build>
- <reporting>
- <outputDirectory>target/</outputDirectory>
- </reporting>
- </profile>
- <profile>
- <id>gwt-dev-mac</id>
- <properties>
- <platform>mac</platform>
- </properties>
- <activation>
- <activeByDefault>false</activeByDefault>
- <os>
- <family>mac</family>
- </os>
- </activation>
- <build>
- <directory>/var/tmp/kune-target/</directory>
- </build>
- <reporting>
- <outputDirectory>/var/tmp/kune-target/</outputDirectory>
- </reporting>
- </profile>
- <profile>
- <id>gwt-dev-linux</id>
- <properties>
- <platform>linux</platform>
- </properties>
- <activation>
- <activeByDefault>true</activeByDefault>
- <os>
- <name>linux</name>
- </os>
- </activation>
- <build>
- <directory>/var/tmp/kune-target/</directory>
- </build>
- <reporting>
- <outputDirectory>/var/tmp/kune-target/</outputDirectory>
- </reporting>
- </profile>
- </profiles>
-</project>
Modified: trunk/script/mvn-eclipse.sh
===================================================================
--- trunk/script/mvn-eclipse.sh 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/script/mvn-eclipse.sh 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,5 +1,7 @@
mvn eclipse:eclipse -Dgwt.compiler.skip=true
+
perl -p -i -e 's/<\/classpath>//g' .classpath
+perl -p -i -e 's/\/home\/vjrj\/proyectos\/dev\/kune-dev\///g' .classpath
echo -en " <classpathentry kind=\"src\" path=\"target/generated-sources/apt\" including=\"**/*.java\"/>" >> .classpath
echo -en " <classpathentry kind=\"con\" path=\"com.google.gwt.eclipse.core.GWT_CONTAINER\"/>\n</classpath>" >> .classpath
Modified: trunk/src/main/java/cc/kune/Kune.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/Kune.gwt.xml 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/Kune.gwt.xml 2011-01-29 03:38:12 UTC (rev 1227)
@@ -4,11 +4,12 @@
<inherits name="com.google.gwt.user.User" />
<inherits name='com.google.gwt.logging.Logging' />
<inherits name="cc.kune.core.Core" />
+ <inherits name="cc.kune.chat.Chat" />
<inherits name="cc.kune.wave.KuneWave" />
<inherits name="com.calclab.suco.Suco" />
<inherits name="org.adamtacy.GWTEffects"></inherits>
- <!-- <source path='client'
- excludes="**/*Test.java,**/*Tests.java,**/*MockProvider.java" /> -->
+ <!-- <source path='client' excludes="**/*Test.java,**/*Tests.java,**/*MockProvider.java"
+ /> -->
<!-- <source path='shared'/> -->
<!-- <public path="public"/> -->
<!-- Logging Configuration -->
@@ -31,6 +32,10 @@
<!--http://code.google.com/p/google-web-toolkit/issues/detail?id=42 -->
<!-- <set-property name="user.agent" value="gecko1_8" /> -->
<set-property name="user.agent" value="safari,gecko1_8" />
+ <!-- Debugging =============================================== -->
+ <!-- for add ensureDebugIds (debugId in UIBinder), remove/comment in production
+ see UIObject.ensureDebugId()) -->
+ <inherits name="com.google.gwt.user.Debug" />
<!-- Entrypoint =============================================== -->
<entry-point class="cc.kune.core.client.KuneEntryPoint" />
</module>
Added: trunk/src/main/java/cc/kune/chat/Chat.gwt.xml
===================================================================
--- trunk/src/main/java/cc/kune/chat/Chat.gwt.xml (rev 0)
+++ trunk/src/main/java/cc/kune/chat/Chat.gwt.xml 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.1//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.1/distro-source/core/…">
+<module>
+ <inherits name="com.google.gwt.user.User" />
+ <inherits name="com.calclab.hablar.Hablar" />
+ <inherits name='com.calclab.hablar.console.HablarConsole' />
+ <inherits name='com.calclab.hablar.login.HablarLogin' />
+ <inherits name='com.calclab.hablar.icons.def.HablarDefaultIcons' />
+ <inherits name='com.calclab.hablar.icons.ie6gif.HablarIE6GifIcons' />
+ <inherits name='com.calclab.hablar.icons.alt.HablarAltIcons' />
+ <source path="client" />
+</module>
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/chat/client/ChatClient.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatClient.java (rev 0)
+++ trunk/src/main/java/cc/kune/chat/client/ChatClient.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,37 @@
+package cc.kune.chat.client;
+
+import com.calclab.emite.core.client.xmpp.stanzas.XmppURI;
+
+public interface ChatClient {
+
+ void addNewBuddie(String shortName);
+
+ //
+ // void addOnRosterChanged(Listener0 slot);
+
+ void chat(XmppURI jid);
+
+ //
+ // ChatConnectionOptions getChatOptions();
+
+ boolean isBuddie(String localUserName);
+
+ boolean isBuddie(XmppURI jid);
+
+ boolean isLoggedIn();
+
+ void joinRoom(String roomName, String userAlias);
+
+ void joinRoom(String roomName, String subject, String userAlias);
+
+ void login(String jid, String passwd);
+
+ void logout();
+
+ void setAvatar(String photoBinary);
+
+ void show();
+
+ void stop();
+
+}
Added: trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java (rev 0)
+++ trunk/src/main/java/cc/kune/chat/client/ChatClientDefault.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,256 @@
+package cc.kune.chat.client;
+
+import cc.kune.chat.client.ShowChatDialogEvent.ShowChatDialogHandler;
+import cc.kune.chat.client.ToggleShowChatDialogEvent.ToggleShowChatDialogHandler;
+import cc.kune.common.client.actions.AbstractExtendedAction;
+import cc.kune.common.client.actions.Action;
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.KeyStroke;
+import cc.kune.common.client.actions.ui.descrip.IconLabelDescriptor;
+import cc.kune.common.client.shortcuts.Keyboard;
+import cc.kune.common.client.ui.PopupTopPanel;
+import cc.kune.core.client.init.AppStartEvent;
+import cc.kune.core.client.resources.icons.IconResources;
+import cc.kune.core.client.sitebar.SitebarActionsPresenter;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.UserSignInEvent;
+import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.client.state.UserSignOutEvent;
+import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.calclab.emite.browser.client.PageAssist;
+import com.calclab.emite.core.client.xmpp.stanzas.XmppURI;
+import com.calclab.hablar.HablarComplete;
+import com.calclab.hablar.HablarConfig;
+import com.calclab.hablar.console.client.HablarConsole;
+import com.calclab.hablar.core.client.Hablar;
+import com.calclab.hablar.core.client.HablarWidget;
+import com.calclab.hablar.html.client.HtmlConfig;
+import com.calclab.hablar.icons.alt.client.AltIcons;
+import com.calclab.hablar.icons.def.client.DefaultIcons;
+import com.calclab.hablar.icons.ie6gif.client.IE6GifIcons;
+import com.calclab.hablar.login.client.HablarLogin;
+import com.calclab.hablar.login.client.LoginConfig;
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.user.client.ui.DialogBox;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.inject.Inject;
+
+public class ChatClientDefault implements ChatClient {
+
+ public static class ChatClientAction extends AbstractExtendedAction {
+
+ private final EventBus eventBus;
+
+ @Inject
+ public ChatClientAction(final EventBus eventBus) {
+ super();
+ this.eventBus = eventBus;
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ // FIXME
+ eventBus.fireEvent(new ToggleShowChatDialogEvent());
+ }
+
+ }
+
+ private PopupTopPanel popup;
+ private final Session session;
+
+ @Inject
+ public ChatClientDefault(final EventBus eventBus, final I18nTranslationService i18n, final ChatClientAction action,
+ final SitebarActionsPresenter siteActions, final IconResources res, final Session session) {
+ this.session = session;
+ eventBus.addHandler(AppStartEvent.getType(), new AppStartEvent.AppStartHandler() {
+ @Override
+ public void onAppStart(final AppStartEvent event) {
+ res.css().ensureInjected();
+ final IconLabelDescriptor chatIcon = new IconLabelDescriptor(action);
+ chatIcon.putValue(Action.SMALL_ICON, res.chat());
+ chatIcon.putValue(Action.NAME, "Chat");
+ chatIcon.setStyles("k-floatright, k-no-backimage, k-btn-sitebar");
+ action.putValue(Action.SHORT_DESCRIPTION, i18n.t("Show/hide the chat window"));
+ action.setShortcut(KeyStroke.getKeyStroke('C', Keyboard.MODIFIER_ALT));
+ chatIcon.setVisible(session.isLogged());
+ siteActions.addAction(chatIcon);
+ eventBus.addHandler(UserSignInEvent.getType(), new UserSignInHandler() {
+ @Override
+ public void onUserSignIn(final UserSignInEvent event) {
+ createDialogIfNeeded();
+ chatIcon.setVisible(true);
+ }
+ });
+ eventBus.addHandler(UserSignOutEvent.getType(), new UserSignOutHandler() {
+ @Override
+ public void onUserSignOut(final UserSignOutEvent event) {
+ chatIcon.setVisible(false);
+ }
+ });
+ eventBus.addHandler(ShowChatDialogEvent.getType(), new ShowChatDialogHandler() {
+ @Override
+ public void onShowChatDialog(final ShowChatDialogEvent event) {
+ showDialog(event.show);
+ }
+ });
+ eventBus.addHandler(ToggleShowChatDialogEvent.getType(), new ToggleShowChatDialogHandler() {
+ @Override
+ public void onToggleShowChatDialog(final ToggleShowChatDialogEvent event) {
+ toggleShowDialog();
+ }
+ });
+ }
+ });
+ }
+
+ @Override
+ public void addNewBuddie(final String shortName) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void chat(final XmppURI jid) {
+ // TODO Auto-generated method stub
+
+ }
+
+ private void createDialog(final HablarWidget widget, final HtmlConfig htmlConfig) {
+ // popup.setSize(htmlConfig.width, htmlConfig.height);
+ setSize(widget, htmlConfig);
+ popup.add(widget);
+ }
+
+ private DialogBox createDialog2(final HablarWidget widget, final HtmlConfig htmlConfig) {
+ final DialogBox dialog = new DialogBox();
+ dialog.setText("Hablar");
+ setSize(dialog, htmlConfig);
+ dialog.show();
+ dialog.center();
+ return dialog;
+ }
+
+ private void createDialogIfNeeded() {
+ if (popup == null) {
+ popup = new PopupTopPanel();
+ initEmite();
+ }
+ }
+
+ private void initEmite() {
+ final String icons = PageAssist.getMeta("hablar.icons");
+ if ("alt".equals(icons)) {
+ AltIcons.load();
+ } else if ("ie6".equals(icons)) {
+ IE6GifIcons.load();
+ } else {
+ DefaultIcons.load();
+ }
+
+ final HablarConfig config = HablarConfig.getFromMeta();
+ final HtmlConfig htmlConfig = HtmlConfig.getFromMeta();
+ htmlConfig.hasLogger = true;
+ final HablarWidget widget = new HablarWidget(config.layout, config.tabHeaderSize);
+ final Hablar hablar = widget.getHablar();
+
+ HablarComplete.install(hablar, config);
+
+ if (htmlConfig.hasLogger) {
+ new HablarConsole(hablar);
+ }
+
+ if (htmlConfig.hasLogin) {
+ new HablarLogin(hablar, LoginConfig.getFromMeta());
+ }
+ createDialog(widget, htmlConfig);
+ }
+
+ @Override
+ public boolean isBuddie(final String localUserName) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean isBuddie(final XmppURI jid) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean isLoggedIn() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public void joinRoom(final String roomName, final String userAlias) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void joinRoom(final String roomName, final String subject, final String userAlias) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void login(final String jid, final String passwd) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void logout() {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setAvatar(final String photoBinary) {
+ // TODO Auto-generated method stub
+
+ }
+
+ private void setSize(final Widget widget, final HtmlConfig htmlConfig) {
+ if (htmlConfig.width != null) {
+ widget.setWidth(htmlConfig.width);
+ }
+ if (htmlConfig.height != null) {
+ widget.setHeight(htmlConfig.height);
+ }
+ widget.setWidth("400px");
+ widget.setHeight("400px");
+ }
+
+ @Override
+ public void show() {
+ // TODO Auto-generated method stub
+
+ }
+
+ private void showDialog(final boolean show) {
+ if (session.isLogged()) {
+ createDialogIfNeeded();
+ if (show) {
+ popup.showCentered();
+ } else {
+ popup.hide();
+ }
+ }
+ }
+
+ @Override
+ public void stop() {
+ // TODO Auto-generated method stub
+
+ }
+
+ private void toggleShowDialog() {
+ showDialog(popup == null ? true : !popup.isShowing());
+ }
+
+}
Added: trunk/src/main/java/cc/kune/chat/client/ShowChatDialogEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ShowChatDialogEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/chat/client/ShowChatDialogEvent.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,81 @@
+package cc.kune.chat.client;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public class ShowChatDialogEvent extends GwtEvent<ShowChatDialogEvent.ShowChatDialogHandler> {
+
+ public interface HasShowChatDialogHandlers extends HasHandlers {
+ HandlerRegistration addShowChatDialogHandler(ShowChatDialogHandler handler);
+ }
+
+ public interface ShowChatDialogHandler extends EventHandler {
+ public void onShowChatDialog(ShowChatDialogEvent event);
+ }
+
+ private static final Type<ShowChatDialogHandler> TYPE = new Type<ShowChatDialogHandler>();
+
+ public static void fire(final HasHandlers source, final boolean show) {
+ source.fireEvent(new ShowChatDialogEvent(show));
+ }
+
+ public static Type<ShowChatDialogHandler> getType() {
+ return TYPE;
+ }
+
+ boolean show;
+
+ protected ShowChatDialogEvent() {
+ // Possibly for serialization.
+ }
+
+ public ShowChatDialogEvent(final boolean show) {
+ this.show = show;
+ }
+
+ @Override
+ protected void dispatch(final ShowChatDialogHandler handler) {
+ handler.onShowChatDialog(this);
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final ShowChatDialogEvent other = (ShowChatDialogEvent) obj;
+ if (show != other.show) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public Type<ShowChatDialogHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + Boolean.valueOf(show).hashCode();
+ return hashCode;
+ }
+
+ public boolean isShow() {
+ return show;
+ }
+
+ @Override
+ public String toString() {
+ return "ShowChatDialogEvent[" + show + "]";
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/chat/client/ShowChatDialogEvent.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/chat/client/ToggleShowChatDialogEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ToggleShowChatDialogEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/chat/client/ToggleShowChatDialogEvent.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,46 @@
+package cc.kune.chat.client;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.event.shared.HasHandlers;
+
+public class ToggleShowChatDialogEvent extends GwtEvent<ToggleShowChatDialogEvent.ToggleShowChatDialogHandler> {
+
+ public interface HasToggleShowChatDialogHandlers extends HasHandlers {
+ HandlerRegistration addToggleShowChatDialogHandler(ToggleShowChatDialogHandler handler);
+ }
+
+ public interface ToggleShowChatDialogHandler extends EventHandler {
+ public void onToggleShowChatDialog(ToggleShowChatDialogEvent event);
+ }
+
+ private static final Type<ToggleShowChatDialogHandler> TYPE = new Type<ToggleShowChatDialogHandler>();
+
+ public static void fire(final HasHandlers source, final boolean show) {
+ source.fireEvent(new ToggleShowChatDialogEvent());
+ }
+
+ public static Type<ToggleShowChatDialogHandler> getType() {
+ return TYPE;
+ }
+
+ protected ToggleShowChatDialogEvent() {
+ // Possibly for serialization.
+ }
+
+ @Override
+ protected void dispatch(final ToggleShowChatDialogHandler handler) {
+ handler.onToggleShowChatDialog(this);
+ }
+
+ @Override
+ public Type<ToggleShowChatDialogHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ @Override
+ public String toString() {
+ return "ToggleShowChatDialogEvent";
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/chat/client/ToggleShowChatDialogEvent.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -24,6 +24,11 @@
}
@Override
+ protected void addStyle(final String style) {
+ iconLabel.addStyleName(style);
+ }
+
+ @Override
public AbstractGuiItem create(final AbstractGuiActionDescrip descriptor) {
super.descriptor = descriptor;
iconLabel = new IconLabel("");
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtGuiProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtGuiProvider.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtGuiProvider.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,7 +1,6 @@
package cc.kune.common.client.actions.gxtui;
import cc.kune.common.client.actions.gwtui.GwtIconLabelGui;
-import cc.kune.common.client.actions.gwtui.GwtToolbarSeparatorGui;
import cc.kune.common.client.actions.ui.bind.GuiProvider;
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.common.client.actions.ui.descrip.IconLabelDescriptor;
@@ -25,7 +24,7 @@
final Provider<GxtMenuGui> gxtMenuGui, final Provider<GxtMenuItemGui> gxtMenuItemGui,
final Provider<GxtMenuSeparatorGui> gxtMenuSeparatorGui, final Provider<GxtPushButtonGui> gxtPushButtonGui,
final Provider<GxtButtonGui> gxtButtonGui, final Provider<GwtIconLabelGui> gwtIconLabelGui,
- final Provider<GxtToolbarGui> gxtToolbarGui, final Provider<GwtToolbarSeparatorGui> gxtToolbarSeparatorGui) {
+ final Provider<GxtToolbarGui> gxtToolbarGui, final Provider<GxtToolbarSeparatorGui> gxtToolbarSeparatorGui) {
guiProvider.register(SubMenuDescriptor.class, gxtSubMenuGui);
guiProvider.register(MenuDescriptor.class, gxtMenuGui);
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarGui.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarGui.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -28,16 +28,22 @@
toolbar.add((Component) uiObject);
}
- public void addFill() {
- toolbar.add(new FillToolItem());
+ public FillToolItem addFill() {
+ final FillToolItem item = new FillToolItem();
+ toolbar.add(item);
+ return item;
}
- public void addSeparator() {
- toolbar.add(new SeparatorToolItem());
+ public SeparatorToolItem addSeparator() {
+ final SeparatorToolItem item = new SeparatorToolItem();
+ toolbar.add(item);
+ return item;
}
- public void addSpacer() {
- toolbar.add(new LabelToolItem());
+ public LabelToolItem addSpacer() {
+ final LabelToolItem item = new LabelToolItem();
+ toolbar.add(item);
+ return item;
}
@Override
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -6,9 +6,20 @@
import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor;
import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor.Type;
+import com.extjs.gxt.ui.client.widget.Component;
+
public class GxtToolbarSeparatorGui extends AbstractChildGuiItem {
+ Component separator;
+
@Override
+ protected void addStyle(final String style) {
+ if (separator != null) {
+ separator.addStyleName(style);
+ }
+ }
+
+ @Override
public AbstractGuiItem create(final AbstractGuiActionDescrip descriptor) {
super.create(descriptor);
final GxtToolbarGui toolbar = (GxtToolbarGui) parent;
@@ -16,13 +27,13 @@
final Type type = ((ToolbarSeparatorDescriptor) descriptor).getSeparatorType();
switch (type) {
case fill:
- toolbar.addFill();
+ separator = toolbar.addFill();
break;
case spacer:
- toolbar.addSpacer();
+ separator = toolbar.addSpacer();
break;
case separator:
- toolbar.addSeparator();
+ separator = toolbar.addSeparator();
break;
default:
break;
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -6,8 +6,11 @@
import cc.kune.common.client.actions.PropertyChangeListener;
import cc.kune.common.client.actions.ui.bind.GuiBinding;
import cc.kune.common.client.actions.ui.descrip.AbstractGuiActionDescrip;
+import cc.kune.common.client.errors.NotImplementedException;
import cc.kune.common.client.utils.TextUtils;
+import cc.kune.core.client.resources.icons.IconConstants;
+import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.ui.Composite;
public abstract class AbstractGuiItem extends Composite implements GuiBinding {
@@ -86,8 +89,12 @@
}
private void setIcon(final Object icon) {
- if (icon != null) {
+ if (icon instanceof ImageResource) {
+ setIconStyle((IconConstants.CSS_SUFFIX + ((ImageResource) icon).getName()));
+ } else if (icon instanceof String) {
setIconStyle((String) icon);
+ } else if (icon != null) {
+ throw new NotImplementedException();
}
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/ActionFlowPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/ActionFlowPanel.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/ActionFlowPanel.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -23,7 +23,7 @@
@Override
protected void insertWidget(final AbstractGuiItem item, final int position) {
- int count = bar.getWidgetCount();
+ final int count = bar.getWidgetCount();
bar.insert(item, count < position ? count : position);
}
}
Added: trunk/src/main/java/cc/kune/common/client/actions/ui/ActionSimplePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/ActionSimplePanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/ActionSimplePanel.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,29 @@
+package cc.kune.common.client.actions.ui;
+
+import cc.kune.common.client.actions.ui.bind.GuiProvider;
+
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.inject.Inject;
+
+public class ActionSimplePanel extends AbstractComposedGuiItem implements ActionExtensibleView {
+
+ private final HorizontalPanel bar;
+
+ @Inject
+ public ActionSimplePanel(final GuiProvider guiProvider) {
+ super(guiProvider);
+ bar = new HorizontalPanel();
+ initWidget(bar);
+ }
+
+ @Override
+ protected void addWidget(final AbstractGuiItem item) {
+ bar.add(item);
+ }
+
+ @Override
+ protected void insertWidget(final AbstractGuiItem item, final int position) {
+ final int count = bar.getWidgetCount();
+ bar.insert(item, count < position ? count : position);
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/common/client/actions/ui/ActionSimplePanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/common/client/ui/AbstractAtBorderPopupPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/AbstractAtBorderPopupPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/ui/AbstractAtBorderPopupPanel.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,67 @@
+package cc.kune.common.client.ui;
+
+import com.google.gwt.event.logical.shared.ResizeEvent;
+import com.google.gwt.event.logical.shared.ResizeHandler;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.PopupPanel;
+import com.google.gwt.user.client.ui.UIObject;
+
+public abstract class AbstractAtBorderPopupPanel extends PopupPanel {
+
+ private boolean showCentered = true;
+ protected UIObject showNearObject;
+
+ public AbstractAtBorderPopupPanel() {
+ super();
+ init();
+ }
+
+ public AbstractAtBorderPopupPanel(final boolean autohide) {
+ super(autohide);
+ init();
+ }
+
+ public AbstractAtBorderPopupPanel(final boolean autohide, final boolean modal) {
+ super(autohide, modal);
+ init();
+ }
+
+ public void defaultStyle() {
+ addStyleName("k-opacity90");
+ addStyleName("k-box-10shadow");
+ }
+
+ private void init() {
+ Window.addResizeHandler(new ResizeHandler() {
+ @Override
+ public void onResize(final ResizeEvent event) {
+ if (showCentered) {
+ setCenterPositionImpl();
+ } else {
+ showRelativeImpl();
+ }
+ }
+ });
+ }
+
+ public void setCenterPosition() {
+ setCenterPositionImpl();
+ }
+
+ protected abstract void setCenterPositionImpl();
+
+ public void showCentered() {
+ showCentered = true;
+ setCenterPositionImpl();
+ }
+
+ public void showNear(final UIObject object) {
+ this.showNearObject = object;
+ showCentered = false;
+ showRelativeImpl();
+ }
+
+ private void showRelativeImpl() {
+ showRelativeTo(showNearObject);
+ }
+}
Copied: trunk/src/main/java/cc/kune/common/client/ui/PopupBottomPanel.java (from rev 1225, trunk/src/main/java/cc/kune/common/client/ui/PopupPanelBottomCentered.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/PopupBottomPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/ui/PopupBottomPanel.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,45 @@
+package cc.kune.common.client.ui;
+
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.PopupPanel;
+import com.google.gwt.user.client.ui.Widget;
+
+public class PopupBottomPanel extends AbstractAtBorderPopupPanel {
+ public PopupBottomPanel() {
+ this(false, false);
+ }
+
+ public PopupBottomPanel(final boolean autohide) {
+ this(autohide, false);
+ }
+
+ public PopupBottomPanel(final boolean autohide, final boolean modal) {
+ super(autohide, modal);
+ defaultStyleImpl();
+ }
+
+ @Override
+ public void defaultStyle() {
+ defaultStyleImpl();
+ }
+
+ private void defaultStyleImpl() {
+ setStyleName("k-popup-bottom-centered");
+ super.defaultStyle();
+ addStyleName("k-top-10corners");
+ }
+
+ @Override
+ protected void setCenterPositionImpl() {
+ setPopupPositionAndShow(new PopupPanel.PositionCallback() {
+ @Override
+ public void setPosition(final int offsetWidth, final int offsetHeight) {
+ final Widget widget = getWidget();
+ final int x = (Window.getClientWidth() - (widget != null ? getWidget().getOffsetWidth() : 0)) / 2;
+ final int y = Window.getClientHeight() - (widget != null ? getWidget().getOffsetHeight() : 0);
+ PopupBottomPanel.this.setPopupPosition(x, y);
+ }
+ });
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/common/client/ui/PopupBottomPanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/common/client/ui/PopupPanelBottomCentered.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/PopupPanelBottomCentered.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/common/client/ui/PopupPanelBottomCentered.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,59 +0,0 @@
-package cc.kune.common.client.ui;
-
-import com.google.gwt.event.logical.shared.ResizeEvent;
-import com.google.gwt.event.logical.shared.ResizeHandler;
-import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.ui.PopupPanel;
-import com.google.gwt.user.client.ui.Widget;
-
-public class PopupPanelBottomCentered extends PopupPanel {
-
- public PopupPanelBottomCentered() {
- super();
- init();
- }
-
- public PopupPanelBottomCentered(final boolean autohide) {
- super(autohide);
- init();
- }
-
- public PopupPanelBottomCentered(final boolean autohide, final boolean modal) {
- super(autohide, modal);
- init();
- }
-
- private void init() {
- setStyleName("k-popup-bottom-centered");
- addStyleName("k-opacity90");
- addStyleName("k-box-10shadow");
- addStyleName("k-top-10corners");
- Window.addResizeHandler(new ResizeHandler() {
- @Override
- public void onResize(final ResizeEvent event) {
- setCenterPositionImpl();
- }
- });
- }
-
- public void setCenterPosition() {
- setCenterPositionImpl();
- }
-
- private void setCenterPositionImpl() {
- setPopupPositionAndShow(new PopupPanel.PositionCallback() {
- @Override
- public void setPosition(final int offsetWidth, final int offsetHeight) {
- final Widget widget = getWidget();
- final int x = (Window.getClientWidth() - (widget != null ? getWidget().getOffsetWidth() : 0)) / 2;
- final int y = Window.getClientHeight() - (widget != null ? getWidget().getOffsetHeight() : 0);
- PopupPanelBottomCentered.this.setPopupPosition(x, y);
- }
- });
-
- }
-
- public void showCentered() {
- setCenterPositionImpl();
- }
-}
Deleted: trunk/src/main/java/cc/kune/common/client/ui/PopupPanelTopCentered.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/PopupPanelTopCentered.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/common/client/ui/PopupPanelTopCentered.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,58 +0,0 @@
-package cc.kune.common.client.ui;
-
-import com.google.gwt.event.logical.shared.ResizeEvent;
-import com.google.gwt.event.logical.shared.ResizeHandler;
-import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.ui.PopupPanel;
-
-public class PopupPanelTopCentered extends PopupPanel {
- public PopupPanelTopCentered() {
- super();
- init();
- }
-
- public PopupPanelTopCentered(final boolean autohide) {
- super(autohide);
- init();
- }
-
- public PopupPanelTopCentered(final boolean autohide, final boolean modal) {
- super(autohide, modal);
- if (modal) {
- super.setGlassEnabled(true);
- }
- init();
- }
-
- private void init() {
- setStyleName("k-popup-top-centered");
- addStyleName("k-opacity90");
- addStyleName("k-box-10shadow");
- addStyleName("k-bottom-10corners");
- Window.addResizeHandler(new ResizeHandler() {
- @Override
- public void onResize(final ResizeEvent event) {
- setCenterPositionImpl();
- }
- });
- }
-
- public void setCenterPosition() {
- setCenterPositionImpl();
- }
-
- private void setCenterPositionImpl() {
- setPopupPositionAndShow(new PopupPanel.PositionCallback() {
- @Override
- public void setPosition(final int offsetWidth, final int offsetHeight) {
- final int x = (Window.getClientWidth() - (getWidget() != null ? getWidget().getOffsetWidth() : 0)) / 2;
- final int y = 0;
- PopupPanelTopCentered.this.setPopupPosition(x, y);
- }
- });
- }
-
- public void showCentered() {
- setCenterPositionImpl();
- }
-}
Copied: trunk/src/main/java/cc/kune/common/client/ui/PopupTopPanel.java (from rev 1226, trunk/src/main/java/cc/kune/common/client/ui/PopupPanelTopCentered.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/PopupTopPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/ui/PopupTopPanel.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,43 @@
+package cc.kune.common.client.ui;
+
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.PopupPanel;
+
+public class PopupTopPanel extends AbstractAtBorderPopupPanel {
+ public PopupTopPanel() {
+ this(false, false);
+ }
+
+ public PopupTopPanel(final boolean autohide) {
+ this(autohide, false);
+ }
+
+ public PopupTopPanel(final boolean autohide, final boolean modal) {
+ super(autohide, modal);
+ defaultStyleImpl();
+ }
+
+ @Override
+ public void defaultStyle() {
+ defaultStyleImpl();
+ }
+
+ private void defaultStyleImpl() {
+ setStyleName("k-popup-top-centered");
+ super.defaultStyle();
+ addStyleName("k-bottom-10corners");
+ }
+
+ @Override
+ protected void setCenterPositionImpl() {
+ setPopupPositionAndShow(new PopupPanel.PositionCallback() {
+ @Override
+ public void setPosition(final int offsetWidth, final int offsetHeight) {
+ final int x = (Window.getClientWidth() - (getWidget() != null ? getWidget().getOffsetWidth() : 0)) / 2;
+ final int y = 0;
+ PopupTopPanel.this.setPopupPosition(x, y);
+ }
+ });
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/common/client/ui/PopupTopPanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/common/public/kune-common.css
===================================================================
--- trunk/src/main/java/cc/kune/common/public/kune-common.css 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/common/public/kune-common.css 2011-01-29 03:38:12 UTC (rev 1227)
@@ -6,11 +6,11 @@
}
-.k-floatleft {
+.k-floatleft, .k-fl {
float: left;
}
-.k-floatright {
+.k-floatright, .k-fr {
float: right;
}
Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,5 +1,7 @@
package cc.kune.core.client;
+import cc.kune.chat.client.ChatClient;
+import cc.kune.chat.client.ChatClientDefault;
import cc.kune.common.client.actions.gwtui.GwtGuiProvider;
import cc.kune.common.client.actions.gxtui.GxtGuiProvider;
import cc.kune.common.client.actions.ui.bind.DefaultGuiProvider;
@@ -131,5 +133,7 @@
bind(SitebarSignOutLink.class).in(Singleton.class);
bind(BeforeSignOut.class).in(Singleton.class);
bind(SiteTokenListeners.class).asEagerSingleton();
+
+ bind(ChatClient.class).to(ChatClientDefault.class).in(Singleton.class);
}
}
Modified: trunk/src/main/java/cc/kune/core/client/CoreGinjector.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreGinjector.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/CoreGinjector.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,5 +1,6 @@
package cc.kune.core.client;
+import cc.kune.chat.client.ChatClient;
import cc.kune.common.client.actions.gwtui.GwtGuiProvider;
import cc.kune.common.client.actions.gxtui.GxtGuiProvider;
import cc.kune.common.client.actions.ui.bind.GuiProvider;
@@ -34,6 +35,8 @@
* see the GWTPlatform doc
*/
+ ChatClient getChatClient();
+
AsyncProvider<CookiesManager> getCookiesManager();
Provider<CorePresenter> getCorePresenter();
@@ -54,8 +57,6 @@
I18nTranslationService getI18n();
- // PlaceManager getPlaceManager();
-
ProxyFailureHandler getProxyFailureHandler();
AsyncProvider<RegisterPresenter> getRegisterPresenter();
Modified: trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -3,7 +3,6 @@
import cc.kune.common.client.noti.NotifyUser;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
-import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.GWT.UncaughtExceptionHandler;
@@ -15,6 +14,7 @@
* The Class KuneEntryPoint.
*/
public class KuneEntryPoint implements EntryPoint {
+
public final CoreGinjector ginjector = GWT.create(CoreGinjector.class);
/*
@@ -31,7 +31,6 @@
e.printStackTrace();
}
});
- Log.setCurrentLogLevel(Log.LOG_LEVEL_DEBUG);
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
@@ -58,5 +57,6 @@
ginjector.getSpinerPresenter();
ginjector.getSiteLogoPresenter();
ginjector.getSpacesTabPresenter();
+ ginjector.getChatClient();
}
}
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -23,6 +23,7 @@
import cc.kune.core.client.cookies.CookiesManager;
import cc.kune.core.client.errors.UserAuthException;
import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.logs.Log;
import cc.kune.core.client.notify.spiner.ProgressHideEvent;
import cc.kune.core.client.notify.spiner.ProgressShowEvent;
import cc.kune.core.client.resources.CoreMessages;
@@ -33,7 +34,6 @@
import cc.kune.core.shared.dto.UserDTO;
import cc.kune.core.shared.dto.UserInfoDTO;
-import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.CloseEvent;
Modified: trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -20,6 +20,7 @@
package cc.kune.core.client.errors;
import cc.kune.common.client.noti.NotifyLevel;
+import cc.kune.core.client.logs.Log;
import cc.kune.core.client.notify.alerts.AlertEvent;
import cc.kune.core.client.notify.msgs.UserNotifyEvent;
import cc.kune.core.client.notify.spiner.ProgressHideEvent;
@@ -28,7 +29,6 @@
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException;
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -25,12 +25,12 @@
import cc.kune.common.client.utils.Location;
import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.client.utils.WindowUtils;
+import cc.kune.core.client.logs.Log;
import cc.kune.core.client.rpcservices.I18nServiceAsync;
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.dto.I18nLanguageDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import com.allen_sauer.gwt.log.client.Log;
import com.calclab.suco.client.events.Listener0;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.i18n.client.DateTimeFormat;
@@ -192,6 +192,7 @@
*/
@Override
public String t(final String text) {
+ assert lexicon != null;
final String encodeText = TextUtils.escapeHtmlLight(text);
String translation = lexicon.get(encodeText);
if (lexicon.containsKey(encodeText)) {
Modified: trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -20,13 +20,13 @@
package cc.kune.core.client.init;
import cc.kune.common.client.noti.NotifyLevel;
+import cc.kune.core.client.logs.Log;
import cc.kune.core.client.notify.msgs.UserNotifyEvent;
import cc.kune.core.client.notify.spiner.ProgressHideEvent;
import cc.kune.core.client.rpcservices.SiteServiceAsync;
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.dto.InitDataDTO;
-import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.event.shared.EventBus;
Added: trunk/src/main/java/cc/kune/core/client/logs/Log.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/logs/Log.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/logs/Log.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,19 @@
+package cc.kune.core.client.logs;
+
+import com.google.gwt.core.client.GWT;
+
+public class Log {
+
+ public static void debug(final String message) {
+ GWT.log(message);
+ }
+
+ public static void debug(final String message, final Throwable caught) {
+ GWT.log(message, caught);
+ }
+
+ public static void error(final String message) {
+ debug(message);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/logs/Log.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierViewImpl.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/notify/msgs/UserNotifierViewImpl.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,6 +1,6 @@
package cc.kune.core.client.notify.msgs;
-import cc.kune.common.client.ui.PopupPanelBottomCentered;
+import cc.kune.common.client.ui.PopupBottomPanel;
import cc.kune.core.client.notify.msgs.UserNotifierPresenter.UserNotifierView;
import cc.kune.msgs.client.CloseCallback;
import cc.kune.msgs.client.UserMessagesPanel;
@@ -13,7 +13,7 @@
public class UserNotifierViewImpl extends PopupViewImpl implements UserNotifierView {
private final UserMessagesPresenter msgs;
- private final PopupPanelBottomCentered popup;
+ private final PopupBottomPanel popup;
@Inject
public UserNotifierViewImpl(EventBus eventBus, UserMessagesPresenter msgs, UserMessagesPanel panel) {
@@ -21,7 +21,7 @@
this.msgs = msgs;
msgs.init(panel);
panel.setWidth("370px");
- popup = new PopupPanelBottomCentered(false, false);
+ popup = new PopupBottomPanel(false, false);
popup.add(panel);
popup.show();
}
Copied: trunk/src/main/java/cc/kune/core/client/resources/icons/IconBorrarCssResource.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgCssResource.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/resources/icons/IconBorrarCssResource.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/resources/icons/IconBorrarCssResource.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,36 @@
+package cc.kune.core.client.resources.icons;
+
+import com.google.gwt.resources.client.CssResource;
+
+public interface IconBorrarCssResource extends CssResource {
+ //
+ // @ClassName("k-icon-addGreen")
+ // String kIconAddGreen();
+ //
+ // @ClassName("k-icon-bug")
+ // String kIconBug();
+ //
+ // @ClassName("k-icon-chat")
+ // String kIconChat();
+ //
+ // @ClassName("k-icon-groupHome")
+ // String kIconGroupHome();
+ //
+ // @ClassName("k-icon-info")
+ // String kIconInfo();
+ //
+ // @ClassName("k-icon-kuneIcon16")
+ // String kIconKuneIcon16();
+ //
+ // @ClassName("k-icon-language")
+ // String kIconLanguage();
+ //
+ // @ClassName("k-icon-maximize")
+ // String kIconMaaximize();
+ //
+ // @ClassName("k-icon-minimize")
+ // String kIconMinimize();
+ //
+ // @ClassName("k-icon-prefs")
+ // String kIconPrefs();
+}
Copied: trunk/src/main/java/cc/kune/core/client/resources/icons/IconConstants.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgConstants.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/resources/icons/IconConstants.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/resources/icons/IconConstants.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,17 @@
+package cc.kune.core.client.resources.icons;
+
+import com.google.gwt.resources.client.ImageResource;
+
+public final class IconConstants {
+
+ public static final String CSS_SUFFIX = "k-icon-";
+
+ public static final String PATH_PREFIX = "images/";
+
+ public static String toPath(final ImageResource img) {
+ return PATH_PREFIX + img.getName() + ".png";
+ }
+
+ private IconConstants() {
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/client/resources/icons/IconResources.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgResources.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/resources/icons/IconResources.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/resources/icons/IconResources.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,44 @@
+package cc.kune.core.client.resources.icons;
+
+import com.google.gwt.resources.client.ClientBundle;
+import com.google.gwt.resources.client.ImageResource;
+
+public interface IconResources extends ClientBundle {
+
+ @Source("add-green.png")
+ ImageResource addGreen();
+
+ @Source("bug.png")
+ ImageResource bug();
+
+ @Source("e-icon.gif")
+ ImageResource chat();
+
+ @Source("kicon.css")
+ // @Strict
+ IconBorrarCssResource css();
+
+ @Source("del-green.png")
+ ImageResource delGreen();
+
+ @Source("group-home.png")
+ ImageResource groupHome();
+
+ @Source("info.png")
+ ImageResource info();
+
+ @Source("kune-icon16.png")
+ ImageResource kuneIcon16();
+
+ @Source("language.png")
+ ImageResource language();
+
+ @Source("arrow_out.png")
+ ImageResource maximize();
+
+ @Source("arrow_in.png")
+ ImageResource minimize();
+
+ @Source("prefs.png")
+ ImageResource prefs();
+}
Copied: trunk/src/main/java/cc/kune/core/client/resources/icons/add-green.png (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/add-green.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/icons/add-green.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Copied: trunk/src/main/java/cc/kune/core/client/resources/icons/arrow_in.png (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/arrow_in.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/icons/arrow_in.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Copied: trunk/src/main/java/cc/kune/core/client/resources/icons/arrow_out.png (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/arrow_out.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/icons/arrow_out.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Copied: trunk/src/main/java/cc/kune/core/client/resources/icons/bug.png (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/bug.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/icons/bug.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Copied: trunk/src/main/java/cc/kune/core/client/resources/icons/del-green.png (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/del-green.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/icons/del-green.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/icons/e-icon.gif
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/icons/e-icon.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Copied: trunk/src/main/java/cc/kune/core/client/resources/icons/group-home.png (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/group-home.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/icons/group-home.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Copied: trunk/src/main/java/cc/kune/core/client/resources/icons/info.png (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/info.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/icons/info.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Copied: trunk/src/main/java/cc/kune/core/client/resources/icons/kicon.css (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/kimg.css)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/resources/icons/kicon.css (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/resources/icons/kicon.css 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,41 @@
+@external k-icon-info,k-icon-language,k-icon-kuneIcon16,k-icon-bug,k-icon-prefs,k-icon-groupHome,k-icon-addGreen,k-icon-maximize,k-icon-minimize,k-*;
+
+@sprite div .k-icon-info {
+ gwt-image: "info";
+}
+
+@sprite div .k-icon-language {
+ gwt-image: "language";
+}
+
+@sprite div .k-icon-kuneIcon16 {
+ gwt-image: "kuneIcon16";
+}
+
+@sprite div .k-icon-bug {
+ gwt-image: "bug";
+}
+
+@sprite div .k-icon-prefs {
+ gwt-image: "prefs";
+}
+
+@sprite div .k-icon-groupHome {
+ gwt-image: "groupHome";
+}
+
+@sprite div .k-icon-addGreen {
+ gwt-image: "addGreen";
+}
+
+@sprite div .k-icon-maximize {
+ gwt-image: "maximize";
+}
+
+@sprite div .k-icon-chat {
+ gwt-image: "chat";
+}
+
+@sprite div .k-icon-minimize {
+ gwt-image: "minimize";
+}
\ No newline at end of file
Copied: trunk/src/main/java/cc/kune/core/client/resources/icons/kune-icon16.png (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/kune-icon16.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/icons/kune-icon16.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Copied: trunk/src/main/java/cc/kune/core/client/resources/icons/language.png (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/language.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/icons/language.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Copied: trunk/src/main/java/cc/kune/core/client/resources/icons/prefs.png (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/prefs.png)
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/icons/prefs.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,6 +1,7 @@
package cc.kune.core.client.sitebar;
import cc.kune.common.client.actions.AbstractExtendedAction;
+import cc.kune.common.client.actions.Action;
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.common.client.actions.ui.IsActionExtensible;
import cc.kune.common.client.actions.ui.descrip.AbstractGuiActionDescrip;
@@ -8,12 +9,15 @@
import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.client.actions.ui.descrip.ToolbarDescriptor;
+import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor;
+import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor.Type;
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.notify.msgs.UserNotifyEvent;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.gwt.event.shared.EventBus;
import com.google.inject.Inject;
+import com.google.inject.Provider;
import com.gwtplatform.mvp.client.Presenter;
import com.gwtplatform.mvp.client.View;
import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit;
@@ -34,15 +38,16 @@
public static final ToolbarDescriptor TOOLBAR = new ToolbarDescriptor();
private final I18nTranslationService i18n;
- private final SitebarNewGroupLink newGroupLink;
+ private final Provider<SitebarNewGroupLink> newGroupLink;
private MenuDescriptor optionsMenu;
- private final SitebarSignInLink signInLink;
- private final SitebarSignOutLink signOutLink;
+ private final Provider<SitebarSignInLink> signInLink;
+ private final Provider<SitebarSignOutLink> signOutLink;
@Inject
public SitebarActionsPresenter(final EventBus eventBus, final SitebarActionsView view,
- final SitebarActionsProxy proxy, final I18nTranslationService i18n, final SitebarNewGroupLink newGroupLink,
- final SitebarSignOutLink signOutLink, final SitebarSignInLink signInLink) {
+ final SitebarActionsProxy proxy, final I18nTranslationService i18n,
+ final Provider<SitebarNewGroupLink> newGroupLink, final Provider<SitebarSignOutLink> signOutLink,
+ final Provider<SitebarSignInLink> signInLink) {
super(eventBus, view, proxy);
this.i18n = i18n;
this.newGroupLink = newGroupLink;
@@ -72,39 +77,29 @@
public void init() {
optionsMenu = new MenuDescriptor(i18n.t("Options"));
-
- // final IconLabelDescriptor icon = new IconLabelDescriptor("test");
final AbstractExtendedAction action = new AbstractExtendedAction() {
-
@Override
public void actionPerformed(final ActionEvent event) {
getEventBus().fireEvent(new UserNotifyEvent("Testing only"));
}
};
+ action.putValue(Action.NAME, "Test");
final MenuItemDescriptor mItem = new MenuItemDescriptor(optionsMenu, action);
- optionsMenu.setStyles("k-floatright, k-no-backimage, k-btn-sitebar");
- // action.putValue(Action.NAME, "kk");
- // action.putValue(Action.SHORT_DESCRIPTION, "tooltip");
- // final ButtonDescriptor signIn = new ButtonDescriptor(action);
- // final ToolbarSeparatorDescriptor fill = new
- // ToolbarSeparatorDescriptor(Type.fill, TOOLBAR);
+ optionsMenu.setStyles("k-no-backimage, k-btn-sitebar");
+ final ToolbarSeparatorDescriptor separator = new ToolbarSeparatorDescriptor(Type.separator,
+ SitebarActionsPresenter.TOOLBAR);
+ final ToolbarSeparatorDescriptor spacer = new ToolbarSeparatorDescriptor(Type.spacer,
+ SitebarActionsPresenter.TOOLBAR);
addAction(TOOLBAR);
- // addAction(fill);
- // addAction(icon);
- // addAction(signIn);
- // icon.setStyles("k-floatright");
- // signIn.setStyles("k-floatright, k-no-backimage");
+ addAction(signInLink.get());
+ addAction(signOutLink.get());
+ addAction(spacer);
+ addAction(separator);
+ addAction(newGroupLink.get());
+ addAction(spacer);
+ addAction(separator);
addAction(optionsMenu);
addAction(mItem);
- // addAction(new ToolbarSeparatorDescriptor(Type.separator,
- // SitebarActionsPresenter.TOOLBAR));
- addAction(newGroupLink);
- addAction(signInLink);
- addAction(signOutLink);
- // addAction(new ToolbarSeparatorDescriptor(Type.spacer,
- // SitebarActionsPresenter.TOOLBAR));
- // addAction(new ToolbarSeparatorDescriptor(Type.spacer,
- // SitebarActionsPresenter.TOOLBAR));
}
@ProxyEvent
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsViewImpl.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsViewImpl.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,6 +1,6 @@
package cc.kune.core.client.sitebar;
-import cc.kune.common.client.actions.ui.ActionFlowPanel;
+import cc.kune.common.client.actions.ui.ActionSimplePanel;
import cc.kune.common.client.actions.ui.descrip.AbstractGuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.core.client.sitebar.SitebarActionsPresenter.SitebarActionsView;
@@ -12,14 +12,15 @@
public class SitebarActionsViewImpl extends ViewImpl implements SitebarActionsView {
- private final ActionFlowPanel panel;
+ private final ActionSimplePanel panel;
@Inject
- public SitebarActionsViewImpl(final WsArmor armor, final ActionFlowPanel panel) {
+ public SitebarActionsViewImpl(final WsArmor armor, final ActionSimplePanel panel) {
this.panel = panel;
panel.addStyleName("k-sitebar");
+ panel.addStyleName("k-floatright");
+ armor.getSitebar().add(panel);
// armor.getDocContainer().add(panel);
- armor.getSitebar().add(panel);
// panel.setWidth("100%");
}
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -33,6 +33,6 @@
@Inject
public SitebarNewGroupLink(final SitebarNewGroupAction action) {
super(action);
- setStyles("k-floatright, k-no-backimage, k-btn-sitebar");
+ setStyles("k-no-backimage, k-btn-sitebar");
}
}
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -42,7 +42,7 @@
@Inject
public SitebarSignInLink(final SitebarSignInAction action, final EventBus eventBus, final Session session) {
super(action);
- setStyles("k-floatright, k-no-backimage, k-btn-sitebar");
+ setStyles("k-no-backimage, k-btn-sitebar");
setId(SITE_SIGN_IN);
setVisible(!session.isLogged());
eventBus.addHandler(UserSignInEvent.getType(), new UserSignInHandler() {
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -96,7 +96,7 @@
public SitebarSignOutLink(final SitebarSignOutAction action, final EventBus eventBus,
final ErrorHandler errorHandler, final Session session) {
super(action);
- setStyles("k-floatright, k-no-backimage, k-btn-sitebar");
+ setStyles("k-no-backimage, k-btn-sitebar");
setId(SITE_SIGN_OUT);
setVisible(session.isLogged());
eventBus.addHandler(UserSignInEvent.getType(), new UserSignInHandler() {
Modified: trunk/src/main/java/cc/kune/core/client/state/AccessRightsClientManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/AccessRightsClientManager.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/state/AccessRightsClientManager.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,32 +1,30 @@
package cc.kune.core.client.state;
-
import cc.kune.core.shared.domain.utils.AccessRights;
-import cc.kune.core.shared.dto.StateAbstractDTO;
-import com.calclab.suco.client.events.Event2;
-import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener2;
public class AccessRightsClientManager {
- private AccessRights previousRights;
- private final Event2<AccessRights, AccessRights> onRightsChanged;
+ private final AccessRights previousRights;
+ // private final Event2<AccessRights, AccessRights> onRightsChanged;
+
public AccessRightsClientManager(final StateManager stateManager) {
this.previousRights = null;
- this.onRightsChanged = new Event2<AccessRights , AccessRights >("onRightsChanged");
- stateManager.onStateChanged(new Listener<StateAbstractDTO>() {
- public void onEvent(final StateAbstractDTO newState) {
- final AccessRights rights = newState.getGroupRights();
- if (!rights.equals(previousRights)) {
- onRightsChanged.fire(previousRights, rights);
- previousRights = rights;
- }
- }
- });
+ // this.onRightsChanged = new Event2<AccessRights , AccessRights
+ // >("onRightsChanged");
+ // stateManager.onStateChanged(new Listener<StateAbstractDTO>() {
+ // public void onEvent(final StateAbstractDTO newState) {
+ // final AccessRights rights = newState.getGroupRights();
+ // if (!rights.equals(previousRights)) {
+ // onRightsChanged.fire(previousRights, rights);
+ // previousRights = rights;
+ // }
+ // }
+ // });
}
public void onRightsChanged(final Listener2<AccessRights, AccessRights> listener) {
- onRightsChanged.add(listener);
+ // onRightsChanged.add(listener);
}
}
Added: trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,97 @@
+package cc.kune.core.client.state;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+
+import com.google.gwt.event.shared.HasHandlers;
+
+public class GroupChangedEvent extends GwtEvent<GroupChangedEvent.GroupChangedHandler> {
+
+ public interface HasGroupChangedHandlers extends HasHandlers {
+ HandlerRegistration addGroupChangedHandler(GroupChangedHandler handler);
+ }
+
+ public interface GroupChangedHandler extends EventHandler {
+ public void onGroupChanged(GroupChangedEvent event);
+ }
+
+ private static final Type<GroupChangedHandler> TYPE = new Type<GroupChangedHandler>();
+
+ public static void fire(HasHandlers source, java.lang.String previousGroup, java.lang.String newGroup) {
+ source.fireEvent(new GroupChangedEvent(previousGroup, newGroup));
+ }
+
+ public static Type<GroupChangedHandler> getType() {
+ return TYPE;
+ }
+
+ java.lang.String previousGroup;
+ java.lang.String newGroup;
+
+ public GroupChangedEvent(java.lang.String previousGroup, java.lang.String newGroup) {
+ this.previousGroup = previousGroup;
+ this.newGroup = newGroup;
+ }
+
+ protected GroupChangedEvent() {
+ // Possibly for serialization.
+ }
+
+ @Override
+ public Type<GroupChangedHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public java.lang.String getPreviousGroup() {
+ return previousGroup;
+ }
+
+ public java.lang.String getNewGroup() {
+ return newGroup;
+ }
+
+ @Override
+ protected void dispatch(GroupChangedHandler handler) {
+ handler.onGroupChanged(this);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ GroupChangedEvent other = (GroupChangedEvent) obj;
+ if (previousGroup == null) {
+ if (other.previousGroup != null)
+ return false;
+ } else if (!previousGroup.equals(other.previousGroup))
+ return false;
+ if (newGroup == null) {
+ if (other.newGroup != null)
+ return false;
+ } else if (!newGroup.equals(other.newGroup))
+ return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + (previousGroup == null ? 1 : previousGroup.hashCode());
+ hashCode = (hashCode * 37) + (newGroup == null ? 1 : newGroup.hashCode());
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "GroupChangedEvent["
+ + previousGroup
+ + ","
+ + newGroup
+ + "]";
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/state/GroupChangedEvent.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/state/SessionDefault.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -22,7 +22,9 @@
import java.util.Collection;
import java.util.List;
+import cc.kune.common.client.errors.NotImplementedException;
import cc.kune.core.client.cookies.CookiesManager;
+import cc.kune.core.client.logs.Log;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.UserServiceAsync;
import cc.kune.core.shared.domain.utils.StateToken;
@@ -38,9 +40,6 @@
import cc.kune.core.shared.dto.UserInfoDTO;
import cc.kune.core.shared.dto.UserSimpleDTO;
-import com.allen_sauer.gwt.log.client.Log;
-import com.calclab.suco.client.events.Event;
-import com.calclab.suco.client.events.Event0;
import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
import com.google.gwt.core.client.GWT;
@@ -49,31 +48,25 @@
import com.google.inject.Provider;
public class SessionDefault implements Session {
- private String userHash;
- private InitDataDTO initData;
+ private Object[][] countriesArray;
+ private I18nLanguageDTO currentLanguage;
+ private StateAbstractDTO currentState;
private UserInfoDTO currentUserInfo;
+ private final EventBus eventBus;
+ private InitDataDTO initData;
private Object[][] languagesArray;
- private Object[][] countriesArray;
private Object[][] timezonesArray;
- private StateAbstractDTO currentState;
- private I18nLanguageDTO currentLanguage;
- private final Event<InitDataDTO> onInitDataReceived;
- private final Event<UserInfoDTO> onUserSignIn;
- private final Event0 onUserSignOut;
+ private String userHash;
private final Provider<UserServiceAsync> userServiceProvider;
- private final EventBus eventBus;
@Inject
public SessionDefault(final CookiesManager cookieManager, final Provider<UserServiceAsync> userServiceProvider,
- EventBus eventBus) {
+ final EventBus eventBus) {
this.eventBus = eventBus;
this.userHash = cookieManager.getCurrentCookie();
this.userHash = userHash == null || userHash.equals("null") ? null : userHash;
this.userServiceProvider = userServiceProvider;
languagesArray = null;
- this.onInitDataReceived = new Event<InitDataDTO>("initDataReceived");
- this.onUserSignIn = new Event<UserInfoDTO>("onUserSignIn");
- this.onUserSignOut = new Event0("onUserSignOut");
}
@Override
@@ -263,19 +256,50 @@
return !isLogged();
}
+ private Object[][] mapCountries() {
+ assert initData != null;
+ final Object[][] objs = new Object[initData.getCountries().size()][1];
+ int i = 0;
+ for (final I18nCountryDTO country : initData.getCountries()) {
+ final Object[] obj = new Object[] { country.getCode(), country.getEnglishName() };
+ objs[i++] = obj;
+ }
+ return objs;
+ }
+
+ private Object[][] mapLangs() {
+ assert initData != null;
+ final Object[][] objs = new Object[initData.getLanguages().size()][1];
+ int i = 0;
+ for (final I18nLanguageSimpleDTO language : initData.getLanguages()) {
+ final Object[] obj = new Object[] { language.getCode(), language.getEnglishName() };
+ objs[i++] = obj;
+ }
+ return objs;
+ }
+
+ private void mapTimezones() {
+ assert initData != null;
+ timezonesArray = new Object[initData.getTimezones().length][1];
+ for (int i = 0; i < getTimezones().length; i++) {
+ final Object[] obj = new Object[] { initData.getTimezones()[i] };
+ timezonesArray[i] = obj;
+ }
+ }
+
@Override
public void onInitDataReceived(final Listener<InitDataDTO> listener) {
- onInitDataReceived.add(listener);
+ throw new NotImplementedException();
}
@Override
public void onUserSignIn(final Listener<UserInfoDTO> listener) {
- onUserSignIn.add(listener);
+ throw new NotImplementedException();
}
@Override
public void onUserSignOut(final Listener0 listener) {
- onUserSignOut.add(listener);
+ throw new NotImplementedException();
}
@Override
@@ -293,52 +317,18 @@
this.currentUserInfo = currentUserInfo;
if (currentUserInfo != null) {
eventBus.fireEvent(new UserSignInEvent(currentUserInfo));
- onUserSignIn.fire(currentUserInfo);
} else {
eventBus.fireEvent(new UserSignOutEvent());
- onUserSignOut.fire();
}
}
@Override
public void setInitData(final InitDataDTO initData) {
this.initData = initData;
- onInitDataReceived.fire(initData);
}
@Override
public void setUserHash(final String userHash) {
this.userHash = userHash;
}
-
- private Object[][] mapCountries() {
- assert initData != null;
- final Object[][] objs = new Object[initData.getCountries().size()][1];
- int i = 0;
- for (final I18nCountryDTO country : initData.getCountries()) {
- final Object[] obj = new Object[] { country.getCode(), country.getEnglishName() };
- objs[i++] = obj;
- }
- return objs;
- }
-
- private Object[][] mapLangs() {
- assert initData != null;
- final Object[][] objs = new Object[initData.getLanguages().size()][1];
- int i = 0;
- for (final I18nLanguageSimpleDTO language : initData.getLanguages()) {
- final Object[] obj = new Object[] { language.getCode(), language.getEnglishName() };
- objs[i++] = obj;
- }
- return objs;
- }
-
- private void mapTimezones() {
- assert initData != null;
- timezonesArray = new Object[initData.getTimezones().length][1];
- for (int i = 0; i < getTimezones().length; i++) {
- final Object[] obj = new Object[] { initData.getTimezones()[i] };
- timezonesArray[i] = obj;
- }
- }
}
Added: trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,83 @@
+package cc.kune.core.client.state;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+
+import com.google.gwt.event.shared.HasHandlers;
+
+public class SocialNetworkChangedEvent extends GwtEvent<SocialNetworkChangedEvent.SocialNetworkChangedHandler> {
+
+ public interface HasSocialNetworkChangedHandlers extends HasHandlers {
+ HandlerRegistration addSocialNetworkChangedHandler(SocialNetworkChangedHandler handler);
+ }
+
+ public interface SocialNetworkChangedHandler extends EventHandler {
+ public void onSocialNetworkChanged(SocialNetworkChangedEvent event);
+ }
+
+ private static final Type<SocialNetworkChangedHandler> TYPE = new Type<SocialNetworkChangedHandler>();
+
+ public static void fire(HasHandlers source, cc.kune.core.shared.dto.StateAbstractDTO state) {
+ source.fireEvent(new SocialNetworkChangedEvent(state));
+ }
+
+ public static Type<SocialNetworkChangedHandler> getType() {
+ return TYPE;
+ }
+
+ cc.kune.core.shared.dto.StateAbstractDTO state;
+
+ public SocialNetworkChangedEvent(cc.kune.core.shared.dto.StateAbstractDTO state) {
+ this.state = state;
+ }
+
+ protected SocialNetworkChangedEvent() {
+ // Possibly for serialization.
+ }
+
+ @Override
+ public Type<SocialNetworkChangedHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public cc.kune.core.shared.dto.StateAbstractDTO getState() {
+ return state;
+ }
+
+ @Override
+ protected void dispatch(SocialNetworkChangedHandler handler) {
+ handler.onSocialNetworkChanged(this);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ SocialNetworkChangedEvent other = (SocialNetworkChangedEvent) obj;
+ if (state == null) {
+ if (other.state != null)
+ return false;
+ } else if (!state.equals(other.state))
+ return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + (state == null ? 1 : state.hashCode());
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "SocialNetworkChangedEvent["
+ + state
+ + "]";
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/state/SocialNetworkChangedEvent.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,83 @@
+package cc.kune.core.client.state;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+
+import com.google.gwt.event.shared.HasHandlers;
+
+public class StateChangedEvent extends GwtEvent<StateChangedEvent.StateChangedHandler> {
+
+ public interface HasStateChangedHandlers extends HasHandlers {
+ HandlerRegistration addStateChangedHandler(StateChangedHandler handler);
+ }
+
+ public interface StateChangedHandler extends EventHandler {
+ public void onStateChanged(StateChangedEvent event);
+ }
+
+ private static final Type<StateChangedHandler> TYPE = new Type<StateChangedHandler>();
+
+ public static void fire(HasHandlers source, cc.kune.core.shared.dto.StateAbstractDTO state) {
+ source.fireEvent(new StateChangedEvent(state));
+ }
+
+ public static Type<StateChangedHandler> getType() {
+ return TYPE;
+ }
+
+ cc.kune.core.shared.dto.StateAbstractDTO state;
+
+ public StateChangedEvent(cc.kune.core.shared.dto.StateAbstractDTO state) {
+ this.state = state;
+ }
+
+ protected StateChangedEvent() {
+ // Possibly for serialization.
+ }
+
+ @Override
+ public Type<StateChangedHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public cc.kune.core.shared.dto.StateAbstractDTO getState() {
+ return state;
+ }
+
+ @Override
+ protected void dispatch(StateChangedHandler handler) {
+ handler.onStateChanged(this);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ StateChangedEvent other = (StateChangedEvent) obj;
+ if (state == null) {
+ if (other.state != null)
+ return false;
+ } else if (!state.equals(other.state))
+ return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + (state == null ? 1 : state.hashCode());
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "StateChangedEvent["
+ + state
+ + "]";
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/state/StateChangedEvent.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -23,15 +23,14 @@
import cc.kune.common.client.actions.BeforeActionCollection;
import cc.kune.common.client.actions.BeforeActionListener;
+import cc.kune.common.client.errors.NotImplementedException;
+import cc.kune.core.client.logs.Log;
import cc.kune.core.client.notify.spiner.ProgressHideEvent;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.SocialNetworkDataDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
-import com.allen_sauer.gwt.log.client.Log;
-import com.calclab.suco.client.events.Event;
-import com.calclab.suco.client.events.Event2;
import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener2;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
@@ -44,10 +43,6 @@
private final ContentProvider contentProvider;
private final EventBus eventBus;
private final HistoryWrapper history;
- private final Event2<String, String> onGroupChanged;
- private final Event<StateAbstractDTO> onSocialNetworkChanged;
- private final Event<StateAbstractDTO> onStateChanged;
- private final Event2<String, String> onToolChanged;
private StateToken previousToken;
/**
* When a historyChanged is interrupted (for instance because you are
@@ -66,10 +61,6 @@
this.history = history;
this.previousToken = null;
this.resumedToken = null;
- this.onStateChanged = new Event<StateAbstractDTO>("onStateChanged");
- this.onGroupChanged = new Event2<String, String>("onGroupChanged");
- this.onToolChanged = new Event2<String, String>("onToolChanged");
- this.onSocialNetworkChanged = new Event<StateAbstractDTO>("onSocialNetworkChanged");
siteTokens = new HashMap<String, HistoryTokenCallback>();
beforeStateChangeCollection = new BeforeActionCollection();
eventBus.addHandler(UserSignInEvent.getType(), new UserSignInEvent.UserSignInHandler() {
@@ -110,10 +101,10 @@
final String newToolName = newTokenTool == null ? "" : newTokenTool;
if (previousToken == null || previousToolName == null || !previousToolName.equals(newToolName)) {
- onToolChanged.fire(previousToolName, newToolName);
+ ToolChangedEvent.fire(eventBus, previousToolName, newToolName);
}
if (previousToken == null || !previousGroup.equals(newGroup)) {
- onGroupChanged.fire(previousGroup, newGroup);
+ GroupChangedEvent.fire(eventBus, previousGroup, newGroup);
}
}
@@ -134,7 +125,7 @@
@Override
public void onGroupChanged(final Listener2<String, String> listener) {
- onGroupChanged.add(listener);
+ throw new NotImplementedException();
}
private void onHistoryChanged(final StateToken newState) {
@@ -171,17 +162,17 @@
@Override
public void onSocialNetworkChanged(final Listener<StateAbstractDTO> listener) {
- onSocialNetworkChanged.add(listener);
+ throw new NotImplementedException();
}
@Override
public void onStateChanged(final Listener<StateAbstractDTO> listener) {
- onStateChanged.add(listener);
+ throw new NotImplementedException();
}
@Override
public void onToolChanged(final Listener2<String, String> listener) {
- onToolChanged.add(listener);
+ throw new NotImplementedException();
}
@Override
@@ -238,13 +229,13 @@
// with new SN data and we refresh the state
// to avoid to reload() again the state
state.setSocialNetworkData(socialNet);
- onSocialNetworkChanged.fire(state);
+ SocialNetworkChangedEvent.fire(eventBus, state);
}
}
void setState(final StateAbstractDTO newState) {
session.setCurrentState(newState);
- onStateChanged.fire(newState);
+ StateChangedEvent.fire(eventBus, newState);
eventBus.fireEvent(new ProgressHideEvent());
checkGroupAndToolChange(newState);
previousToken = newState.getStateToken();
Added: trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -0,0 +1,97 @@
+package cc.kune.core.client.state;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+
+import com.google.gwt.event.shared.HasHandlers;
+
+public class ToolChangedEvent extends GwtEvent<ToolChangedEvent.ToolChangedHandler> {
+
+ public interface HasToolChangedHandlers extends HasHandlers {
+ HandlerRegistration addToolChangedHandler(ToolChangedHandler handler);
+ }
+
+ public interface ToolChangedHandler extends EventHandler {
+ public void onToolChanged(ToolChangedEvent event);
+ }
+
+ private static final Type<ToolChangedHandler> TYPE = new Type<ToolChangedHandler>();
+
+ public static void fire(HasHandlers source, java.lang.String previousTool, java.lang.String newTool) {
+ source.fireEvent(new ToolChangedEvent(previousTool, newTool));
+ }
+
+ public static Type<ToolChangedHandler> getType() {
+ return TYPE;
+ }
+
+ java.lang.String previousTool;
+ java.lang.String newTool;
+
+ public ToolChangedEvent(java.lang.String previousTool, java.lang.String newTool) {
+ this.previousTool = previousTool;
+ this.newTool = newTool;
+ }
+
+ protected ToolChangedEvent() {
+ // Possibly for serialization.
+ }
+
+ @Override
+ public Type<ToolChangedHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public java.lang.String getPreviousTool() {
+ return previousTool;
+ }
+
+ public java.lang.String getNewTool() {
+ return newTool;
+ }
+
+ @Override
+ protected void dispatch(ToolChangedHandler handler) {
+ handler.onToolChanged(this);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ToolChangedEvent other = (ToolChangedEvent) obj;
+ if (previousTool == null) {
+ if (other.previousTool != null)
+ return false;
+ } else if (!previousTool.equals(other.previousTool))
+ return false;
+ if (newTool == null) {
+ if (other.newTool != null)
+ return false;
+ } else if (!newTool.equals(other.newTool))
+ return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + (previousTool == null ? 1 : previousTool.hashCode());
+ hashCode = (hashCode * 37) + (newTool == null ? 1 : newTool.hashCode());
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "ToolChangedEvent["
+ + previousTool
+ + ","
+ + newTool
+ + "]";
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/state/ToolChangedEvent.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,6 +1,6 @@
package cc.kune.core.client.ui.dialogs;
-import cc.kune.common.client.ui.PopupPanelTopCentered;
+import cc.kune.common.client.ui.PopupTopPanel;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.logical.shared.HasCloseHandlers;
@@ -8,13 +8,13 @@
public class BasicTopDialog extends BasicDialog {
- private final PopupPanelTopCentered popup;
+ private final PopupTopPanel popup;
public BasicTopDialog(final String dialogId, final String title, final boolean autohide, final boolean modal,
final boolean autoscroll, final int width, final int height, final String icon,
final String firstButtonTitle, final String firstButtonId, final String cancelButtonTitle,
final String cancelButtonId, final int tabIndexStart) {
- popup = new PopupPanelTopCentered(autohide, modal);
+ popup = new PopupTopPanel(autohide, modal);
popup.add(this);
popup.ensureDebugId(dialogId);
super.getTitleText().setText(title);
Modified: trunk/src/main/java/cc/kune/core/public/ws.css
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.css 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/public/ws.css 2011-01-29 03:38:12 UTC (rev 1227)
@@ -381,7 +381,7 @@
}
.k-sitebar {
- margin-top: -30px;
+ /* margin-top: -30px; */
}
.k-link {
Modified: trunk/src/main/java/cc/kune/core/public/ws.html
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.html 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/cc/kune/core/public/ws.html 2011-01-29 03:38:12 UTC (rev 1227)
@@ -5,90 +5,41 @@
<title>Kune</title>
<script type="text/javascript" language="javascript"
src="/ws/ws.nocache.js"></script>
-</head>
+<meta name="emite.httpBase" content="/http-bind" />
+<meta name="emite.host" content="localhost" />
+<meta name="emite.searchHost" content="search.localhost" />
+<!-- <meta name="emite.session" content="login" /> -->
+<meta name="emite.user" content="admin@localhost" />
+<meta name="emite.password" content="easyeasy" />
+<meta name="hablar.roomService" content="conference.localhost" />
+<meta name="hablar.login" content="false" />
+<meta name="hablar.roster" content="true" />
+<meta name="hablar.dockRoster" content="left" />
+<meta name="hablar.icons" content="alt" />
+<meta name="hablar.layout" content="tabs" />
+<meta name="hablar.inline" content="vertical_dock_div" />
+<meta name="hablar.width" content="100%" />
+<meta name="hablar.height" content="100%" />
<link rel="shortcut icon" href="favicon.ico" />
<!-- FIXME: make something local -->
<script src="//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js"></script>
<script>
-WebFont.load({
- google: {
- families: [ 'Ubuntu' ]
- }});
+ WebFont.load({
+ google : {
+ families : [ 'Ubuntu' ]
+ }
+ });
</script>
-<link href='http://fonts.googleapis.com/css?family=Ubuntu:regular,italic,bold,bolditalic' rel='stylesheet' type='text/css'>
+<link
+ href='http://fonts.googleapis.com/css?family=Ubuntu:regular,italic,bold,bolditalic'
+ rel='stylesheet' type='text/css'>
<!-- <link href='http://fonts.googleapis.com/css?family=Inconsolata'
rel='stylesheet' type='text/css'> -->
<link type="text/css" rel="stylesheet" href="gxt/css/gxt-all.css">
<link type="text/css" rel="stylesheet" href="gxt/css/gxt-gray.css">
<style type="text/css">
-<!--
-#kuneinitialcurtain {--><!--
- position: absolute; --> <!--
- left: 0px; --> <!--
- top: 0px; --> <!--
- width: 100%; --> <!--
- height: 100%; --> <!--
- background-color: #F7EBE3; --> <!--
- z-index: 9999;
- -->
- <!--
-}
-
--->
-<!--
--->
-<!--
-#kuneloading {--><!--
- position: absolute; --> <!--
- left: 45%; --> <!--
- top: 40%; --> <!--
- z-index: 20001; --> <!--
- height: auto; --> <!--
- border: solid 2px #ccc; --> <!--
- -moz-border-radius: 10px; --> <!--
- -webkit-border-radius: 10px; --> <!--
- border-radius: 10px; --> <!--
- background-color: white;
- -->
- <!--
-}
-
--->
-<!--
--->
-<!--
-#kuneloading a {--><!--
- color: #225588;
- -->
- <!--
-}
-
--->
-<!--
--->
-<!--
-#kuneloading .kuneloading-indicator {--><!--
- color: #444; --> <!--
- font: bold 13px tahoma, arial, helvetica; --> <!--
- padding: 5px 5px 10px 5px; --> <!--
- margin: 0; --> <!--
- height: auto;
- -->
- <!--
-}
-
--->
-<!--
--->
-<!--
-#kuneloading-msg {--><!--
- font: normal 10px arial, tahoma, sans-serif;
- -->
- <!--
-}
--->
</style>
-
+</head>
<body>
<!-- RECOMMENDED if your web app will not function without JavaScript enabled -->
<noscript>
@@ -97,7 +48,6 @@
Your web browser must have JavaScript enabled in order for this
application to display correctly.</div>
</noscript>
-
<iframe id="__gwt_historyFrame" style="width: 0; height: 0; border: 0"></iframe>
<iframe src="" id="__download" style="width: 0; height: 0; border: 0"></iframe>
<!--<div id="kuneinitialcurtain"></div>-->
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -36,7 +36,6 @@
import org.ourproject.kune.workspace.client.sitebar.sitepublic.SitePublicSpaceLink;
import org.ourproject.kune.workspace.client.themes.WsBackManager;
import org.ourproject.kune.workspace.client.upload.FileUploader;
-import org.ourproject.kune.workspace.client.wave.WaveInsert;
import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
@@ -50,20 +49,18 @@
public class BlogClientActions extends AbstractFoldableContentActions {
public BlogClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator,
- final Session session, final StateManager stateManager,
- final SchedulerManager deferredCommandWrapper,
+ final Session session, final StateManager stateManager, final SchedulerManager deferredCommandWrapper,
final Provider<ContentServiceAsync> contentServiceProvider,
final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider,
final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
final Provider<FileDownloadUtils> fileDownloadProvider, final EntityHeader entityLogo,
final Provider<ContentEditor> textEditorProvider, final ErrorHandler errorHandler,
final BlogViewer documentViewer, final Provider<ContextPropEditor> contextProvEditorProvider,
- final SitePublicSpaceLink publicLink, final WsBackManager wsBackManager,
- final Provider<WaveInsert> waveInsert) {
+ final SitePublicSpaceLink publicLink, final WsBackManager wsBackManager) {
super(session, stateManager, i18n, errorHandler, deferredCommandWrapper, groupServiceProvider,
contentServiceProvider, fileUploaderProvider, contextNavigator, contentActionRegistry,
contextActionRegistry, fileDownloadProvider, textEditorProvider, contextProvEditorProvider,
- documentViewer, entityLogo, publicLink, wsBackManager, waveInsert);
+ documentViewer, entityLogo, publicLink, wsBackManager);
}
@Override
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -47,7 +47,6 @@
import org.ourproject.kune.workspace.client.themes.WsThemeManager;
import org.ourproject.kune.workspace.client.tool.ToolSelector;
import org.ourproject.kune.workspace.client.upload.FileUploader;
-import org.ourproject.kune.workspace.client.wave.WaveInsert;
import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
@@ -83,8 +82,7 @@
p(ContentServiceAsync.class), p(GroupServiceAsync.class), p(FileUploader.class),
i(ContentActionRegistry.class), i(ContextActionRegistry.class), p(FileDownloadUtils.class),
i(EntityHeader.class), p(ContentEditor.class), i(ErrorHandler.class), i(BlogViewer.class),
- p(ContextPropEditor.class), i(SitePublicSpaceLink.class), i(WsBackManager.class),
- p(WaveInsert.class));
+ p(ContextPropEditor.class), i(SitePublicSpaceLink.class), i(WsBackManager.class));
}
});
Modified: trunk/src/main/java/org/ourproject/kune/chat/KuneChat.gwt.xml
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/KuneChat.gwt.xml 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/chat/KuneChat.gwt.xml 2011-01-29 03:38:12 UTC (rev 1227)
@@ -3,6 +3,6 @@
<inherits name="cc.kune.core.Core" />
<inherits name='org.ourproject.kune.platf.KunePlatform' />
<inherits name='org.ourproject.kune.workspace.KuneWorkspace' />
- <inherits name="com.calclab.emiteuimodule.EmiteUIModule" />
+<!-- <inherits name="com.calclab.emiteuimodule.EmiteUIModule" />-->
<source path="client" />
</module>
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -19,104 +19,87 @@
\*/
package org.ourproject.kune.chat.client;
-import org.ourproject.kune.chat.client.cnt.ChatRoom;
-import org.ourproject.kune.chat.client.cnt.ChatRoomPanel;
-import org.ourproject.kune.chat.client.cnt.ChatRoomPresenter;
-import org.ourproject.kune.chat.client.ctx.ChatContext;
-import org.ourproject.kune.chat.client.ctx.ChatContextPresenter;
-import org.ourproject.kune.chat.client.ctx.room.AddRoom;
-import org.ourproject.kune.chat.client.ctx.room.AddRoomPanel;
-import org.ourproject.kune.chat.client.ctx.room.AddRoomPresenter;
-import org.ourproject.kune.platf.client.app.ToolGroup;
-import org.ourproject.kune.platf.client.registry.ContentCapabilitiesRegistry;
import org.ourproject.kune.platf.client.services.AbstractExtendedModule;
-import org.ourproject.kune.platf.client.shortcuts.GlobalShortcutRegister;
-import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
-import org.ourproject.kune.platf.client.ui.rte.insertmedia.abstractmedia.MediaUtils;
-import org.ourproject.kune.workspace.client.cnt.ActionContentToolbar;
-import org.ourproject.kune.workspace.client.cnt.ContentActionRegistry;
-import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
-import org.ourproject.kune.workspace.client.cxt.ContextActionRegistry;
-import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
-import org.ourproject.kune.workspace.client.themes.WsThemeManager;
-import org.ourproject.kune.workspace.client.tool.ToolSelector;
-import cc.kune.common.client.utils.SchedulerManager;
-import cc.kune.core.client.i18n.I18nUITranslationService;
-import cc.kune.core.client.init.AppStarter;
-import cc.kune.core.client.rpcservices.ContentServiceAsync;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.calclab.emiteuimodule.client.EmiteUIDialog;
-import com.calclab.suco.client.ioc.decorator.Singleton;
-import com.calclab.suco.client.ioc.module.Factory;
-
public class ChatClientModule extends AbstractExtendedModule {
@Override
public void onInstall() {
+ //
+ // register(ToolGroup.class, new
+ // Factory<ChatClientActions>(ChatClientActions.class) {
+ // @Override
+ // public ChatClientActions create() {
+ // return new ChatClientActions(i(I18nUITranslationService.class),
+ // i(Session.class),
+ // i(ContentActionRegistry.class), i(ContextActionRegistry.class),
+ // p(ChatEngine.class),
+ // p(AddRoom.class), p(SchedulerManager.class));
+ // }
+ // });
+ //
+ // register(ToolGroup.class, new
+ // Factory<ChatClientTool>(ChatClientTool.class) {
+ // @Override
+ // public ChatClientTool create() {
+ // return new ChatClientTool(i(I18nUITranslationService.class),
+ // i(WorkspaceSkeleton.class),
+ // i(ToolSelector.class), i(WsThemeManager.class),
+ // i(ContentCapabilitiesRegistry.class));
+ // }
+ // });
+ //
+ // register(ToolGroup.class, new Factory<ChatContext>(ChatContext.class)
+ // {
+ // @Override
+ // public ChatContext create() {
+ // final ChatContextPresenter presenter = new
+ // ChatContextPresenter(i(StateManager.class),
+ // p(ContextNavigator.class));
+ // return presenter;
+ // }
+ // });
+ //
+ // register(ToolGroup.class, new Factory<ChatEngine>(ChatEngine.class) {
+ // @Override
+ // public ChatEngine create() {
+ // final ChatEngineDefault chatEngineDefault = new
+ // ChatEngineDefault(i(I18nUITranslationService.class),
+ // i(WorkspaceSkeleton.class), i(AppStarter.class), i(Session.class),
+ // p(EmiteUIDialog.class),
+ // p(FileDownloadUtils.class), i(GlobalShortcutRegister.class));
+ // return chatEngineDefault;
+ // }
+ // });
+ //
+ // register(ToolGroup.class, new Factory<ChatRoom>(ChatRoom.class) {
+ // @Override
+ // public ChatRoom create() {
+ // final ChatRoomPresenter presenter = new
+ // ChatRoomPresenter(i(StateManager.class), i(Session.class),
+ // i(I18nUITranslationService.class), i(ActionContentToolbar.class),
+ // i(ContentActionRegistry.class), p(FileDownloadUtils.class),
+ // p(MediaUtils.class));
+ // final ChatRoomPanel panel = new
+ // ChatRoomPanel(i(WorkspaceSkeleton.class),
+ // i(I18nTranslationService.class));
+ // presenter.init(panel);
+ // return presenter;
+ // }
+ // });
+ //
+ // register(Singleton.class, new Factory<AddRoom>(AddRoom.class) {
+ // @Override
+ // public AddRoom create() {
+ // final AddRoomPresenter presenter = new
+ // AddRoomPresenter(i(Session.class), p(ContentServiceAsync.class),
+ // i(StateManager.class));
+ // final AddRoomPanel panel = new AddRoomPanel(presenter,
+ // i(I18nTranslationService.class));
+ // presenter.init(panel);
+ // return presenter;
+ // }
+ // });
- register(ToolGroup.class, new Factory<ChatClientActions>(ChatClientActions.class) {
- @Override
- public ChatClientActions create() {
- return new ChatClientActions(i(I18nUITranslationService.class), i(Session.class),
- i(ContentActionRegistry.class), i(ContextActionRegistry.class), p(ChatEngine.class),
- p(AddRoom.class), p(SchedulerManager.class));
- }
- });
-
- register(ToolGroup.class, new Factory<ChatClientTool>(ChatClientTool.class) {
- @Override
- public ChatClientTool create() {
- return new ChatClientTool(i(I18nUITranslationService.class), i(WorkspaceSkeleton.class),
- i(ToolSelector.class), i(WsThemeManager.class), i(ContentCapabilitiesRegistry.class));
- }
- });
-
- register(ToolGroup.class, new Factory<ChatContext>(ChatContext.class) {
- @Override
- public ChatContext create() {
- final ChatContextPresenter presenter = new ChatContextPresenter(i(StateManager.class),
- p(ContextNavigator.class));
- return presenter;
- }
- });
-
- register(ToolGroup.class, new Factory<ChatEngine>(ChatEngine.class) {
- @Override
- public ChatEngine create() {
- final ChatEngineDefault chatEngineDefault = new ChatEngineDefault(i(I18nUITranslationService.class),
- i(WorkspaceSkeleton.class), i(AppStarter.class), i(Session.class), p(EmiteUIDialog.class),
- p(FileDownloadUtils.class), i(GlobalShortcutRegister.class));
- return chatEngineDefault;
- }
- });
-
- register(ToolGroup.class, new Factory<ChatRoom>(ChatRoom.class) {
- @Override
- public ChatRoom create() {
- final ChatRoomPresenter presenter = new ChatRoomPresenter(i(StateManager.class), i(Session.class),
- i(I18nUITranslationService.class), i(ActionContentToolbar.class),
- i(ContentActionRegistry.class), p(FileDownloadUtils.class), p(MediaUtils.class));
- final ChatRoomPanel panel = new ChatRoomPanel(i(WorkspaceSkeleton.class),
- i(I18nTranslationService.class));
- presenter.init(panel);
- return presenter;
- }
- });
-
- register(Singleton.class, new Factory<AddRoom>(AddRoom.class) {
- @Override
- public AddRoom create() {
- final AddRoomPresenter presenter = new AddRoomPresenter(i(Session.class), p(ContentServiceAsync.class),
- i(StateManager.class));
- final AddRoomPanel panel = new AddRoomPanel(presenter, i(I18nTranslationService.class));
- presenter.init(panel);
- return presenter;
- }
- });
-
}
}
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatConnectionOptions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatConnectionOptions.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatConnectionOptions.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -19,18 +19,17 @@
*/
package org.ourproject.kune.chat.client;
-import com.calclab.emiteuimodule.client.UserChatOptions;
public class ChatConnectionOptions {
- public UserChatOptions userOptions;
- public final String httpBase;
public final String domain;
+ // public UserChatOptions userOptions;
+ public final String httpBase;
public final String roomHost;
public ChatConnectionOptions(final String httpBase, final String domain, final String roomHost) {
this.httpBase = httpBase;
this.domain = domain;
this.roomHost = roomHost;
- userOptions = null;
+ // userOptions = null;
}
}
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -19,306 +19,368 @@
*/
package org.ourproject.kune.chat.client;
-import java.util.Collection;
-import java.util.Date;
-
-import org.ourproject.kune.platf.client.actions.AbstractExtendedAction;
-import org.ourproject.kune.platf.client.actions.ActionEvent;
-import org.ourproject.kune.platf.client.actions.KeyStroke;
-import org.ourproject.kune.platf.client.actions.Shortcut;
-import org.ourproject.kune.platf.client.shortcuts.GlobalShortcutRegister;
-import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
-import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
-
-import cc.kune.common.client.utils.WindowUtils;
-import cc.kune.core.client.init.AppStarter;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.shared.dto.InitDataDTO;
-import cc.kune.core.shared.dto.UserInfoDTO;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.allen_sauer.gwt.log.client.Log;
import com.calclab.emite.core.client.xmpp.stanzas.XmppURI;
-import com.calclab.emite.im.client.roster.RosterItem;
-import com.calclab.emite.xep.muc.client.Room;
-import com.calclab.emiteuimodule.client.EmiteUIDialog;
-import com.calclab.emiteuimodule.client.SubscriptionMode;
-import com.calclab.emiteuimodule.client.UserChatOptions;
-import com.calclab.emiteuimodule.client.chat.ChatUI;
-import com.calclab.emiteuimodule.client.params.AvatarProvider;
-import com.calclab.emiteuimodule.client.room.RoomUI;
-import com.calclab.emiteuimodule.client.status.OwnPresence.OwnStatus;
-import com.calclab.suco.client.events.Event0;
-import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
-import com.calclab.suco.client.ioc.Provider;
-import com.google.gwt.core.client.Scheduler;
-import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.google.gwt.user.client.Window;
-import com.gwtext.client.core.EventObject;
-import com.gwtext.client.widgets.Button;
-import com.gwtext.client.widgets.ToolbarButton;
-import com.gwtext.client.widgets.event.ButtonListenerAdapter;
class ChatEngineDefault implements ChatEngine {
- private ChatConnectionOptions chatOptions;
- private final I18nTranslationService i18n;
- private final WorkspaceSkeleton wskel;
- private ToolbarButton traybarButton;
- private final Provider<EmiteUIDialog> emiteUIProvider;
- private Collection<RosterItem> roster;
- private final Event0 onRosterChanged;
- private final KeyStroke shortcut;
- private final Provider<FileDownloadUtils> downloadUtils;
- public ChatEngineDefault(final I18nTranslationService i18n, final WorkspaceSkeleton wskel,
- final AppStarter application, final Session session, final Provider<EmiteUIDialog> emiteUIProvider,
- final Provider<FileDownloadUtils> downloadUtils, final GlobalShortcutRegister shortcutRegister) {
- this.i18n = i18n;
- this.wskel = wskel;
- this.emiteUIProvider = emiteUIProvider;
- this.downloadUtils = downloadUtils;
- this.onRosterChanged = new Event0("onRosterChanged");
- shortcut = Shortcut.getShortcut(false, true, false, false, Character.valueOf('C'));
- shortcutRegister.put(shortcut, new AbstractExtendedAction() {
- @Override
- public void actionPerformed(final ActionEvent event) {
- if (isDialogStarted()) {
- toggleShow();
- }
-
- }
- });
- session.onInitDataReceived(new Listener<InitDataDTO>() {
- @Override
- public void onEvent(final InitDataDTO initData) {
- checkChatDomain(initData.getChatDomain());
- chatOptions = new ChatConnectionOptions(initData.getChatHttpBase(), initData.getChatDomain(),
- initData.getChatRoomHost());
- }
-
- private void checkChatDomain(final String chatDomain) {
- final String httpDomain = WindowUtils.getLocation().getHostName();
- if (!chatDomain.equals(httpDomain)) {
- Log.error("Your http domain (" + httpDomain + ") is different from the chat domain (" + chatDomain
- + "). This will cause problems with the chat functionality. "
- + "Please check kune.properties on the server.");
- }
- }
- });
- session.onUserSignOut(new Listener0() {
- @Override
- public void onEvent() {
- logout();
- }
- });
- session.onUserSignIn(new Listener<UserInfoDTO>() {
- @Override
- public void onEvent(final UserInfoDTO user) {
- login(user.getChatName(), user.getChatPassword());
- }
- });
- // application.onClosing(new Listener<ClosingEvent>() {
- // public void onEvent(final ClosingEvent event) {
- // stop();
- // }
- // });
- }
-
@Override
public void addNewBuddie(final String shortName) {
- emiteUIProvider.get().addBuddie(getLocalUserJid(shortName), shortName, "");
+ // TODO Auto-generated method stub
+
}
@Override
public void addOnRosterChanged(final Listener0 slot) {
- onRosterChanged.add(slot);
+ // TODO Auto-generated method stub
+
}
@Override
public void chat(final XmppURI jid) {
- emiteUIProvider.get().chat(jid);
+ // TODO Auto-generated method stub
+
}
@Override
public ChatConnectionOptions getChatOptions() {
- return chatOptions;
+ // TODO Auto-generated method stub
+ return null;
}
@Override
- public boolean isBuddie(final String shortName) {
- return isBuddie(getLocalUserJid(shortName));
+ public boolean isBuddie(final String localUserName) {
+ // TODO Auto-generated method stub
+ return false;
}
@Override
public boolean isBuddie(final XmppURI jid) {
- if (roster != null) {
- for (final RosterItem item : roster) {
- if (item.getJID().equalsNoResource(jid)) {
- return true;
- }
- }
- }
+ // TODO Auto-generated method stub
return false;
}
- public boolean isDialogStarted() {
- return !emiteUIProvider.get().isDialogNotStarted();
- }
-
@Override
public boolean isLoggedIn() {
- return emiteUIProvider.get().isLoggedIn();
+ // TODO Auto-generated method stub
+ return false;
}
@Override
public void joinRoom(final String roomName, final String userAlias) {
- joinRoom(roomName, null, userAlias);
+ // TODO Auto-generated method stub
+
}
@Override
public void joinRoom(final String roomName, final String subject, final String userAlias) {
- if (emiteUIProvider.get().isLoggedIn()) {
- final XmppURI roomURI = XmppURI.uri(roomName + "@" + chatOptions.roomHost + "/"
- + chatOptions.userOptions.getUserJid().getNode());
- final Room room = (Room) emiteUIProvider.get().joinRoom(roomURI);
- if (subject != null) {
- Scheduler.get().scheduleDeferred(new ScheduledCommand() {
- @Override
- public void execute() {
- final RoomUI roomUI = (RoomUI) room.getData(ChatUI.class);
- if (roomUI != null) {
- roomUI.setSubject(subject);
- }
- }
- });
- }
- } else {
- NotifyUser.showAlertMessage(i18n.t("Error"), i18n.t("To join a chatroom you need to be 'online'"));
- }
+ // TODO Auto-generated method stub
+
}
@Override
public void login(final String jid, final String passwd) {
- final UserChatOptions userChatOptions = getUserChatOptions(jid, passwd);
- // FIXME: Avatar provider
- final AvatarProvider avatarProvider = new AvatarProvider() {
- @Override
- public String getAvatarURL(final XmppURI userURI) {
- // if (userURI.getHost().equals(chatOptions.domain)) {
- // FIXME
- // return downloadUtils.get().getLogoImageUrl(new
- // StateToken(userURI.getNode()));
- // } else {
- // return "";
- // }
- return "images/person-def.gif";
- }
- };
- final String initialWindowTitle = Window.getTitle();
- chatOptions.userOptions = userChatOptions;
- if (emiteUIProvider.get().isDialogNotStarted()) {
- emiteUIProvider.get().onRosterChanged(new Listener<Collection<RosterItem>>() {
- @Override
- public void onEvent(final Collection<RosterItem> rosterChanged) {
- roster = rosterChanged;
- onRosterChanged.fire();
- }
- });
- emiteUIProvider.get().start(userChatOptions, chatOptions.httpBase, chatOptions.domain,
- chatOptions.roomHost, avatarProvider, i18n.t("Chat"));
- } else {
- emiteUIProvider.get().setEnableStatusUI(true);
- emiteUIProvider.get().refreshUserInfo(chatOptions.userOptions);
- }
- emiteUIProvider.get().show(OwnStatus.online);
- if (traybarButton == null) {
- traybarButton = new ToolbarButton();
- traybarButton.setTooltip(i18n.t("Show/hide the chat window" + shortcut.toString()));
- traybarButton.setIcon("images/e-icon.gif");
- traybarButton.addListener(new ButtonListenerAdapter() {
- @Override
- public void onClick(final Button button, final EventObject e) {
- toggleShow();
- }
- });
- wskel.getSiteTraybar().addButton(traybarButton);
- emiteUIProvider.get().onChatAttended(new Listener<String>() {
- @Override
- public void onEvent(final String parameter) {
- traybarButton.setIcon("images/e-icon.gif");
- }
- });
- emiteUIProvider.get().onChatUnattendedWithActivity(new Listener<String>() {
- @Override
- public void onEvent(final String parameter) {
- traybarButton.setIcon("images/e-icon-a.gif");
- }
- });
- }
- emiteUIProvider.get().hide();
- emiteUIProvider.get().onChatAttended(new Listener<String>() {
- @Override
- public void onEvent(final String parameter) {
- Window.setTitle(initialWindowTitle);
- }
- });
- emiteUIProvider.get().onChatUnattendedWithActivity(new Listener<String>() {
- @Override
- public void onEvent(final String chatTitle) {
- Window.setTitle("(* " + chatTitle + ") " + initialWindowTitle);
- }
- });
+ // TODO Auto-generated method stub
+
}
@Override
public void logout() {
- if (!emiteUIProvider.get().isDialogNotStarted()) {
- emiteUIProvider.get().setOwnPresence(OwnStatus.offline);
- chatOptions.userOptions = getUserChatOptions("reset(a)example.com", "");
- emiteUIProvider.get().refreshUserInfo(chatOptions.userOptions);
- emiteUIProvider.get().setEnableStatusUI(false);
- }
+ // TODO Auto-generated method stub
+
}
@Override
public void setAvatar(final String photoBinary) {
- emiteUIProvider.get().setOwnVCardAvatar(photoBinary);
+ // TODO Auto-generated method stub
+
}
@Override
public void show() {
- emiteUIProvider.get().show();
+ // TODO Auto-generated method stub
+
}
@Override
public void stop() {
- if (!emiteUIProvider.get().isDialogNotStarted()) {
- emiteUIProvider.get().destroy();
- }
- if (emiteUIProvider.get().getSession().isLoggedIn()) {
- emiteUIProvider.get().getSession().logout();
- }
- }
+ // TODO Auto-generated method stub
- public void toggleShow() {
- if (emiteUIProvider.get().isVisible()) {
- emiteUIProvider.get().hide();
- } else {
- emiteUIProvider.get().show();
- }
}
-
- private XmppURI getLocalUserJid(final String shortName) {
- return XmppURI.jid(shortName + "@" + chatOptions.domain);
- }
-
- private UserChatOptions getUserChatOptions(final String jid, final String passwd) {
- final String resource = "emiteui-" + new Date().getTime() + "-kune"; // +
- // getGwtMetaProperty(GWT_PROPERTY_RELEASE);
- // FIXME, get this from user profile
- return new UserChatOptions(jid + "@" + chatOptions.domain, passwd, resource, "blue", SubscriptionMode.manual,
- true);
- }
+ // private ChatConnectionOptions chatOptions;
+ // private final I18nTranslationService i18n;
+ // private final WorkspaceSkeleton wskel;
+ // private ToolbarButton traybarButton;
+ // private final Provider<EmiteUIDialog> emiteUIProvider;
+ // private Collection<RosterItem> roster;
+ // private final Event0 onRosterChanged;
+ // private final KeyStroke shortcut;
+ // private final Provider<FileDownloadUtils> downloadUtils;
+ //
+ // public ChatEngineDefault(final I18nTranslationService i18n, final
+ // WorkspaceSkeleton wskel,
+ // final AppStarter application, final Session session, final
+ // Provider<EmiteUIDialog> emiteUIProvider,
+ // final Provider<FileDownloadUtils> downloadUtils, final
+ // GlobalShortcutRegister shortcutRegister) {
+ // this.i18n = i18n;
+ // this.wskel = wskel;
+ // this.emiteUIProvider = emiteUIProvider;
+ // this.downloadUtils = downloadUtils;
+ // this.onRosterChanged = new Event0("onRosterChanged");
+ // shortcut = Shortcut.getShortcut(false, true, false, false,
+ // Character.valueOf('C'));
+ // shortcutRegister.put(shortcut, new AbstractExtendedAction() {
+ // @Override
+ // public void actionPerformed(final ActionEvent event) {
+ // if (isDialogStarted()) {
+ // toggleShow();
+ // }
+ //
+ // }
+ // });
+ // session.onInitDataReceived(new Listener<InitDataDTO>() {
+ // @Override
+ // public void onEvent(final InitDataDTO initData) {
+ // checkChatDomain(initData.getChatDomain());
+ // chatOptions = new ChatConnectionOptions(initData.getChatHttpBase(),
+ // initData.getChatDomain(),
+ // initData.getChatRoomHost());
+ // }
+ //
+ // private void checkChatDomain(final String chatDomain) {
+ // final String httpDomain = WindowUtils.getLocation().getHostName();
+ // if (!chatDomain.equals(httpDomain)) {
+ // Log.error("Your http domain (" + httpDomain +
+ // ") is different from the chat domain (" + chatDomain
+ // + "). This will cause problems with the chat functionality. "
+ // + "Please check kune.properties on the server.");
+ // }
+ // }
+ // });
+ // session.onUserSignOut(new Listener0() {
+ // @Override
+ // public void onEvent() {
+ // logout();
+ // }
+ // });
+ // session.onUserSignIn(new Listener<UserInfoDTO>() {
+ // @Override
+ // public void onEvent(final UserInfoDTO user) {
+ // login(user.getChatName(), user.getChatPassword());
+ // }
+ // });
+ // // application.onClosing(new Listener<ClosingEvent>() {
+ // // public void onEvent(final ClosingEvent event) {
+ // // stop();
+ // // }
+ // // });
+ // }
+ //
+ // @Override
+ // public void addNewBuddie(final String shortName) {
+ // emiteUIProvider.get().addBuddie(getLocalUserJid(shortName), shortName,
+ // "");
+ // }
+ //
+ // @Override
+ // public void addOnRosterChanged(final Listener0 slot) {
+ // onRosterChanged.add(slot);
+ // }
+ //
+ // @Override
+ // public void chat(final XmppURI jid) {
+ // emiteUIProvider.get().chat(jid);
+ // }
+ //
+ // @Override
+ // public ChatConnectionOptions getChatOptions() {
+ // return chatOptions;
+ // }
+ //
+ // @Override
+ // public boolean isBuddie(final String shortName) {
+ // return isBuddie(getLocalUserJid(shortName));
+ // }
+ //
+ // @Override
+ // public boolean isBuddie(final XmppURI jid) {
+ // if (roster != null) {
+ // for (final RosterItem item : roster) {
+ // if (item.getJID().equalsNoResource(jid)) {
+ // return true;
+ // }
+ // }
+ // }
+ // return false;
+ // }
+ //
+ // public boolean isDialogStarted() {
+ // return !emiteUIProvider.get().isDialogNotStarted();
+ // }
+ //
+ // @Override
+ // public boolean isLoggedIn() {
+ // return emiteUIProvider.get().isLoggedIn();
+ // }
+ //
+ // @Override
+ // public void joinRoom(final String roomName, final String userAlias) {
+ // joinRoom(roomName, null, userAlias);
+ // }
+ //
+ // @Override
+ // public void joinRoom(final String roomName, final String subject, final
+ // String userAlias) {
+ // if (emiteUIProvider.get().isLoggedIn()) {
+ // final XmppURI roomURI = XmppURI.uri(roomName + "@" + chatOptions.roomHost
+ // + "/"
+ // + chatOptions.userOptions.getUserJid().getNode());
+ // final Room room = (Room) emiteUIProvider.get().joinRoom(roomURI);
+ // if (subject != null) {
+ // Scheduler.get().scheduleDeferred(new ScheduledCommand() {
+ // @Override
+ // public void execute() {
+ // final RoomUI roomUI = (RoomUI) room.getData(ChatUI.class);
+ // if (roomUI != null) {
+ // roomUI.setSubject(subject);
+ // }
+ // }
+ // });
+ // }
+ // } else {
+ // NotifyUser.showAlertMessage(i18n.t("Error"),
+ // i18n.t("To join a chatroom you need to be 'online'"));
+ // }
+ // }
+ //
+ // @Override
+ // public void login(final String jid, final String passwd) {
+ // final UserChatOptions userChatOptions = getUserChatOptions(jid, passwd);
+ // // FIXME: Avatar provider
+ // final AvatarProvider avatarProvider = new AvatarProvider() {
+ // @Override
+ // public String getAvatarURL(final XmppURI userURI) {
+ // // if (userURI.getHost().equals(chatOptions.domain)) {
+ // // FIXME
+ // // return downloadUtils.get().getLogoImageUrl(new
+ // // StateToken(userURI.getNode()));
+ // // } else {
+ // // return "";
+ // // }
+ // return "images/person-def.gif";
+ // }
+ // };
+ // final String initialWindowTitle = Window.getTitle();
+ // chatOptions.userOptions = userChatOptions;
+ // if (emiteUIProvider.get().isDialogNotStarted()) {
+ // emiteUIProvider.get().onRosterChanged(new
+ // Listener<Collection<RosterItem>>() {
+ // @Override
+ // public void onEvent(final Collection<RosterItem> rosterChanged) {
+ // roster = rosterChanged;
+ // onRosterChanged.fire();
+ // }
+ // });
+ // emiteUIProvider.get().start(userChatOptions, chatOptions.httpBase,
+ // chatOptions.domain,
+ // chatOptions.roomHost, avatarProvider, i18n.t("Chat"));
+ // } else {
+ // emiteUIProvider.get().setEnableStatusUI(true);
+ // emiteUIProvider.get().refreshUserInfo(chatOptions.userOptions);
+ // }
+ // emiteUIProvider.get().show(OwnStatus.online);
+ // if (traybarButton == null) {
+ // traybarButton = new ToolbarButton();
+ // traybarButton.setTooltip(i18n.t("Show/hide the chat window" +
+ // shortcut.toString()));
+ // traybarButton.setIcon("images/e-icon.gif");
+ // traybarButton.addListener(new ButtonListenerAdapter() {
+ // @Override
+ // public void onClick(final Button button, final EventObject e) {
+ // toggleShow();
+ // }
+ // });
+ // wskel.getSiteTraybar().addButton(traybarButton);
+ // emiteUIProvider.get().onChatAttended(new Listener<String>() {
+ // @Override
+ // public void onEvent(final String parameter) {
+ // traybarButton.setIcon("images/e-icon.gif");
+ // }
+ // });
+ // emiteUIProvider.get().onChatUnattendedWithActivity(new Listener<String>()
+ // {
+ // @Override
+ // public void onEvent(final String parameter) {
+ // traybarButton.setIcon("images/e-icon-a.gif");
+ // }
+ // });
+ // }
+ // emiteUIProvider.get().hide();
+ // emiteUIProvider.get().onChatAttended(new Listener<String>() {
+ // @Override
+ // public void onEvent(final String parameter) {
+ // Window.setTitle(initialWindowTitle);
+ // }
+ // });
+ // emiteUIProvider.get().onChatUnattendedWithActivity(new Listener<String>()
+ // {
+ // @Override
+ // public void onEvent(final String chatTitle) {
+ // Window.setTitle("(* " + chatTitle + ") " + initialWindowTitle);
+ // }
+ // });
+ // }
+ //
+ // @Override
+ // public void logout() {
+ // if (!emiteUIProvider.get().isDialogNotStarted()) {
+ // emiteUIProvider.get().setOwnPresence(OwnStatus.offline);
+ // chatOptions.userOptions = getUserChatOptions("reset(a)example.com", "");
+ // emiteUIProvider.get().refreshUserInfo(chatOptions.userOptions);
+ // emiteUIProvider.get().setEnableStatusUI(false);
+ // }
+ // }
+ //
+ // @Override
+ // public void setAvatar(final String photoBinary) {
+ // emiteUIProvider.get().setOwnVCardAvatar(photoBinary);
+ // }
+ //
+ // @Override
+ // public void show() {
+ // emiteUIProvider.get().show();
+ // }
+ //
+ // @Override
+ // public void stop() {
+ // if (!emiteUIProvider.get().isDialogNotStarted()) {
+ // emiteUIProvider.get().destroy();
+ // }
+ // if (emiteUIProvider.get().getSession().isLoggedIn()) {
+ // emiteUIProvider.get().getSession().logout();
+ // }
+ // }
+ //
+ // public void toggleShow() {
+ // if (emiteUIProvider.get().isVisible()) {
+ // emiteUIProvider.get().hide();
+ // } else {
+ // emiteUIProvider.get().show();
+ // }
+ // }
+ //
+ // private XmppURI getLocalUserJid(final String shortName) {
+ // return XmppURI.jid(shortName + "@" + chatOptions.domain);
+ // }
+ //
+ // private UserChatOptions getUserChatOptions(final String jid, final String
+ // passwd) {
+ // final String resource = "emiteui-" + new Date().getTime() + "-kune"; // +
+ // // getGwtMetaProperty(GWT_PROPERTY_RELEASE);
+ // // FIXME, get this from user profile
+ // return new UserChatOptions(jid + "@" + chatOptions.domain, passwd,
+ // resource, "blue", SubscriptionMode.manual,
+ // true);
+ // }
}
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ctx/room/AddRoomPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ctx/room/AddRoomPanel.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ctx/room/AddRoomPanel.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -19,101 +19,98 @@
*/
package org.ourproject.kune.chat.client.ctx.room;
-
-import cc.kune.common.client.utils.TextUtils;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.calclab.emiteuimodule.client.dialog.BasicDialogExtended;
-import com.calclab.emiteuimodule.client.dialog.BasicDialogListener;
-import com.google.gwt.core.client.Scheduler;
-import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.gwtext.client.core.EventObject;
-import com.gwtext.client.widgets.form.Field;
-import com.gwtext.client.widgets.form.FormPanel;
-import com.gwtext.client.widgets.form.TextField;
-import com.gwtext.client.widgets.form.event.FieldListenerAdapter;
-
public class AddRoomPanel implements AddRoomView {
- public static final String CANCEL_ID = "k-ct-arp-cb";
- public static final String ADD_ROOM_ID = "k-ct-arp-ab";
- public static final String ROOM_NAME_ID = "k-ct-arp-rfield";
- private final AddRoomPresenter presenter;
- private BasicDialogExtended dialog;
- private final I18nTranslationService i18n;
- private FormPanel formPanel;
- private TextField roomName;
-
- public AddRoomPanel(final AddRoomPresenter presenter, final I18nTranslationService i18n) {
- this.i18n = i18n;
- this.presenter = presenter;
- }
-
- public void reset() {
- formPanel.getForm().reset();
- }
-
+ @Override
public void show() {
- if (dialog == null) {
- dialog = new BasicDialogExtended(i18n.t("Add a chat room"), false, false, 330, 130, "chat-icon",
- i18n.tWithNT("Add", "used in button"), ADD_ROOM_ID, i18n.tWithNT("Cancel", "used in button"),
- CANCEL_ID, new BasicDialogListener() {
- public void onCancelButtonClick() {
- dialog.hide();
- reset();
- }
+ // TODO Auto-generated method stub
- public void onFirstButtonClick() {
- doAddRoom();
- }
- });
- dialog.setResizable(false);
- createForm();
-
- // TODO define a UI Extension Point here
- }
- dialog.show();
- roomName.focus();
}
-
- protected void doAddRoom() {
- roomName.validate();
- if (formPanel.getForm().isValid()) {
- Scheduler.get().scheduleDeferred(new ScheduledCommand() {
- public void execute() {
- presenter.addRoom(roomName.getValueAsString());
- reset();
- }
- });
- dialog.hide();
- }
- }
-
- private void createForm() {
- formPanel = new FormPanel();
- formPanel.setFrame(true);
- formPanel.setAutoScroll(false);
-
- formPanel.setWidth(333);
- formPanel.setLabelWidth(100);
- formPanel.setPaddings(10);
-
- roomName = new TextField(i18n.t("Room Name"), "name", 150);
- roomName.setAllowBlank(false);
- roomName.setValidationEvent(false);
- roomName.setRegex(TextUtils.UNIX_NAME);
- roomName.setRegexText(i18n.t("The name must contain only characters, numbers and dashes"));
- roomName.setId(ROOM_NAME_ID);
- formPanel.add(roomName);
-
- dialog.add(formPanel);
- roomName.addListener(new FieldListenerAdapter() {
- @Override
- public void onSpecialKey(final Field field, final EventObject e) {
- if (e.getKey() == 13) {
- doAddRoom();
- }
- }
- });
- }
+ //
+ // public static final String ADD_ROOM_ID = "k-ct-arp-ab";
+ // public static final String CANCEL_ID = "k-ct-arp-cb";
+ // public static final String ROOM_NAME_ID = "k-ct-arp-rfield";
+ // private BasicDialogExtended dialog;
+ // private FormPanel formPanel;
+ // private final I18nTranslationService i18n;
+ // private final AddRoomPresenter presenter;
+ // private TextField roomName;
+ //
+ // public AddRoomPanel(final AddRoomPresenter presenter, final
+ // I18nTranslationService i18n) {
+ // this.i18n = i18n;
+ // this.presenter = presenter;
+ // }
+ //
+ // private void createForm() {
+ // formPanel = new FormPanel();
+ // formPanel.setFrame(true);
+ // formPanel.setAutoScroll(false);
+ //
+ // formPanel.setWidth(333);
+ // formPanel.setLabelWidth(100);
+ // formPanel.setPaddings(10);
+ //
+ // roomName = new TextField(i18n.t("Room Name"), "name", 150);
+ // roomName.setAllowBlank(false);
+ // roomName.setValidationEvent(false);
+ // roomName.setRegex(TextUtils.UNIX_NAME);
+ // roomName.setRegexText(i18n.t("The name must contain only characters, numbers and dashes"));
+ // roomName.setId(ROOM_NAME_ID);
+ // formPanel.add(roomName);
+ //
+ // dialog.add(formPanel);
+ // roomName.addListener(new FieldListenerAdapter() {
+ // @Override
+ // public void onSpecialKey(final Field field, final EventObject e) {
+ // if (e.getKey() == 13) {
+ // doAddRoom();
+ // }
+ // }
+ // });
+ // }
+ //
+ // protected void doAddRoom() {
+ // roomName.validate();
+ // if (formPanel.getForm().isValid()) {
+ // Scheduler.get().scheduleDeferred(new ScheduledCommand() {
+ // @Override
+ // public void execute() {
+ // presenter.addRoom(roomName.getValueAsString());
+ // reset();
+ // }
+ // });
+ // dialog.hide();
+ // }
+ // }
+ //
+ // public void reset() {
+ // formPanel.getForm().reset();
+ // }
+ //
+ // @Override
+ // public void show() {
+ // if (dialog == null) {
+ // dialog = new BasicDialogExtended(i18n.t("Add a chat room"), false, false,
+ // 330, 130, "chat-icon",
+ // i18n.tWithNT("Add", "used in button"), ADD_ROOM_ID,
+ // i18n.tWithNT("Cancel", "used in button"),
+ // CANCEL_ID, new BasicDialogListener() {
+ // public void onCancelButtonClick() {
+ // dialog.hide();
+ // reset();
+ // }
+ //
+ // public void onFirstButtonClick() {
+ // doAddRoom();
+ // }
+ // });
+ // dialog.setResizable(false);
+ // createForm();
+ //
+ // // TODO define a UI Extension Point here
+ // }
+ // dialog.show();
+ // roomName.focus();
+ // }
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -23,7 +23,6 @@
import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_FOLDER;
import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_ROOT;
import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_UPLOADEDFILE;
-import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_WAVE;
import org.ourproject.kune.docs.client.cnt.DocumentViewer;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
@@ -37,7 +36,6 @@
import org.ourproject.kune.workspace.client.sitebar.sitepublic.SitePublicSpaceLink;
import org.ourproject.kune.workspace.client.themes.WsBackManager;
import org.ourproject.kune.workspace.client.upload.FileUploader;
-import org.ourproject.kune.workspace.client.wave.WaveInsert;
import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
@@ -51,20 +49,18 @@
public class DocumentClientActions extends AbstractFoldableContentActions {
public DocumentClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator,
- final Session session, final StateManager stateManager,
- final SchedulerManager deferredCommandWrapper,
+ final Session session, final StateManager stateManager, final SchedulerManager deferredCommandWrapper,
final Provider<ContentServiceAsync> contentServiceProvider,
final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider,
final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
final Provider<FileDownloadUtils> fileDownloadProvider, final EntityHeader entityLogo,
final Provider<ContentEditor> textEditorProvider, final ErrorHandler errorHandler,
final DocumentViewer documentViewer, final Provider<ContextPropEditor> contextProvEditorProvider,
- final SitePublicSpaceLink publicLink, final WsBackManager wsBackManager,
- final Provider<WaveInsert> waveInsert) {
+ final SitePublicSpaceLink publicLink, final WsBackManager wsBackManager) {
super(session, stateManager, i18n, errorHandler, deferredCommandWrapper, groupServiceProvider,
contentServiceProvider, fileUploaderProvider, contextNavigator, contentActionRegistry,
contextActionRegistry, fileDownloadProvider, textEditorProvider, contextProvEditorProvider,
- documentViewer, entityLogo, publicLink, wsBackManager, waveInsert);
+ documentViewer, entityLogo, publicLink, wsBackManager);
}
@Override
@@ -84,8 +80,6 @@
createNewContentAction(TYPE_DOCUMENT, "images/nav/page_add.png", i18n.t("New document"), parentMenuTitleCtx,
Position.ctx, TYPE_ROOT, TYPE_FOLDER);
- createWaveAction(TYPE_WAVE, parentMenuTitleCtx, Position.ctx, TYPE_ROOT, TYPE_FOLDER);
-
createTranslateAction(parentMenuTitle, TYPE_DOCUMENT, TYPE_FOLDER);
createContentRenameAction(parentMenuTitle, i18n.t("Rename"), contents);
createEditAction(parentMenuTitle, TYPE_DOCUMENT);
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -47,7 +47,6 @@
import org.ourproject.kune.workspace.client.themes.WsThemeManager;
import org.ourproject.kune.workspace.client.tool.ToolSelector;
import org.ourproject.kune.workspace.client.upload.FileUploader;
-import org.ourproject.kune.workspace.client.wave.WaveInsert;
import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
@@ -83,8 +82,7 @@
p(ContentServiceAsync.class), p(GroupServiceAsync.class), p(FileUploader.class),
i(ContentActionRegistry.class), i(ContextActionRegistry.class), p(FileDownloadUtils.class),
i(EntityHeader.class), p(ContentEditor.class), i(ErrorHandler.class), i(DocumentViewer.class),
- p(ContextPropEditor.class), i(SitePublicSpaceLink.class), i(WsBackManager.class),
- p(WaveInsert.class));
+ p(ContextPropEditor.class), i(SitePublicSpaceLink.class), i(WsBackManager.class));
}
});
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -35,7 +35,6 @@
import org.ourproject.kune.workspace.client.sitebar.sitepublic.SitePublicSpaceLink;
import org.ourproject.kune.workspace.client.themes.WsBackManager;
import org.ourproject.kune.workspace.client.upload.FileUploader;
-import org.ourproject.kune.workspace.client.wave.WaveInsert;
import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
@@ -49,20 +48,18 @@
public class GalleryClientActions extends AbstractFoldableContentActions {
public GalleryClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator,
- final Session session, final StateManager stateManager,
- final SchedulerManager deferredCommandWrapper,
+ final Session session, final StateManager stateManager, final SchedulerManager deferredCommandWrapper,
final Provider<ContentServiceAsync> contentServiceProvider,
final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider,
final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
final Provider<FileDownloadUtils> fileDownloadProvider, final EntityHeader entityLogo,
final Provider<ContentEditor> textEditorProvider, final ErrorHandler errorHandler,
final GalleryViewer documentViewer, final Provider<ContextPropEditor> contextProvEditorProvider,
- final SitePublicSpaceLink publicLink, final WsBackManager wsBackManager,
- final Provider<WaveInsert> waveInsert) {
+ final SitePublicSpaceLink publicLink, final WsBackManager wsBackManager) {
super(session, stateManager, i18n, errorHandler, deferredCommandWrapper, groupServiceProvider,
contentServiceProvider, fileUploaderProvider, contextNavigator, contentActionRegistry,
contextActionRegistry, fileDownloadProvider, textEditorProvider, contextProvEditorProvider,
- documentViewer, entityLogo, publicLink, wsBackManager, waveInsert);
+ documentViewer, entityLogo, publicLink, wsBackManager);
}
@Override
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -47,7 +47,6 @@
import org.ourproject.kune.workspace.client.themes.WsThemeManager;
import org.ourproject.kune.workspace.client.tool.ToolSelector;
import org.ourproject.kune.workspace.client.upload.FileUploader;
-import org.ourproject.kune.workspace.client.wave.WaveInsert;
import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
@@ -83,8 +82,7 @@
p(ContentServiceAsync.class), p(GroupServiceAsync.class), p(FileUploader.class),
i(ContentActionRegistry.class), i(ContextActionRegistry.class), p(FileDownloadUtils.class),
i(EntityHeader.class), p(ContentEditor.class), i(ErrorHandler.class), i(GalleryViewer.class),
- p(ContextPropEditor.class), i(SitePublicSpaceLink.class), i(WsBackManager.class),
- p(WaveInsert.class));
+ p(ContextPropEditor.class), i(SitePublicSpaceLink.class), i(WsBackManager.class));
}
});
Modified: trunk/src/main/java/org/ourproject/kune/platf/KunePlatform.gwt.xml
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/KunePlatform.gwt.xml 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/platf/KunePlatform.gwt.xml 2011-01-29 03:38:12 UTC (rev 1227)
@@ -56,7 +56,7 @@
</replace-with>
<inherits name="com.calclab.suco.Suco" />
<inherits name="com.gwtext.GwtExt" />
- <inherits name="com.calclab.emiteuimodule.EmiteUIModule" />
+<!-- <inherits name="com.calclab.emiteuimodule.EmiteUIModule" />-->
<inherits name="org.xwiki.gwt.dom.DOM" />
<inherits name="com.calclab.suco.Suco"/>
<source path='client' excludes="**/*Test.java,**/*Tests.java,**/*MockProvider.java"/>
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractGuiItem.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractGuiItem.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractGuiItem.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -5,8 +5,9 @@
import org.ourproject.kune.platf.client.actions.Action;
import org.ourproject.kune.platf.client.actions.PropertyChangeEvent;
import org.ourproject.kune.platf.client.actions.PropertyChangeListener;
-import org.ourproject.kune.platf.client.ui.img.ImgConstants;
+import cc.kune.core.client.resources.icons.IconConstants;
+
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.ui.Composite;
@@ -82,7 +83,7 @@
if (icon instanceof CssStyleDescriptor) {
setIconStyle(((CssStyleDescriptor) icon).getName());
} else if (icon instanceof ImageResource) {
- setIconStyle((ImgConstants.CSS_SUFFIX + ((ImageResource) icon).getName()));
+ setIconStyle((IconConstants.CSS_SUFFIX + ((ImageResource) icon).getName()));
} else if (icon instanceof String) {
setIconUrl((String) icon);
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -27,7 +27,6 @@
import org.ourproject.kune.platf.client.shortcuts.GlobalShortcutRegister;
import org.ourproject.kune.platf.client.ui.QuickTipsHelper;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
import org.ourproject.kune.platf.client.ui.palette.ColorWebSafePalette;
import org.ourproject.kune.platf.client.ui.palette.ColorWebSafePalettePanel;
@@ -100,6 +99,7 @@
import cc.kune.common.client.utils.TimerWrapper;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.client.state.AccessRightsClientManager;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
@@ -238,10 +238,10 @@
}
});
- register(Singleton.class, new Factory<ImgResources>(ImgResources.class) {
+ register(Singleton.class, new Factory<IconResources>(IconResources.class) {
@Override
- public ImgResources create() {
- final ImgResources instance = GWT.create(ImgResources.class);
+ public IconResources create() {
+ final IconResources instance = GWT.create(IconResources.class);
instance.css().ensureInjected();
return instance;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/IconLabelEditable.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/IconLabelEditable.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/IconLabelEditable.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -22,7 +22,6 @@
import java.util.ArrayList;
import java.util.List;
-import com.calclab.suco.client.events.Event2;
import com.calclab.suco.client.events.Listener2;
import com.google.gwt.event.dom.client.BlurEvent;
import com.google.gwt.event.dom.client.BlurHandler;
@@ -49,19 +48,19 @@
*/
public class IconLabelEditable extends Composite {
- private boolean useDoubleClick;
+ private ClickHandler clickHandler;
+ private String clickLabel;
private String currentText;
- private final AbstractLabel label;
private String dblClickLabel;
- private String clickLabel;
- private Event2<String, String> onEditEvent;
+ private DoubleClickHandler doubleClickHandler;
+ // private Event2<String, String> onEditEvent;
private TextBox editor;
private HorizontalPanel hpanel;
- private List<HandlerRegistration> registrations;
- private ClickHandler clickHandler;
- private DoubleClickHandler doubleClickHandler;
+ private final AbstractLabel label;
private MouseOutHandler mouseOutHandler;
private MouseOverHandler mouseOverHandler;
+ private List<HandlerRegistration> registrations;
+ private boolean useDoubleClick;
public IconLabelEditable() {
this("");
@@ -94,6 +93,16 @@
init(text, useDoubleClick);
}
+ private void afterEdit() {
+ final String text = editor.getText();
+ // onEditEvent.fire(currentText, text);
+ setTextImpl(text);
+ editor.setVisible(false);
+ editor.setReadOnly(true);
+ label.setVisible(true);
+ label.removeStyleDependentName("high");
+ }
+
public void edit() {
showEditor();
editor.setFocus(true);
@@ -103,50 +112,8 @@
return label.getText();
}
- public void onEdit(final Listener2<String, String> slot) {
- onEditEvent.add(slot);
- }
-
- /**
- * Sets the text tooltip showed to indicate "click to rename".
- *
- * @param text
- * the new click to rename label
- */
- public void setClickToRenameLabel(final String text) {
- this.clickLabel = text;
- }
-
- /**
- * Sets the text tooltip showed to indicate "double click to rename".
- *
- * @param text
- * the new double click to rename label
- */
- public void setDoubleClickToRenameLabel(final String text) {
- this.dblClickLabel = text;
- }
-
- public void setEditable(final boolean editable) {
- setEditableImpl(editable);
- }
-
- public void setText(final String text) {
- setTextImpl(text);
- }
-
- private void afterEdit() {
- final String text = editor.getText();
- onEditEvent.fire(currentText, text);
- setTextImpl(text);
- editor.setVisible(false);
- editor.setReadOnly(true);
- label.setVisible(true);
- label.removeStyleDependentName("high");
- }
-
private void init(final String text, final boolean useDoubleClick) {
- this.onEditEvent = new Event2<String, String>("onLabelEdit");
+ // this.onEditEvent = new Event2<String, String>("onLabelEdit");
registrations = new ArrayList<HandlerRegistration>();
dblClickLabel = "Double click to rename";
clickLabel = "Click to rename";
@@ -157,21 +124,25 @@
this.useDoubleClick = useDoubleClick;
label.setStylePrimaryName("kune-EditableLabel");
doubleClickHandler = new DoubleClickHandler() {
+ @Override
public void onDoubleClick(final DoubleClickEvent event) {
showEditor();
}
};
clickHandler = new ClickHandler() {
+ @Override
public void onClick(final ClickEvent event) {
showEditor();
}
};
mouseOverHandler = new MouseOverHandler() {
+ @Override
public void onMouseOver(final MouseOverEvent event) {
label.addStyleDependentName("high");
}
};
mouseOutHandler = new MouseOutHandler() {
+ @Override
public void onMouseOut(final MouseOutEvent event) {
label.removeStyleDependentName("high");
}
@@ -179,6 +150,10 @@
setEditableImpl(false);
}
+ public void onEdit(final Listener2<String, String> slot) {
+ // onEditEvent.add(slot);
+ }
+
private void reset() {
label.removeStyleDependentName("noneditable");
label.removeStyleDependentName("editable");
@@ -188,6 +163,30 @@
registrations.clear();
}
+ /**
+ * Sets the text tooltip showed to indicate "click to rename".
+ *
+ * @param text
+ * the new click to rename label
+ */
+ public void setClickToRenameLabel(final String text) {
+ this.clickLabel = text;
+ }
+
+ /**
+ * Sets the text tooltip showed to indicate "double click to rename".
+ *
+ * @param text
+ * the new double click to rename label
+ */
+ public void setDoubleClickToRenameLabel(final String text) {
+ this.dblClickLabel = text;
+ }
+
+ public void setEditable(final boolean editable) {
+ setEditableImpl(editable);
+ }
+
private void setEditableImpl(final boolean editable) {
reset();
if (editable) {
@@ -207,6 +206,10 @@
}
}
+ public void setText(final String text) {
+ setTextImpl(text);
+ }
+
private void setTextImpl(final String text) {
this.currentText = text;
label.setText(text);
@@ -220,11 +223,13 @@
editor.setStyleName("k-eil-edit");
hpanel.add(editor);
editor.addBlurHandler(new BlurHandler() {
+ @Override
public void onBlur(final BlurEvent event) {
afterEdit();
}
});
editor.addChangeHandler(new ChangeHandler() {
+ @Override
public void onChange(final ChangeEvent event) {
editor.setFocus(false);
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/gridmenu/GridDropConfiguration.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/gridmenu/GridDropConfiguration.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/gridmenu/GridDropConfiguration.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -40,22 +40,22 @@
*/
package org.ourproject.kune.platf.client.ui.gridmenu;
-import com.calclab.suco.client.events.Event;
import com.calclab.suco.client.events.Listener;
public class GridDropConfiguration {
private final String ddGroupId;
- private final Event<String> onDrop;
+ // private final Event<String> onDrop;
+
public GridDropConfiguration(final String ddGroupId, final Listener<String> listener) {
this.ddGroupId = ddGroupId;
- this.onDrop = new Event<String>("onDrop");
+ // this.onDrop = new Event<String>("onDrop");
this.onDropImpl(listener);
}
public void fire(final String id) {
- onDrop.fire(id);
+ // onDrop.fire(id);
}
public String getDdGroupId() {
@@ -67,7 +67,7 @@
}
private void onDropImpl(final Listener<String> listener) {
- onDrop.add(listener);
+ // onDrop.add(listener);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/gridmenu/GridMenuPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/gridmenu/GridMenuPanel.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/gridmenu/GridMenuPanel.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -24,7 +24,6 @@
import java.util.Map;
import com.allen_sauer.gwt.log.client.Log;
-import com.calclab.suco.client.events.Event;
import com.calclab.suco.client.events.Listener;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.Ext;
@@ -60,31 +59,31 @@
import com.gwtext.client.widgets.layout.FitLayout;
public class GridMenuPanel<T> extends Panel {
+ public static final int DEFAULT_INITIAL_WIDTH = 150;
+ private static final String END_ICON_HTML = "endIconHtmlField";
public static final String GRID_MENU_PANEL_DD = "gridMenuPanelDD";
- public static final int DEFAULT_INITIAL_WIDTH = 150;
private static final String GROUP = "groupField";
+ private static final String GROUP_ENDICON_HTML = "groupEndIconHtmlField";
+ private static final String GROUP_TOOLTIP = "groupTooltipField";
private static final String GROUP_TOOLTIP_TITLE = "groupTooltipTitleField";
- private static final String GROUP_TOOLTIP = "groupTooltipField";
- private static final String GROUP_ENDICON_HTML = "groupEndIconHtmlField";
+ private static final String ICON_HTML = "iconHtmlField";
private static final String ID = "idField";
- private static final String ICON_HTML = "iconHtmlField";
private static final String TITLE = "titleField";
private static final String TITLE_HTML = "titleHtmlField";
- private static final String END_ICON_HTML = "endIconHtmlField";
private static final String TOOLTIP = "tooltipField";
private static final String TOOLTIPTITLE = "tooltipTitleField";
+ private Toolbar bottomBar;
+ private ColumnModel columnModel;
+ private GridPanel grid;
+ private final boolean grouped;
private final Map<String, CustomMenu<T>> menuMap;
+ private RecordDef recordDef;
private final Map<T, Record> recordMap;
- private RecordDef recordDef;
private GroupingStore store;
- private GridPanel grid;
- private final boolean grouped;
+ // private final Event<String> onClick;
+ // private final Event<String> onDoubleClick;
+ private Toolbar topBar;
private final boolean withCounters;
- private final Event<String> onClick;
- private final Event<String> onDoubleClick;
- private Toolbar topBar;
- private Toolbar bottomBar;
- private ColumnModel columnModel;
private final boolean withEndIcon;
public GridMenuPanel(final String emptyText) {
@@ -112,8 +111,8 @@
public GridMenuPanel(final String emptyText, final GridDragConfiguration gridDragConfiguration,
final GridDropConfiguration gridDropConfiguration, final boolean grouped, final boolean withCounters,
final boolean withTopBar, final boolean withBottomBar, final boolean withEndIcon) {
- this.onClick = new Event<String>("onClick");
- this.onDoubleClick = new Event<String>("onDoubleClick");
+ // this.onClick = new Event<String>("onClick");
+ // this.onDoubleClick = new Event<String>("onDoubleClick");
this.grouped = grouped;
this.withCounters = withCounters;
this.withEndIcon = withEndIcon;
@@ -150,10 +149,12 @@
public void addItem(final GridItem<T> gridItem) {
final String id = gridItem.getId();
- final Record newRecord = recordDef.createRecord(id, new Object[] { gridItem.getGroup().getName(),
- gridItem.getGroup().getTooltipTitle(), gridItem.getGroup().getTooltip(),
- gridItem.getGroup().getEndIconHtml(), id, gridItem.getIconHtml(), gridItem.getTitle(),
- gridItem.getTitleHtml(), gridItem.getEndIconHtml(), gridItem.getTooltipTitle(), gridItem.getTooltip() });
+ final Record newRecord = recordDef.createRecord(
+ id,
+ new Object[] { gridItem.getGroup().getName(), gridItem.getGroup().getTooltipTitle(),
+ gridItem.getGroup().getTooltip(), gridItem.getGroup().getEndIconHtml(), id,
+ gridItem.getIconHtml(), gridItem.getTitle(), gridItem.getTitleHtml(),
+ gridItem.getEndIconHtml(), gridItem.getTooltipTitle(), gridItem.getTooltip() });
recordMap.put(gridItem.getItem(), newRecord);
store.addSorted(newRecord);
menuMap.put(id, gridItem.getMenu());
@@ -173,7 +174,7 @@
if (dragData instanceof GridDragData) {
final GridDragData gridDragData = (GridDragData) dragData;
final Record[] records = gridDragData.getSelections();
- for (Record record : records) {
+ for (final Record record : records) {
gridDropConfiguration.fire(record.getAsString(ID));
}
}
@@ -192,97 +193,6 @@
};
}
- @Override
- public void doLayout(final boolean shallow) {
- // Grid rendered problems with shallow false
- grid.doLayout(true);
- super.doLayout(true);
- }
-
- public void doLayoutIfNeeded() {
- if (super.isRendered()) {
- grid.doLayout(true);
- super.doLayout(true);
- }
- }
-
- public Toolbar getBottomBar() {
- assert bottomBar != null;
- return bottomBar;
- }
-
- public Toolbar getTopBar() {
- assert topBar != null;
- return topBar;
- }
-
- public void onClick(final Listener<String> listener) {
- onClick.add(listener);
- }
-
- public void onDoubleClick(final Listener<String> listener) {
- onDoubleClick.add(listener);
- }
-
- @Override
- public void removeAll() {
- store.removeAll();
- recordMap.clear();
- menuMap.clear();
- }
-
- public void removeItem(final GridItem<T> gridItem) {
- final Record record = recordMap.get(gridItem.getItem());
- if (record == null) {
- Log.error("Trying to remove a non existing item: " + gridItem.getId());
- } else {
- menuMap.remove(gridItem.getId());
- store.remove(record);
- recordMap.remove(gridItem.getItem());
- doLayoutIfNeeded();
- }
- }
-
- @Override
- public void setHeight(final int height) {
- super.setHeight(height);
- doLayoutIfNeeded();
- }
-
- @Override
- public void setWidth(final int width) {
- grid.setWidth(width - 27);
- // super.setWidth(width);
- doLayoutIfNeeded();
- }
-
- public void sort() {
- store.sort(GROUP, SortDir.ASC);
- }
-
- public void updateItem(final GridItem<T> gridItem) {
- final String id = gridItem.getId();
- final Record record = recordMap.get(gridItem.getItem());
- if (record != null) {
- record.set(GROUP, gridItem.getGroup().getName());
- record.set(GROUP_TOOLTIP_TITLE, gridItem.getGroup().getTooltipTitle());
- record.set(GROUP_TOOLTIP, gridItem.getGroup().getTooltip());
- record.set(GROUP_ENDICON_HTML, gridItem.getGroup().getEndIconHtml());
- record.set(ICON_HTML, gridItem.getIconHtml());
- record.set(TITLE, gridItem.getTitle());
- record.set(TITLE_HTML, gridItem.getTitleHtml());
- record.set(END_ICON_HTML, gridItem.getEndIconHtml());
- record.set(TOOLTIPTITLE, gridItem.getTooltipTitle());
- record.set(TOOLTIP, gridItem.getTooltip());
- store.commitChanges();
- menuMap.put(id, gridItem.getMenu());
- sort();
- doLayoutIfNeeded();
- } else {
- Log.error("Trying to update a non existing item: " + id);
- }
- }
-
private void configureDragImpl(final GridDragConfiguration gridDragConfiguration) {
// TODO: put this in GDConf
grid.setEnableDragDrop(true);
@@ -303,7 +213,7 @@
if (dragData instanceof GridDragData) {
final GridDragData gridDragData = (GridDragData) dragData;
final Record[] records = gridDragData.getSelections();
- for (Record record : records) {
+ for (final Record record : records) {
gridDropConfiguration.fire(record.getAsString(ID));
}
}
@@ -347,26 +257,35 @@
final String commonTootipHtmlRender = "<span ext:qtitle=\"{1}\" ext:qtip=\"{2}\">{0}</span>";
final Renderer iconHtmlRenderer = new Renderer() {
+ @Override
public String render(final Object value, final CellMetadata cellMetadata, final Record record,
final int rowIndex, final int colNum, final Store store) {
- return Format.format(commonTootipHtmlRender, new String[] { record.getAsString(ICON_HTML),
- record.getAsString(TOOLTIPTITLE), record.getAsString(TOOLTIP) });
+ return Format.format(
+ commonTootipHtmlRender,
+ new String[] { record.getAsString(ICON_HTML), record.getAsString(TOOLTIPTITLE),
+ record.getAsString(TOOLTIP) });
}
};
final Renderer titleHtmlRenderer = new Renderer() {
+ @Override
public String render(final Object value, final CellMetadata cellMetadata, final Record record,
final int rowIndex, final int colNum, final Store store) {
- return Format.format(commonTootipHtmlRender, new String[] { record.getAsString(TITLE_HTML),
- record.getAsString(TOOLTIPTITLE), record.getAsString(TOOLTIP) });
+ return Format.format(
+ commonTootipHtmlRender,
+ new String[] { record.getAsString(TITLE_HTML), record.getAsString(TOOLTIPTITLE),
+ record.getAsString(TOOLTIP) });
}
};
final Renderer endIconHtmlRenderer = new Renderer() {
+ @Override
public String render(final Object value, final CellMetadata cellMetadata, final Record record,
final int rowIndex, final int colNum, final Store store) {
- return Format.format(commonTootipHtmlRender, new String[] { record.getAsString(END_ICON_HTML),
- record.getAsString(TOOLTIPTITLE), record.getAsString(TOOLTIP) });
+ return Format.format(
+ commonTootipHtmlRender,
+ new String[] { record.getAsString(END_ICON_HTML), record.getAsString(TOOLTIPTITLE),
+ record.getAsString(TOOLTIP) });
}
};
@@ -397,15 +316,18 @@
grid.setSelectionModel(new RowSelectionModel());
grid.addGridRowListener(new GridRowListener() {
+ @Override
public void onRowClick(final GridPanel grid, final int rowIndex, final EventObject e) {
showMenu(rowIndex, e);
onClickImpl(rowIndex);
}
+ @Override
public void onRowContextMenu(final GridPanel grid, final int rowIndex, final EventObject e) {
showMenu(rowIndex, e);
}
+ @Override
public void onRowDblClick(final GridPanel grid, final int rowIndex, final EventObject e) {
onDoubleClickImpl(rowIndex);
}
@@ -472,14 +394,105 @@
super.add(grid);
}
+ @Override
+ public void doLayout(final boolean shallow) {
+ // Grid rendered problems with shallow false
+ grid.doLayout(true);
+ super.doLayout(true);
+ }
+
+ public void doLayoutIfNeeded() {
+ if (super.isRendered()) {
+ grid.doLayout(true);
+ super.doLayout(true);
+ }
+ }
+
+ public Toolbar getBottomBar() {
+ assert bottomBar != null;
+ return bottomBar;
+ }
+
+ public Toolbar getTopBar() {
+ assert topBar != null;
+ return topBar;
+ }
+
+ public void onClick(final Listener<String> listener) {
+ // onClick.add(listener);
+ }
+
private void onClickImpl(final int rowIndex) {
final Record record = store.getRecordAt(rowIndex);
- onClick.fire(record.getAsString(ID));
+ // onClick.fire(record.getAsString(ID));
}
+ public void onDoubleClick(final Listener<String> listener) {
+ // onDoubleClick.add(listener);
+ }
+
private void onDoubleClickImpl(final int rowIndex) {
final Record record = store.getRecordAt(rowIndex);
- onDoubleClick.fire(record.getAsString(ID));
+ // onDoubleClick.fire(record.getAsString(ID));
}
+ @Override
+ public void removeAll() {
+ store.removeAll();
+ recordMap.clear();
+ menuMap.clear();
+ }
+
+ public void removeItem(final GridItem<T> gridItem) {
+ final Record record = recordMap.get(gridItem.getItem());
+ if (record == null) {
+ Log.error("Trying to remove a non existing item: " + gridItem.getId());
+ } else {
+ menuMap.remove(gridItem.getId());
+ store.remove(record);
+ recordMap.remove(gridItem.getItem());
+ doLayoutIfNeeded();
+ }
+ }
+
+ @Override
+ public void setHeight(final int height) {
+ super.setHeight(height);
+ doLayoutIfNeeded();
+ }
+
+ @Override
+ public void setWidth(final int width) {
+ grid.setWidth(width - 27);
+ // super.setWidth(width);
+ doLayoutIfNeeded();
+ }
+
+ public void sort() {
+ store.sort(GROUP, SortDir.ASC);
+ }
+
+ public void updateItem(final GridItem<T> gridItem) {
+ final String id = gridItem.getId();
+ final Record record = recordMap.get(gridItem.getItem());
+ if (record != null) {
+ record.set(GROUP, gridItem.getGroup().getName());
+ record.set(GROUP_TOOLTIP_TITLE, gridItem.getGroup().getTooltipTitle());
+ record.set(GROUP_TOOLTIP, gridItem.getGroup().getTooltip());
+ record.set(GROUP_ENDICON_HTML, gridItem.getGroup().getEndIconHtml());
+ record.set(ICON_HTML, gridItem.getIconHtml());
+ record.set(TITLE, gridItem.getTitle());
+ record.set(TITLE_HTML, gridItem.getTitleHtml());
+ record.set(END_ICON_HTML, gridItem.getEndIconHtml());
+ record.set(TOOLTIPTITLE, gridItem.getTooltipTitle());
+ record.set(TOOLTIP, gridItem.getTooltip());
+ store.commitChanges();
+ menuMap.put(id, gridItem.getMenu());
+ sort();
+ doLayoutIfNeeded();
+ } else {
+ Log.error("Trying to update a non existing item: " + id);
+ }
+ }
+
}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/IconCssResource.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/IconCssResource.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/IconCssResource.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,7 +0,0 @@
-package org.ourproject.kune.platf.client.ui.img;
-
-import com.google.gwt.resources.client.CssResource;
-
-public interface IconCssResource extends CssResource {
- String iconSpriteClass();
-}
\ No newline at end of file
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgConstants.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgConstants.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgConstants.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,17 +0,0 @@
-package org.ourproject.kune.platf.client.ui.img;
-
-import com.google.gwt.resources.client.ImageResource;
-
-public final class ImgConstants {
-
- public static final String CSS_SUFFIX = "k-icon-";
-
- public static final String PATH_PREFIX = "images/";
-
- public static String toPath(final ImageResource img) {
- return PATH_PREFIX + img.getName() + ".png";
- }
-
- private ImgConstants() {
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgCssResource.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgCssResource.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgCssResource.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,33 +0,0 @@
-package org.ourproject.kune.platf.client.ui.img;
-
-import com.google.gwt.resources.client.CssResource;
-
-public interface ImgCssResource extends CssResource {
-
- @ClassName("k-icon-addGreen")
- String kIconAddGreen();
-
- @ClassName("k-icon-bug")
- String kIconBug();
-
- @ClassName("k-icon-groupHome")
- String kIconGroupHome();
-
- @ClassName("k-icon-info")
- String kIconInfo();
-
- @ClassName("k-icon-kuneIcon16")
- String kIconKuneIcon16();
-
- @ClassName("k-icon-language")
- String kIconLanguage();
-
- @ClassName("k-icon-maximize")
- String kIconMaximize();
-
- @ClassName("k-icon-minimize")
- String kIconMinimize();
-
- @ClassName("k-icon-prefs")
- String kIconPrefs();
-}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgResources.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgResources.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/ImgResources.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,42 +0,0 @@
-package org.ourproject.kune.platf.client.ui.img;
-
-import com.google.gwt.resources.client.ClientBundle;
-import com.google.gwt.resources.client.CssResource.Strict;
-import com.google.gwt.resources.client.ImageResource;
-
-public interface ImgResources extends ClientBundle {
-
- @Source("add-green.png")
- ImageResource addGreen();
-
- @Source("bug.png")
- ImageResource bug();
-
- @Source("kimg.css")
- @Strict
- ImgCssResource css();
-
- @Source("del-green.png")
- ImageResource delGreen();
-
- @Source("group-home.png")
- ImageResource groupHome();
-
- @Source("info.png")
- ImageResource info();
-
- @Source("kune-icon16.png")
- ImageResource kuneIcon16();
-
- @Source("language.png")
- ImageResource language();
-
- @Source("arrow_out.png")
- ImageResource maximize();
-
- @Source("arrow_in.png")
- ImageResource minimize();
-
- @Source("prefs.png")
- ImageResource prefs();
-}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/add-green.png
===================================================================
(Binary files differ)
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/arrow_in.png
===================================================================
(Binary files differ)
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/arrow_out.png
===================================================================
(Binary files differ)
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/bug.png
===================================================================
(Binary files differ)
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/del-green.png
===================================================================
(Binary files differ)
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/group-home.png
===================================================================
(Binary files differ)
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/info.png
===================================================================
(Binary files differ)
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/kimg.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/kimg.css 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/kimg.css 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,37 +0,0 @@
-@external k-icon-info,k-icon-language,k-icon-kuneIcon16,k-icon-bug,k-icon-prefs,k-icon-groupHome,k-icon-addGreen,k-icon-maximize,k-icon-minimize;
-
-@sprite div .k-icon-info {
- gwt-image: "info";
-}
-
-@sprite div .k-icon-language {
- gwt-image: "language";
-}
-
-@sprite div .k-icon-kuneIcon16 {
- gwt-image: "kuneIcon16";
-}
-
-@sprite div .k-icon-bug {
- gwt-image: "bug";
-}
-
-@sprite div .k-icon-prefs {
- gwt-image: "prefs";
-}
-
-@sprite div .k-icon-groupHome {
- gwt-image: "groupHome";
-}
-
-@sprite div .k-icon-addGreen {
- gwt-image: "addGreen";
-}
-
-@sprite div .k-icon-maximize {
- gwt-image: "maximize";
-}
-
-@sprite div .k-icon-minimize {
- gwt-image: "minimize";
-}
\ No newline at end of file
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/kune-icon16.png
===================================================================
(Binary files differ)
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/language.png
===================================================================
(Binary files differ)
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/img/prefs.png
===================================================================
(Binary files differ)
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/noti/NotifyUser.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/noti/NotifyUser.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/noti/NotifyUser.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -24,9 +24,6 @@
import cc.kune.core.client.notify.msgs.UserNotifyEvent;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import com.calclab.suco.client.events.Event;
-import com.calclab.suco.client.events.Event0;
-import com.calclab.suco.client.events.Event2;
import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
import com.calclab.suco.client.events.Listener2;
@@ -46,31 +43,39 @@
private static I18nTranslationService i18n;
private static Images images;
- private static final Event2<String, String> ON_ALERT = new Event2<String, String>("onAlert");
- private static final Event<ConfirmationAsk> ON_CONFIRMATION_ASK = new Event<ConfirmationAsk>("onConfirmationAsk");
- private static final Event0 ON_HIDE_PROGRESS = new Event0("onHideProgress");
- private static final Event2<Level, String> ON_NOTIFY = new Event2<Level, String>("onNotify");
+ // private static final Event2<String, String> ON_ALERT = new Event2<String,
+ // String>("onAlert");
+ // private static final Event<ConfirmationAsk> ON_CONFIRMATION_ASK = new
+ // Event<ConfirmationAsk>("onConfirmationAsk");
+ // private static final Event0 ON_HIDE_PROGRESS = new
+ // Event0("onHideProgress");
- private static final Event<String> ON_PROGRESS = new Event<String>("onProgress");
+ // private static final Event2<Level, String> ON_NOTIFY = new Event2<Level,
+ // String>("onNotify");
+ // private static final Event<String> ON_PROGRESS = new
+ // Event<String>("onProgress");
+
public static void askConfirmation(final String confirmationTitle, final String confirmationText,
final Listener0 onConfirm) {
- ON_CONFIRMATION_ASK.fire(new ConfirmationAsk(confirmationTitle, confirmationText, onConfirm, new Listener0() {
- @Override
- public void onEvent() {
- // Do nothing
- }
- }));
+ // ON_CONFIRMATION_ASK.fire(new ConfirmationAsk(confirmationTitle,
+ // confirmationText, onConfirm, new Listener0() {
+ // @Override
+ // public void onEvent() {
+ // // Do nothing
+ // }
+ // }));
}
public static void askConfirmation(final String confirmationTitle, final String confirmationText,
final Listener0 onConfirm, final Listener0 onCancel) {
- ON_CONFIRMATION_ASK.fire(new ConfirmationAsk(confirmationTitle, confirmationText, onConfirm, onCancel));
+ // ON_CONFIRMATION_ASK.fire(new ConfirmationAsk(confirmationTitle,
+ // confirmationText, onConfirm, onCancel));
}
public static void error(final String message) {
- ON_NOTIFY.fire(Level.error, message);
+ // ON_NOTIFY.fire(Level.error, message);
}
public static String getCls(final Level level) {
@@ -102,43 +107,43 @@
}
public static void hideProgress() {
- ON_HIDE_PROGRESS.fire();
+ // ON_HIDE_PROGRESS.fire();
}
public static void important(final String message) {
- ON_NOTIFY.fire(Level.important, message);
+ // ON_NOTIFY.fire(Level.important, message);
}
public static void info(final String message) {
- ON_NOTIFY.fire(Level.info, message);
+ // ON_NOTIFY.fire(Level.info, message);
}
public static void showAlertMessage(final String title, final String message) {
- ON_ALERT.fire(title, message);
+ // ON_ALERT.fire(title, message);
}
public static void showProgress(final String text) {
- ON_PROGRESS.fire(text);
+ // ON_PROGRESS.fire(text);
}
public static void showProgressLoading() {
- ON_PROGRESS.fire(i18n.t("Loading"));
+ // ON_PROGRESS.fire(i18n.t("Loading"));
}
public static void showProgressProcessing() {
- ON_PROGRESS.fire(i18n.t("Processing"));
+ // ON_PROGRESS.fire(i18n.t("Processing"));
}
public static void showProgressSaving() {
- ON_PROGRESS.fire(i18n.t("Saving"));
+ // ON_PROGRESS.fire(i18n.t("Saving"));
}
public static void showProgressStarting() {
- ON_PROGRESS.fire(i18n.t("Starting"));
+ // ON_PROGRESS.fire(i18n.t("Starting"));
}
public static void veryImportant(final String message) {
- ON_NOTIFY.fire(Level.veryImportant, message);
+ // ON_NOTIFY.fire(Level.veryImportant, message);
}
private NotifyUser() {
@@ -151,23 +156,23 @@
}
public void addAlerter(final Listener2<String, String> listener) {
- ON_ALERT.add(listener);
+ // ON_ALERT.add(listener);
}
public void addConfirmationAsker(final Listener<ConfirmationAsk> listener) {
- ON_CONFIRMATION_ASK.add(listener);
+ // ON_CONFIRMATION_ASK.add(listener);
}
public void addHideProgressNotifier(final Listener0 listener) {
- ON_HIDE_PROGRESS.add(listener);
+ // ON_HIDE_PROGRESS.add(listener);
}
public void addNotifier(final Listener2<Level, String> listener) {
- ON_NOTIFY.add(listener);
+ // ON_NOTIFY.add(listener);
}
public void addProgressNotifier(final Listener<String> listener) {
- ON_PROGRESS.add(listener);
+ // ON_PROGRESS.add(listener);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -28,7 +28,6 @@
import org.ourproject.kune.platf.client.actions.ui.PushButtonDescriptor;
import org.ourproject.kune.platf.client.actions.ui.ToolbarSeparatorDescriptor;
import org.ourproject.kune.platf.client.actions.ui.ToolbarSeparatorDescriptor.Type;
-import org.ourproject.kune.platf.client.ui.img.ImgConstants;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
import org.ourproject.kune.platf.client.ui.palette.ColorWebSafePalette;
import org.ourproject.kune.platf.client.ui.rte.RichTextArea;
@@ -43,11 +42,11 @@
import org.ourproject.kune.platf.client.ui.rte.inserttable.InsertTableDialog;
import cc.kune.common.client.utils.SchedulerManager;
+import cc.kune.core.client.resources.icons.IconConstants;
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.allen_sauer.gwt.log.client.Log;
-import com.calclab.suco.client.events.Event0;
import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
import com.calclab.suco.client.ioc.Provider;
@@ -720,7 +719,7 @@
private PushButtonDescriptor italic;
private MenuDescriptor linkCtxMenu;
private final List<MenuDescriptor> menus;
- private final Event0 onEdit;
+ // private final Event0 onEdit;
protected ColorWebSafePalette palette;
private final Provider<ColorWebSafePalette> paletteProvider;
private final Session session;
@@ -750,7 +749,7 @@
menus = new ArrayList<MenuDescriptor>();
this.imgResources = imgResources;
- this.onEdit = new Event0("onRTEEdit");
+ // this.onEdit = new Event0("onRTEEdit");
extendedAddCond = new GuiAddCondition() {
@Override
public boolean mustBeAdded() {
@@ -775,7 +774,7 @@
@Override
public void addOnEditListener(final Listener0 listener) {
- onEdit.add(listener);
+ // onEdit.add(listener);
}
public void adjustSize(final int height) {
@@ -1064,9 +1063,9 @@
menus.add(formatMenu = new MenuDescriptor(i18n.t("Format")));
menus.add(linkCtxMenu = new MenuDescriptor(i18n.t("Change Link")));
menus.add(fontMenu = new MenuDescriptor(" ", i18n.t("Font"),
- ImgConstants.toPath(imgResources.charfontname())));
+ IconConstants.toPath(imgResources.charfontname())));
menus.add(fontSizeMenu = new MenuDescriptor(NO_TEXT, i18n.t("Font size"),
- ImgConstants.toPath(imgResources.fontheight())));
+ IconConstants.toPath(imgResources.fontheight())));
insertMenu.setAddCondition(extendedAddCond);
}
@@ -1082,7 +1081,7 @@
}
public void fireOnEdit() {
- onEdit.fire();
+ // onEdit.fire();
}
@Override
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/init/DatabaseInitializer.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/init/DatabaseInitializer.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/init/DatabaseInitializer.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,6 +1,5 @@
package org.ourproject.kune.platf.server.init;
-import java.util.ArrayList;
import java.util.TimeZone;
import javax.persistence.NoResultException;
@@ -26,28 +25,26 @@
import cc.kune.domain.I18nLanguage;
import cc.kune.domain.I18nTranslation;
import cc.kune.domain.License;
-import cc.kune.domain.Property;
import cc.kune.domain.PropertyGroup;
import cc.kune.domain.PropertySubgroup;
import cc.kune.domain.User;
-import com.calclab.emiteuimodule.client.SubscriptionMode;
import com.google.inject.Inject;
import com.wideplay.warp.persist.TransactionType;
import com.wideplay.warp.persist.Transactional;
public class DatabaseInitializer {
+ private final ContentManager contentManager;
+ private final I18nCountryManager countryManager;
+ private final GroupManager groupManager;
+ private final I18nLanguageManager languageManager;
private final LicenseManager licenseManager;
private final DatabaseProperties properties;
- private final GroupManager groupManager;
- private final UserManager userManager;
- private final I18nLanguageManager languageManager;
- private final I18nCountryManager countryManager;
- private final I18nTranslationManager translationManager;
- private final ContentManager contentManager;
private final PropertyManager propertyManager;
private final PropertyGroupManager propGroupManager;
private final PropertySubgroupManager propSubgroupManager;
+ private final I18nTranslationManager translationManager;
+ private final UserManager userManager;
@Inject
public DatabaseInitializer(final DatabaseProperties properties, final UserManager userManager,
@@ -69,36 +66,6 @@
this.propSubgroupManager = propSubgroupManager;
}
- public void createOthers() {
- final I18nLanguage english = new I18nLanguage(Long.valueOf(1819), "en", "ltr", "English", "", "", "en", "eng",
- "eng", false, "", "", "", "c == 1 ? 1 : 2", null, "L", "MMM d\\, yyyy");
- final I18nLanguage spanish = new I18nLanguage(Long.valueOf(5889), "es", "ltr", "Spanish", "", "", "es", "spa",
- "spa", true, "Español", "", "", "c == 1 ? 1 : 2", null, "L", "dd/MM/yyyy");
- languageManager.persist(english);
- languageManager.persist(spanish);
- final I18nCountry gb = new I18nCountry(Long.valueOf(75), "GB", "GBP", ".", "£%n", "", ".", "United Kingdom",
- "western", ",");
- countryManager.persist(gb);
- final I18nTranslation test = new I18nTranslation("test", english, "test");
- translationManager.persist(test);
- }
-
- public void initConditional() throws Exception {
- try {
- groupManager.getSiteDefaultGroup();
- } catch (final NoResultException e) {
- initDatabase();
- }
- }
-
- @Transactional(type = TransactionType.READ_WRITE)
- public void initDatabase() throws Exception {
- createOthers();
- createLicenses();
- createProperties();
- createDefUsersGroup();
- }
-
private void createDefUsersGroup() throws Exception, UserMustBeLoggedException {
final String adminName = properties.getAdminUserName();
final String adminShortName = properties.getAdminShortName();
@@ -199,6 +166,20 @@
licenseManager.persist(license);
}
+ public void createOthers() {
+ final I18nLanguage english = new I18nLanguage(Long.valueOf(1819), "en", "ltr", "English", "", "", "en", "eng",
+ "eng", false, "", "", "", "c == 1 ? 1 : 2", null, "L", "MMM d\\, yyyy");
+ final I18nLanguage spanish = new I18nLanguage(Long.valueOf(5889), "es", "ltr", "Spanish", "", "", "es", "spa",
+ "spa", true, "Español", "", "", "c == 1 ? 1 : 2", null, "L", "dd/MM/yyyy");
+ languageManager.persist(english);
+ languageManager.persist(spanish);
+ final I18nCountry gb = new I18nCountry(Long.valueOf(75), "GB", "GBP", ".", "£%n", "", ".", "United Kingdom",
+ "western", ",");
+ countryManager.persist(gb);
+ final I18nTranslation test = new I18nTranslation("test", english, "test");
+ translationManager.persist(test);
+ }
+
private void createProperties() {
final PropertyGroup groupProps = new PropertyGroup(Group.PROPS_ID);
final PropertyGroup userProps = new PropertyGroup(User.PROPS_ID);
@@ -207,18 +188,40 @@
final PropertySubgroup userXmppProps = new PropertySubgroup("user-xmpp");
propSubgroupManager.persist(userXmppProps);
- final Property colorProp = new Property("xmpp_color", "Choose your color", Property.Type.STRING, true, "blue",
- userProps, userXmppProps);
- final ArrayList<String> subValues = new ArrayList<String>();
- subValues.add(SubscriptionMode.autoAcceptAll.toString());
- subValues.add(SubscriptionMode.autoRejectAll.toString());
- subValues.add(SubscriptionMode.manual.toString());
- final Property subProp = new Property("xmpp_subcriptionmode", "New buddies options", Property.Type.ENUM, true,
- SubscriptionMode.manual.toString(), subValues, userProps, userXmppProps);
- final Property unanavProp = new Property("xmpp_unanavailableitemsvisible", "Show unavailable buddies",
- Property.Type.BOOL, true, Boolean.toString(true), userProps, userXmppProps);
- propertyManager.persist(colorProp);
- propertyManager.persist(subProp);
- propertyManager.persist(unanavProp);
+ // final Property colorProp = new Property("xmpp_color",
+ // "Choose your color", Property.Type.STRING, true, "blue",
+ // userProps, userXmppProps);
+ // final ArrayList<String> subValues = new ArrayList<String>();
+ // subValues.add(SubscriptionMode.autoAcceptAll.toString());
+ // subValues.add(SubscriptionMode.autoRejectAll.toString());
+ // subValues.add(SubscriptionMode.manual.toString());
+ // final Property subProp = new Property("xmpp_subcriptionmode",
+ // "New buddies options", Property.Type.ENUM, true,
+ // SubscriptionMode.manual.toString(), subValues, userProps,
+ // userXmppProps);
+ // final Property unanavProp = new
+ // Property("xmpp_unanavailableitemsvisible",
+ // "Show unavailable buddies",
+ // Property.Type.BOOL, true, Boolean.toString(true), userProps,
+ // userXmppProps);
+ // propertyManager.persist(colorProp);
+ // propertyManager.persist(subProp);
+ // propertyManager.persist(unanavProp);
}
+
+ public void initConditional() throws Exception {
+ try {
+ groupManager.getSiteDefaultGroup();
+ } catch (final NoResultException e) {
+ initDatabase();
+ }
+ }
+
+ @Transactional(type = TransactionType.READ_WRITE)
+ public void initDatabase() throws Exception {
+ createOthers();
+ createLicenses();
+ createProperties();
+ createDefUsersGroup();
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -36,7 +36,6 @@
import org.ourproject.kune.workspace.client.sitebar.sitepublic.SitePublicSpaceLink;
import org.ourproject.kune.workspace.client.themes.WsBackManager;
import org.ourproject.kune.workspace.client.upload.FileUploader;
-import org.ourproject.kune.workspace.client.wave.WaveInsert;
import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
@@ -50,20 +49,18 @@
public class WikiClientActions extends AbstractFoldableContentActions {
public WikiClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator,
- final Session session, final StateManager stateManager,
- final SchedulerManager deferredCommandWrapper,
+ final Session session, final StateManager stateManager, final SchedulerManager deferredCommandWrapper,
final Provider<ContentServiceAsync> contentServiceProvider,
final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider,
final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
final Provider<FileDownloadUtils> fileDownloadProvider, final EntityHeader entityLogo,
final Provider<ContentEditor> textEditorProvider, final ErrorHandler errorHandler,
final WikiViewer documentViewer, final Provider<ContextPropEditor> contextProvEditorProvider,
- final SitePublicSpaceLink publicLink, final WsBackManager wsBackManager,
- final Provider<WaveInsert> waveInsert) {
+ final SitePublicSpaceLink publicLink, final WsBackManager wsBackManager) {
super(session, stateManager, i18n, errorHandler, deferredCommandWrapper, groupServiceProvider,
contentServiceProvider, fileUploaderProvider, contextNavigator, contentActionRegistry,
contextActionRegistry, fileDownloadProvider, textEditorProvider, contextProvEditorProvider,
- documentViewer, entityLogo, publicLink, wsBackManager, waveInsert);
+ documentViewer, entityLogo, publicLink, wsBackManager);
}
@Override
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -47,7 +47,6 @@
import org.ourproject.kune.workspace.client.themes.WsThemeManager;
import org.ourproject.kune.workspace.client.tool.ToolSelector;
import org.ourproject.kune.workspace.client.upload.FileUploader;
-import org.ourproject.kune.workspace.client.wave.WaveInsert;
import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
@@ -83,8 +82,7 @@
p(ContentServiceAsync.class), p(GroupServiceAsync.class), p(FileUploader.class),
i(ContentActionRegistry.class), i(ContextActionRegistry.class), p(FileDownloadUtils.class),
i(EntityHeader.class), p(ContentEditor.class), i(ErrorHandler.class), i(WikiViewer.class),
- p(ContextPropEditor.class), i(SitePublicSpaceLink.class), i(WsBackManager.class),
- p(WaveInsert.class));
+ p(ContextPropEditor.class), i(SitePublicSpaceLink.class), i(WsBackManager.class));
}
});
Modified: trunk/src/main/java/org/ourproject/kune/workspace/KuneWorkspace.gwt.xml
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/KuneWorkspace.gwt.xml 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/KuneWorkspace.gwt.xml 2011-01-29 03:38:12 UTC (rev 1227)
@@ -9,7 +9,7 @@
<script src="js/ext/ext-all.js" />
<inherits name="com.gwtext.GwtExt" />
<inherits name="com.calclab.suco.Suco" />
- <inherits name="com.calclab.emiteuimodule.EmiteUIModule" />
+<!-- <inherits name="com.calclab.emiteuimodule.EmiteUIModule" />-->
<inherits name="com.gwtextux.GwtExtUx" />
<inherits name="com.gwtextux.UploadDialog" />
<inherits name="com.gwtextux.ToastWindow" />
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -43,7 +43,6 @@
import org.ourproject.kune.workspace.client.sitebar.sitepublic.SitePublicSpaceLink;
import org.ourproject.kune.workspace.client.themes.WsBackManager;
import org.ourproject.kune.workspace.client.upload.FileUploader;
-import org.ourproject.kune.workspace.client.wave.WaveInsert;
import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
@@ -101,8 +100,6 @@
protected final StateManager stateManager;
protected final Provider<ContentEditor> textEditorProvider;
- private final Provider<WaveInsert> waveInsert;
-
private final WsBackManager wsBackManager;
public AbstractFoldableContentActions(final Session session, final StateManager stateManager,
@@ -113,8 +110,7 @@
final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
final Provider<FileDownloadUtils> fileDownloadProvider, final Provider<ContentEditor> textEditorProvider,
final Provider<ContextPropEditor> contextPropEditorProvider, final FoldableContent foldableContent,
- final EntityHeader entityLogo, final SitePublicSpaceLink publicLink, final WsBackManager wsBackManager,
- final Provider<WaveInsert> waveInsert) {
+ final EntityHeader entityLogo, final SitePublicSpaceLink publicLink, final WsBackManager wsBackManager) {
this.session = session;
this.stateManager = stateManager;
this.i18n = i18n;
@@ -133,7 +129,6 @@
this.entityLogo = entityLogo;
this.publicLink = publicLink;
this.wsBackManager = wsBackManager;
- this.waveInsert = waveInsert;
createActions();
session.onInitDataReceived(new Listener<InitDataDTO>() {
@Override
@@ -621,24 +616,6 @@
return uploadMedia;
}
- protected ActionToolbarMenuAndItemDescriptor<StateToken> createWaveAction(final String waveFileType,
- final String parentMenuTitle, final Position position, final String... registerInTypes) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> addWave = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken parentToken) {
- waveInsert.get().show(parentToken);
- }
- });
- addWave.setTextDescription(i18n.t("Add Wave"));
- addWave.setParentMenuTitle(parentMenuTitle);
- addWave.setMustBeAuthenticated(true);
- addWave.setParentSubMenuTitle(i18n.t("New"));
- // addContent.setIconUrl(iconUrl);
- register(addWave, position, registerInTypes);
- return addWave;
- }
-
protected void downloadContent(final StateToken token) {
fileDownloadProvider.get().downloadFile(token);
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ActionsModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ActionsModule.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ActionsModule.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,10 +1,10 @@
package org.ourproject.kune.workspace.client;
import org.ourproject.kune.platf.client.services.AbstractExtendedModule;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.workspace.client.socialnet.ParticipateAction;
import org.ourproject.kune.workspace.client.socialnet.UnjoinAction;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.client.rpcservices.SocialNetworkServiceAsync;
import cc.kune.core.client.state.AccessRightsClientManager;
import cc.kune.core.client.state.Session;
@@ -22,7 +22,7 @@
public ParticipateAction create() {
return new ParticipateAction(i(Session.class), p(SocialNetworkServiceAsync.class),
i(StateManager.class), i(AccessRightsClientManager.class), i(I18nTranslationService.class),
- i(ImgResources.class));
+ i(IconResources.class));
}
});
@@ -30,7 +30,7 @@
@Override
public UnjoinAction create() {
return new UnjoinAction(i(Session.class), p(SocialNetworkServiceAsync.class), i(StateManager.class),
- i(AccessRightsClientManager.class), i(I18nTranslationService.class), i(ImgResources.class));
+ i(AccessRightsClientManager.class), i(I18nTranslationService.class), i(IconResources.class));
}
});
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -35,7 +35,6 @@
import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.platf.client.shortcuts.GlobalShortcutRegister;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
import org.ourproject.kune.platf.client.ui.palette.ColorWebSafePalette;
import org.ourproject.kune.platf.client.ui.rte.edithtml.EditHtmlDialog;
@@ -222,9 +221,6 @@
import org.ourproject.kune.workspace.client.upload.FileUploader;
import org.ourproject.kune.workspace.client.upload.FileUploaderDialog;
import org.ourproject.kune.workspace.client.upload.FileUploaderPresenter;
-import org.ourproject.kune.workspace.client.wave.WaveInsert;
-import org.ourproject.kune.workspace.client.wave.WaveInsertPanel;
-import org.ourproject.kune.workspace.client.wave.WaveInsertPresenter;
import cc.kune.common.client.noti.NotifyLevelImages;
import cc.kune.common.client.utils.SchedulerManager;
@@ -233,6 +229,7 @@
import cc.kune.core.client.auth.SignIn;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.client.rpcservices.ContentService;
import cc.kune.core.client.rpcservices.ContentServiceAsync;
import cc.kune.core.client.rpcservices.GroupService;
@@ -344,7 +341,7 @@
public SiteUserOptions create() {
final SiteUserOptionsPresenter presenter = new SiteUserOptionsPresenter(i(Session.class),
i(StateManager.class), p(FileDownloadUtils.class), $(I18nTranslationService.class),
- $(ImgResources.class));
+ $(IconResources.class));
final SiteUserOptionsPanel panel = new SiteUserOptionsPanel(presenter, i(WorkspaceSkeleton.class),
$(GuiBindingsRegister.class));
presenter.init(panel);
@@ -379,7 +376,7 @@
@Override
public SiteOptions create() {
final SiteOptionsPresenter presenter = new SiteOptionsPresenter(i(I18nUITranslationService.class),
- i(ImgResources.class));
+ i(IconResources.class));
final SiteOptionsPanel panel = new SiteOptionsPanel(i(WorkspaceSkeleton.class),
i(I18nUITranslationService.class), i(GuiBindingsRegister.class));
presenter.init(panel);
@@ -549,7 +546,7 @@
i(Session.class), p(SocialNetworkServiceAsync.class), p(GroupServiceAsync.class),
p(GroupLiveSearcher.class), p(ChatEngine.class), i(GroupActionRegistry.class),
i(ActionGroupSummaryToolbar.class), p(FileDownloadUtils.class),
- i(AccessRightsClientManager.class), i(ImgResources.class));
+ i(AccessRightsClientManager.class), i(IconResources.class));
final GroupMembersSummaryView view = new GroupMembersSummaryPanel(presenter,
i(I18nUITranslationService.class), i(WorkspaceSkeleton.class), i(
ActionGroupSummaryToolbar.class).getView());
@@ -562,7 +559,7 @@
@Override
public AddAsBuddieHeaderButton create() {
return new AddAsBuddieHeaderButton(p(ChatEngine.class), i(Session.class), i(StateManager.class),
- i(I18nTranslationService.class), i(ImgResources.class), i(EntityHeader.class));
+ i(I18nTranslationService.class), i(IconResources.class), i(EntityHeader.class));
}
});
@@ -573,7 +570,7 @@
i(Session.class), p(UserServiceAsync.class), i(UserActionRegistry.class),
i(I18nTranslationService.class), p(ChatEngine.class), i(ActionBuddiesSummaryToolbar.class),
p(FileDownloadUtils.class), i(ImageUtils.class), p(SocialNetworkServiceAsync.class),
- i(GroupActionRegistry.class), i(AccessRightsClientManager.class), i(ImgResources.class));
+ i(GroupActionRegistry.class), i(AccessRightsClientManager.class), i(IconResources.class));
final BuddiesSummaryPanel panel = new BuddiesSummaryPanel(presenter, i(WorkspaceSkeleton.class),
i(I18nTranslationService.class), i(ActionManager.class),
i(ActionBuddiesSummaryToolbar.class).getView());
@@ -589,7 +586,7 @@
i(I18nUITranslationService.class), i(StateManager.class), i(ImageUtils.class),
i(Session.class), p(SocialNetworkServiceAsync.class), i(GroupActionRegistry.class),
i(ActionParticipationToolbar.class), p(FileDownloadUtils.class),
- i(AccessRightsClientManager.class), i(ImgResources.class));
+ i(AccessRightsClientManager.class), i(IconResources.class));
final ParticipationSummaryView view = new ParticipationSummaryPanel(presenter,
i(I18nUITranslationService.class), i(WorkspaceSkeleton.class), i(
ActionParticipationToolbar.class).getView());
@@ -626,7 +623,7 @@
@Override
public GroupOptions create() {
final GroupOptionsPresenter presenter = new GroupOptionsPresenter(i(StateManager.class),
- i(I18nTranslationService.class), i(ImgResources.class));
+ i(I18nTranslationService.class), i(IconResources.class));
final GroupOptionsPanel panel = new GroupOptionsPanel(presenter, i(EntityHeader.class),
i(I18nTranslationService.class), i(NotifyLevelImages.class), i(GroupOptionsCollection.class));
presenter.init(panel);
@@ -638,7 +635,7 @@
@Override
public UserOptions create() {
final UserOptionsPresenter presenter = new UserOptionsPresenter(i(Session.class),
- i(StateManager.class), i(I18nTranslationService.class), i(ImgResources.class),
+ i(StateManager.class), i(I18nTranslationService.class), i(IconResources.class),
i(SiteUserOptions.class));
final UserOptionsPanel panel = new UserOptionsPanel(presenter, i(EntityHeader.class),
i(I18nTranslationService.class), i(NotifyLevelImages.class), i(UserOptionsCollection.class));
@@ -856,7 +853,7 @@
@Override
public SiteOptionsI18nTranslatorAction create() {
return new SiteOptionsI18nTranslatorAction(i(SiteOptions.class), i(I18nTranslationService.class),
- i(ImgResources.class), p(I18nTranslator.class));
+ i(IconResources.class), p(I18nTranslator.class));
}
});
@@ -1070,7 +1067,7 @@
@Override
public MaxMinWorkspace create() {
final MaxMinWorkspacePresenter presenter = new MaxMinWorkspacePresenter(
- i(GlobalShortcutRegister.class), i(ImgResources.class), i(I18nTranslationService.class),
+ i(GlobalShortcutRegister.class), i(IconResources.class), i(I18nTranslationService.class),
i(SiteOptions.class));
final MaxMinWorkspacePanel panel = new MaxMinWorkspacePanel(i(WorkspaceSkeleton.class));
presenter.init(panel);
@@ -1100,19 +1097,6 @@
return presenter;
}
});
-
- register(Singleton.class, new Factory<WaveInsert>(WaveInsert.class) {
- @Override
- public WaveInsert create() {
- final WaveInsertPresenter presenter = new WaveInsertPresenter(i(Session.class), i(StateManager.class),
- i(I18nTranslationService.class), p(ContentServiceAsync.class));
- final WaveInsertPanel panel = new WaveInsertPanel(presenter, i(I18nTranslationService.class),
- i(ImgResources.class));
- presenter.init(panel);
- return presenter;
- }
- });
-
i(GlobalShortcutRegister.class).enable();
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/maxmin/MaxMinWorkspacePresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/maxmin/MaxMinWorkspacePresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/maxmin/MaxMinWorkspacePresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -8,9 +8,9 @@
import org.ourproject.kune.platf.client.actions.Shortcut;
import org.ourproject.kune.platf.client.actions.ui.MenuItemDescriptor;
import org.ourproject.kune.platf.client.shortcuts.GlobalShortcutRegister;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.workspace.client.sitebar.siteoptions.SiteOptions;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.gwt.resources.client.ImageResource;
@@ -45,7 +45,7 @@
private boolean maximized;
- private final ImgResources images;
+ private final IconResources images;
private final I18nTranslationService i18n;
@@ -56,7 +56,7 @@
private MenuItemDescriptor minimizeButton;
private final SiteOptions siteOptions;
- public MaxMinWorkspacePresenter(final GlobalShortcutRegister shortcutReg, final ImgResources images,
+ public MaxMinWorkspacePresenter(final GlobalShortcutRegister shortcutReg, final IconResources images,
final I18nTranslationService i18n, final SiteOptions siteOptions) {
this.shortcutReg = shortcutReg;
this.images = images;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/hello/HelloWorldModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/hello/HelloWorldModule.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/hello/HelloWorldModule.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -33,13 +33,13 @@
import org.ourproject.kune.platf.client.actions.ui.PushButtonDescriptor;
import org.ourproject.kune.platf.client.services.AbstractExtendedModule;
import org.ourproject.kune.platf.client.shortcuts.GlobalShortcutRegister;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
import org.ourproject.kune.workspace.client.editor.ContentEditor;
import org.ourproject.kune.workspace.client.hello.HelloWorldModule.HelloWorldPanel.HelloWorldPresenter;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
import cc.kune.core.client.i18n.I18nTranslationServiceMocked;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.allen_sauer.gwt.log.client.Log;
@@ -83,7 +83,7 @@
private HelloWorldView view;
public HelloWorldPresenter(final I18nTranslationService i18n,
- final Provider<ContentEditor> contentEditorProv, final ImgResources img) {
+ final Provider<ContentEditor> contentEditorProv, final IconResources img) {
// Or add some actions to the general content editor:
createActions(contentEditorProv, img, i18n);
}
@@ -108,7 +108,7 @@
* @param img
* the img
*/
- private void createActions(final Provider<ContentEditor> contentEditorProv, final ImgResources img,
+ private void createActions(final Provider<ContentEditor> contentEditorProv, final IconResources img,
final I18nTranslationService i18n) {
final HelloWorldAction action = new HelloWorldAction(img);
@@ -207,7 +207,7 @@
}
static class HelloWorldAction extends AbstractAction {
- public HelloWorldAction(final ImgResources img) {
+ public HelloWorldAction(final IconResources img) {
super();
super.putValue(Action.NAME, "helloworld");
super.putValue(Action.SHORT_DESCRIPTION, "helloworld tooltip");
@@ -262,7 +262,7 @@
@Override
public HelloWorld create() {
final HelloWorldPresenter presenter = new HelloWorldPresenter(i(I18nTranslationServiceMocked.class),
- p(ContentEditor.class), i(ImgResources.class));
+ p(ContentEditor.class), i(IconResources.class));
final HelloWorldPanel panel = new HelloWorldPanel(presenter, i(WorkspaceSkeleton.class),
i(I18nTranslationServiceMocked.class));
presenter.init(panel);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/SiteOptionsI18nTranslatorAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/SiteOptionsI18nTranslatorAction.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/SiteOptionsI18nTranslatorAction.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -4,9 +4,9 @@
import org.ourproject.kune.platf.client.actions.Action;
import org.ourproject.kune.platf.client.actions.ActionEvent;
import org.ourproject.kune.platf.client.actions.ui.MenuItemDescriptor;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.workspace.client.sitebar.siteoptions.SiteOptions;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.calclab.suco.client.ioc.Provider;
@@ -15,7 +15,7 @@
private final Provider<I18nTranslator> translator;
public SiteOptionsI18nTranslatorAction(final SiteOptions siteOptions, final I18nTranslationService i18n,
- final ImgResources img, final Provider<I18nTranslator> translator) {
+ final IconResources img, final Provider<I18nTranslator> translator) {
super();
this.translator = translator;
putValue(Action.NAME, i18n.t("Help with the translation"));
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardFirstForm.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardFirstForm.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardFirstForm.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -26,7 +26,6 @@
import cc.kune.common.client.utils.TextUtils;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import com.calclab.suco.client.events.Event0;
import com.calclab.suco.client.events.Listener0;
import com.gwtext.client.widgets.form.Checkbox;
import com.gwtext.client.widgets.form.FieldSet;
@@ -36,22 +35,24 @@
public class LicenseWizardFirstForm extends DefaultForm implements LicenseWizardFirstFormView {
private static final String POINT = "» ";
+ public static final String RADIO_ANOTHER_ID = "k-lwff-another";
public static final String RADIO_COPYLEFT_ID = "k-lwff-copyleft";
- public static final String RADIO_ANOTHER_ID = "k-lwff-another";
private static final String RADIO_FIELD_NAME = "k-lwff-radio";
- private final Event0 onCopyLeftLicenseSelected;
- private final Event0 onAnotherLicenseSelected;
+ private final Radio anotherLicenseRadio;
+ // private final Event0 onCopyLeftLicenseSelected;
+ // private final Event0 onAnotherLicenseSelected;
private final Radio copyleftRadio;
- private final Radio anotherLicenseRadio;
- public LicenseWizardFirstForm(I18nTranslationService i18n) {
- this.onCopyLeftLicenseSelected = new Event0("onCopyLeftLicenseSelected");
- this.onAnotherLicenseSelected = new Event0("onAnotherLicenseSelected");
+ public LicenseWizardFirstForm(final I18nTranslationService i18n) {
+ // this.onCopyLeftLicenseSelected = new
+ // Event0("onCopyLeftLicenseSelected");
+ // this.onAnotherLicenseSelected = new
+ // Event0("onAnotherLicenseSelected");
super.setFrame(true);
super.setPaddings(10);
super.setHeight(LicenseWizardView.HEIGHT);
- Label intro = new Label();
+ final Label intro = new Label();
intro.setHtml(i18n.t("Select a license to share your group contents with other people:")
+ DefaultFormUtils.brbr());
@@ -64,33 +65,34 @@
RADIO_FIELD_NAME, null, RADIO_ANOTHER_ID);
copyleftRadio.addListener(new CheckboxListenerAdapter() {
@Override
- public void onCheck(Checkbox field, boolean checked) {
+ public void onCheck(final Checkbox field, final boolean checked) {
if (checked) {
- onCopyLeftLicenseSelected.fire();
+ // onCopyLeftLicenseSelected.fire();
}
}
});
anotherLicenseRadio.addListener(new CheckboxListenerAdapter() {
@Override
- public void onCheck(Checkbox field, boolean checked) {
+ public void onCheck(final Checkbox field, final boolean checked) {
if (checked) {
- onAnotherLicenseSelected.fire();
+ // onAnotherLicenseSelected.fire();
}
}
});
- FieldSet infoFS = new FieldSet("Info");
+ final FieldSet infoFS = new FieldSet("Info");
infoFS.setFrame(false);
infoFS.setIconCls("k-info-icon");
infoFS.setCollapsible(false);
infoFS.setAutoHeight(true);
- Label recommendCopyleft = new Label();
- Label whyALicense = new Label();
- Label youCanChangeTheLicenseLater = new Label();
+ final Label recommendCopyleft = new Label();
+ final Label whyALicense = new Label();
+ final Label youCanChangeTheLicenseLater = new Label();
recommendCopyleft.setHtml(POINT
- + i18n.t("We recommend [%s] licenses, specially for practical works", TextUtils.generateHtmlLink(
- "http://en.wikipedia.org/wiki/Copyleft", i18n.t("copyleft"))) + DefaultFormUtils.br());
+ + i18n.t("We recommend [%s] licenses, specially for practical works",
+ TextUtils.generateHtmlLink("http://en.wikipedia.org/wiki/Copyleft", i18n.t("copyleft")))
+ + DefaultFormUtils.br());
whyALicense.setHtml(POINT
+ TextUtils.generateHtmlLink("http://mirrors.creativecommons.org/getcreative/",
i18n.t("Why do we need a license?")) + DefaultFormUtils.br());
@@ -106,12 +108,14 @@
add(infoFS);
}
+ @Override
public void onAnotherLicenseSelected(final Listener0 slot) {
- onAnotherLicenseSelected.add(slot);
+ // onAnotherLicenseSelected.add(slot);
}
+ @Override
public void onCopyLeftLicenseSelected(final Listener0 slot) {
- onCopyLeftLicenseSelected.add(slot);
+ // onCopyLeftLicenseSelected.add(slot);
}
@Override
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardFrdForm.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardFrdForm.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardFrdForm.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -30,7 +30,6 @@
import cc.kune.core.shared.dto.LicenseDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import com.calclab.suco.client.events.Event0;
import com.calclab.suco.client.events.Listener0;
import com.gwtext.client.core.Template;
import com.gwtext.client.data.Record;
@@ -45,17 +44,17 @@
public static final String OTHER_LICENSES_ID = "k-lwsf-other";
public static final String RADIO_FIELD_NAME = "k-lwsf-radio";
private final ComboBox cb;
- private final Event0 onChange;
+ // private final Event0 onChange;
private final Session session;
- public LicenseWizardFrdForm(I18nTranslationService i18n, Session session) {
+ public LicenseWizardFrdForm(final I18nTranslationService i18n, final Session session) {
this.session = session;
- this.onChange = new Event0("onChange");
+ // this.onChange = new Event0("onChange");
setFrame(true);
super.setPaddings(10);
super.setHeight(LicenseWizardView.HEIGHT);
- Label intro = new Label();
+ final Label intro = new Label();
intro.setHtml(i18n.t("Select other kind of licenses:") + DefaultFormUtils.brbr());
final Store store = new SimpleStore(new String[] { "shortname", "longname", "url" }, getNonCCLicenses());
@@ -85,20 +84,40 @@
cb.setTitle("Licenses");
cb.addListener(new ComboBoxListenerAdapter() {
@Override
- public void onSelect(ComboBox comboBox, Record record, int index) {
- onChange.fire();
+ public void onSelect(final ComboBox comboBox, final Record record, final int index) {
+ // onChange.fire();
}
});
add(intro);
add(cb);
}
+ private String[][] getNonCCLicenses() {
+ final ArrayList<LicenseDTO> licensesNonCCList = new ArrayList<LicenseDTO>();
+ final List<LicenseDTO> licenses = session.getLicenses();
+ for (final LicenseDTO license : licenses) {
+ if (!license.isCC()) {
+ licensesNonCCList.add(license);
+ }
+ }
+ final String[][] licensesArray = new String[licensesNonCCList.size()][3];
+ for (int i = 0; i < licensesNonCCList.size(); i++) {
+ final LicenseDTO license = licensesNonCCList.get(i);
+ licensesArray[i][0] = license.getShortName();
+ licensesArray[i][1] = license.getLongName();
+ licensesArray[i][2] = license.getImageUrl();
+ }
+ return licensesArray;
+ }
+
+ @Override
public String getSelectedLicense() {
return cb.getValueAsString();
}
+ @Override
public void onChange(final Listener0 slot) {
- onChange.add(slot);
+ // onChange.add(slot);
}
@Override
@@ -106,25 +125,9 @@
super.reset();
}
- public void setFlags(boolean isCopyleft, boolean isAppropiateForCulturalWorks, boolean isNonComercial) {
+ @Override
+ public void setFlags(final boolean isCopyleft, final boolean isAppropiateForCulturalWorks,
+ final boolean isNonComercial) {
// TODO Auto-generated method stub
}
-
- private String[][] getNonCCLicenses() {
- ArrayList<LicenseDTO> licensesNonCCList = new ArrayList<LicenseDTO>();
- List<LicenseDTO> licenses = session.getLicenses();
- for (LicenseDTO license : licenses) {
- if (!license.isCC()) {
- licensesNonCCList.add(license);
- }
- }
- String[][] licensesArray = new String[licensesNonCCList.size()][3];
- for (int i = 0; i < licensesNonCCList.size(); i++) {
- LicenseDTO license = licensesNonCCList.get(i);
- licensesArray[i][0] = license.getShortName();
- licensesArray[i][1] = license.getLongName();
- licensesArray[i][2] = license.getImageUrl();
- }
- return licensesArray;
- }
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardTrdForm.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardTrdForm.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/pages/LicenseWizardTrdForm.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -26,7 +26,6 @@
import cc.kune.core.shared.i18n.I18nTranslationService;
-import com.calclab.suco.client.events.Event0;
import com.calclab.suco.client.events.Listener0;
import com.gwtext.client.widgets.PaddedPanel;
import com.gwtext.client.widgets.form.Checkbox;
@@ -37,35 +36,35 @@
import com.gwtext.client.widgets.form.event.CheckboxListenerAdapter;
public class LicenseWizardTrdForm extends DefaultForm implements LicenseWizardTrdFormView {
+ public static final String RADIO_COMMERCIAL_FIELD_NAME = "k-lwtf-comm-radio";
+ public static final String RADIO_MODIF_FIELD_NAME = "k-lwtf-mod-radio";
+ public static final String RADIO_NOT_COMM_ID = "k-lwtf-not-perm-comm";
+ public static final String RADIO_NOT_PERMIT_MOD_ID = "k-lwtf-not-mod";
public static final String RADIO_PERMIT_COMMERCIAL_ID = "k-lwtf-perm-comm";
- public static final String RADIO_NOT_COMM_ID = "k-lwtf-not-perm-comm";
- public static final String RADIO_COMMERCIAL_FIELD_NAME = "k-lwtf-comm-radio";
public static final String RADIO_PERMIT_MOD_ID = "k-lwtf-mod-perm";
public static final String RADIO_PERMIT_MOD_SA_ID = "k-lwtf-mod-perm-sa";
- public static final String RADIO_NOT_PERMIT_MOD_ID = "k-lwtf-not-mod";
- public static final String RADIO_MODIF_FIELD_NAME = "k-lwtf-mod-radio";
+ private final LicenseWizardFlags info;
+ private Radio notPermitComercialLicenseRadio;
+ // private final Event0 onChange;
+ private Radio notPermitModRadio;
private Radio permitComercialRadio;
private Radio permitModRadio;
private Radio permitModSaRadio;
- private final LicenseWizardFlags info;
- private Radio notPermitModRadio;
- private Radio notPermitComercialLicenseRadio;
- private final Event0 onChange;
- public LicenseWizardTrdForm(Images images, I18nTranslationService i18n) {
+ public LicenseWizardTrdForm(final Images images, final I18nTranslationService i18n) {
super.setFrame(true);
super.setHeight(LicenseWizardView.HEIGHT);
super.setPaddings(10);
- this.onChange = new Event0("onChange");
+ // this.onChange = new Event0("onChange");
- Label intro = new Label();
+ final Label intro = new Label();
intro.setHtml(i18n.t("With a Creative Commons license, you keep your copyright but allow people to copy and distribute your work provided they give you credit — and only on the conditions you specify here. What do you want to do?")
+ DefaultFormUtils.brbr());
- Label commercialQuestion = new Label();
+ final Label commercialQuestion = new Label();
commercialQuestion.setHtml(i18n.t("Allow any uses of your work, including commercial?") + DefaultFormUtils.br());
- Label modificationsQuestion = new Label();
+ final Label modificationsQuestion = new Label();
modificationsQuestion.setHtml(i18n.t("Allow modifications of your work?") + DefaultFormUtils.br());
final FieldSet commercialfieldSet = new FieldSet(i18n.t("Allow any uses of your work, including commercial?"));
@@ -88,52 +87,25 @@
add(new PaddedPanel(info, 0, 0, 0, 0));
}
- public boolean isAllowComercial() {
- return permitComercialRadio.getValue();
- }
-
- public boolean isAllowModif() {
- return permitModRadio.getValue();
- }
-
- public boolean isAllowModifShareAlike() {
- return permitModSaRadio.getValue();
- }
-
- public void onChange(final Listener0 slot) {
- onChange.add(slot);
- }
-
- @Override
- public void reset() {
- super.reset();
- permitComercialRadio.setChecked(true);
- permitModSaRadio.setChecked(true);
- }
-
- public void setFlags(boolean isCopyleft, boolean isAppropiateForCulturalWorks, boolean isNonComercial) {
- info.setVisible(isCopyleft, isAppropiateForCulturalWorks, isNonComercial);
- }
-
private void createRadioListeners() {
- Radio[] radios = { permitModRadio, permitModSaRadio, notPermitModRadio, permitComercialRadio,
+ final Radio[] radios = { permitModRadio, permitModSaRadio, notPermitModRadio, permitComercialRadio,
notPermitComercialLicenseRadio };
- for (Radio radio : radios) {
+ for (final Radio radio : radios) {
radio.addListener(new CheckboxListenerAdapter() {
@Override
- public void onChange(Field field, Object newVal, Object oldVal) {
- onChange.fire();
+ public void onChange(final Field field, final Object newVal, final Object oldVal) {
+ // onChange.fire();
}
@Override
- public void onCheck(Checkbox field, boolean checked) {
- onChange.fire();
+ public void onCheck(final Checkbox field, final boolean checked) {
+ // onChange.fire();
}
});
}
}
- private void createRadios(I18nTranslationService i18n, final FieldSet commercialfieldSet,
+ private void createRadios(final I18nTranslationService i18n, final FieldSet commercialfieldSet,
final FieldSet modificationsfieldSet) {
permitComercialRadio = DefaultFormUtils.createRadio(
commercialfieldSet,
@@ -166,4 +138,37 @@
i18n.t("The licensor permits others to copy, distribute, display and perform only unaltered copies of the work — not derivative works based on it"),
RADIO_NOT_PERMIT_MOD_ID);
}
+
+ @Override
+ public boolean isAllowComercial() {
+ return permitComercialRadio.getValue();
+ }
+
+ @Override
+ public boolean isAllowModif() {
+ return permitModRadio.getValue();
+ }
+
+ @Override
+ public boolean isAllowModifShareAlike() {
+ return permitModSaRadio.getValue();
+ }
+
+ @Override
+ public void onChange(final Listener0 slot) {
+ // onChange.add(slot);
+ }
+
+ @Override
+ public void reset() {
+ super.reset();
+ permitComercialRadio.setChecked(true);
+ permitModSaRadio.setChecked(true);
+ }
+
+ @Override
+ public void setFlags(final boolean isCopyleft, final boolean isAppropiateForCulturalWorks,
+ final boolean isNonComercial) {
+ info.setVisible(isCopyleft, isAppropiateForCulturalWorks, isNonComercial);
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/options/GroupOptionsPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/options/GroupOptionsPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/options/GroupOptionsPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -24,9 +24,9 @@
import org.ourproject.kune.platf.client.actions.ActionEvent;
import org.ourproject.kune.platf.client.actions.ui.ButtonDescriptor;
import org.ourproject.kune.platf.client.ui.dialogs.tabbed.AbstractTabbedDialogPresenter;
-import org.ourproject.kune.platf.client.ui.img.ImgConstants;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
+import cc.kune.core.client.resources.icons.IconConstants;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.dto.StateAbstractDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -37,11 +37,11 @@
public static final String GROUP_OPTIONS_ICON = "k-eop-icon";
private GroupOptionsView view;
private final I18nTranslationService i18n;
- private final ImgResources img;
+ private final IconResources img;
private ButtonDescriptor prefsItem;
public GroupOptionsPresenter(final StateManager stateManager, final I18nTranslationService i18n,
- final ImgResources img) {
+ final IconResources img) {
this.i18n = i18n;
this.img = img;
stateManager.onStateChanged(new Listener<StateAbstractDTO>() {
@@ -69,7 +69,7 @@
}
};
groupPrefsAction.putValue(Action.NAME, i18n.t("Group options"));
- groupPrefsAction.putValue(Action.SMALL_ICON, ImgConstants.toPath(img.prefs()));
+ groupPrefsAction.putValue(Action.SMALL_ICON, IconConstants.toPath(img.prefs()));
prefsItem = new ButtonDescriptor(groupPrefsAction);
prefsItem.setId(GROUP_OPTIONS_ICON);
prefsItem.setVisible(false);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/options/UserOptionsPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/options/UserOptionsPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/options/UserOptionsPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -24,9 +24,9 @@
import org.ourproject.kune.platf.client.actions.ActionEvent;
import org.ourproject.kune.platf.client.actions.ui.MenuItemDescriptor;
import org.ourproject.kune.platf.client.ui.dialogs.tabbed.AbstractTabbedDialogPresenter;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.workspace.client.sitebar.siteusermenu.SiteUserOptions;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -36,14 +36,14 @@
public class UserOptionsPresenter extends AbstractTabbedDialogPresenter implements UserOptions {
private UserOptionsView view;
- private final ImgResources img;
+ private final IconResources img;
private final I18nTranslationService i18n;
private final SiteUserOptions userOptions;
private final Session session;
private final StateManager stateManager;
public UserOptionsPresenter(final Session session, final StateManager stateManager,
- final I18nTranslationService i18n, final ImgResources img, final SiteUserOptions userOptions) {
+ final I18nTranslationService i18n, final IconResources img, final SiteUserOptions userOptions) {
this.session = session;
this.stateManager = stateManager;
this.i18n = i18n;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteoptions/SiteOptionsPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteoptions/SiteOptionsPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteoptions/SiteOptionsPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -29,8 +29,8 @@
import org.ourproject.kune.platf.client.actions.ui.MenuItemDescriptor;
import org.ourproject.kune.platf.client.actions.ui.MenuSeparatorDescriptor;
import org.ourproject.kune.platf.client.ui.KuneWindowUtils;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.shared.i18n.I18nTranslationService;
public class SiteOptionsPresenter extends AbstractActionExtensiblePresenter implements SiteOptions {
@@ -38,9 +38,9 @@
private SiteOptionsView view;
private final MenuDescriptor menuDescriptor;
private final I18nTranslationService i18n;
- private final ImgResources img;
+ private final IconResources img;
- public SiteOptionsPresenter(final I18nTranslationService i18n, final ImgResources img) {
+ public SiteOptionsPresenter(final I18nTranslationService i18n, final IconResources img) {
super();
this.i18n = i18n;
this.img = img;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteusermenu/SiteUserOptionsPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteusermenu/SiteUserOptionsPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteusermenu/SiteUserOptionsPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -31,9 +31,9 @@
import org.ourproject.kune.platf.client.actions.ui.MenuDescriptor;
import org.ourproject.kune.platf.client.actions.ui.MenuItemDescriptor;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import cc.kune.core.client.resources.CoreMessages;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.dto.GroupDTO;
@@ -52,13 +52,13 @@
private final Provider<FileDownloadUtils> downloadProvider;
private MenuDescriptor menuDescriptor;
private final I18nTranslationService i18n;
- private final ImgResources img;
+ private final IconResources img;
private MenuDescriptor partiMenu;;
public SiteUserOptionsPresenter(final Session session, final StateManager stateManager,
final Provider<FileDownloadUtils> downloadProvider, final I18nTranslationService i18n,
- final ImgResources img) {
+ final IconResources img) {
super();
this.session = session;
this.stateManager = stateManager;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -31,10 +31,10 @@
import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbar;
import org.ourproject.kune.platf.client.services.ImageUtils;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
import org.ourproject.kune.workspace.client.socialnet.toolbar.ActionBuddiesSummaryToolbar;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.SocialNetworkServiceAsync;
import cc.kune.core.client.rpcservices.UserServiceAsync;
@@ -73,7 +73,7 @@
final ActionBuddiesSummaryToolbar toolbar, final Provider<FileDownloadUtils> fileDownUtilsProvider,
final ImageUtils imageUtils, final Provider<SocialNetworkServiceAsync> snServiceAsync,
final GroupActionRegistry groupActionRegistry, final AccessRightsClientManager accessRightManager,
- final ImgResources img) {
+ final IconResources img) {
super(i18n, stateManager, accessRightManager, session, snServiceAsync, groupActionRegistry,
fileDownUtilsProvider, img);
this.stateManager = stateManager;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -33,7 +33,6 @@
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.GroupDTO;
-import com.calclab.emiteuimodule.client.users.UserGridPanel;
import com.calclab.suco.client.events.Listener;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
@@ -47,9 +46,9 @@
// private static final int MAX_HEIGHT = 110;
private final GridMenuPanel<GroupDTO> gridMenuPanel;
private final I18nUITranslationService i18n;
+ private final Label noMembersPublic;
private final GroupMembersSummaryPresenter presenter;
private final AbstractToolbar toolbar;
- private final Label noMembersPublic;
public GroupMembersSummaryPanel(final GroupMembersSummaryPresenter presenter, final I18nUITranslationService i18n,
final WorkspaceSkeleton ws, final ActionToolbarView<StateToken> actionToolbarView) {
@@ -57,12 +56,13 @@
this.presenter = presenter;
this.i18n = i18n;
- final GridDragConfiguration dragConf = new GridDragConfiguration(UserGridPanel.USER_GROUP_DD,
+ final GridDragConfiguration dragConf = new GridDragConfiguration("kk",
i18n.t("Drop into the chat area to start a chat.") + "<br/>"
+ i18n.t("Drop into a room to invite the user to join the chat room"));
gridMenuPanel = new GridMenuPanel<GroupDTO>(i18n.t("This is an orphaned project, if you are interested "
+ "please request to join to work on it"), dragConf, true, true, false, true, false);
final Listener<String> go = new Listener<String>() {
+ @Override
public void onEvent(final String groupShortName) {
presenter.onDoubleClick(groupShortName);
}
@@ -91,6 +91,7 @@
});
}
+ @Override
public void addItem(final GridItem<GroupDTO> gridItem) {
gridMenuPanel.setVisible(true);
gridMenuPanel.addItem(gridItem);
@@ -105,13 +106,16 @@
doLayoutIfNeeded();
}
+ @Override
public void confirmAddCollab(final String groupShortName, final String groupLongName) {
final String groupName = groupLongName + " (" + groupShortName + ")";
MessageBox.confirm(i18n.t("Confirm member joining"), i18n.t("Add [%s] as a member?", groupName),
new MessageBox.ConfirmCallback() {
+ @Override
public void execute(final String btnID) {
if (btnID.equals("yes")) {
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
+ @Override
public void execute() {
presenter.addCollab(groupShortName);
}
@@ -126,6 +130,7 @@
// gridMenuPanel.setDraggable(draggable);
}
+ @Override
public void showMembersNotVisible() {
noMembersPublic.setVisible(true);
gridMenuPanel.setVisible(false);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -31,12 +31,12 @@
import org.ourproject.kune.platf.client.ui.MenuItem;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.gridmenu.GridGroup;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
import org.ourproject.kune.workspace.client.search.GroupLiveSearcher;
import org.ourproject.kune.workspace.client.socialnet.toolbar.ActionGroupSummaryToolbar;
import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
import cc.kune.core.client.rpcservices.SocialNetworkServiceAsync;
@@ -84,7 +84,7 @@
final Provider<GroupLiveSearcher> liveSearcherProvider, final Provider<ChatEngine> chatEngineProvider,
final GroupActionRegistry groupActionRegistry, final ActionGroupSummaryToolbar toolbar,
final Provider<FileDownloadUtils> downloadProvider, final AccessRightsClientManager accessRightsManager,
- final ImgResources img) {
+ final IconResources img) {
super(i18n, stateManager, accessRightsManager, session, snServiceProvider, groupActionRegistry,
downloadProvider, img);
this.i18n = i18n;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipateAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipateAction.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipateAction.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,9 +1,9 @@
package org.ourproject.kune.workspace.client.socialnet;
import org.ourproject.kune.platf.client.actions.ActionEvent;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.SocialNetworkServiceAsync;
import cc.kune.core.client.state.AccessRightsClientManager;
@@ -20,7 +20,7 @@
public ParticipateAction(final Session session, final Provider<SocialNetworkServiceAsync> snServiceProvider,
final StateManager stateManager, final AccessRightsClientManager rightsManager,
- final I18nTranslationService i18n, final ImgResources imgResources) {
+ final I18nTranslationService i18n, final IconResources imgResources) {
super(session, stateManager, rightsManager, i18n, AccessRolDTO.Viewer, i18n.t("Participate"),
i18n.t("Request to participate in this group"), imgResources.addGreen());
this.snServiceProvider = snServiceProvider;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -24,10 +24,10 @@
import org.ourproject.kune.platf.client.services.ImageUtils;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.gridmenu.GridGroup;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.workspace.client.socialnet.toolbar.ActionParticipationToolbar;
import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.client.rpcservices.SocialNetworkServiceAsync;
import cc.kune.core.client.state.AccessRightsClientManager;
import cc.kune.core.client.state.Session;
@@ -52,7 +52,7 @@
final Provider<SocialNetworkServiceAsync> snServiceProvider, final GroupActionRegistry groupActionRegistry,
final ActionParticipationToolbar actionParticipationToolbar,
final Provider<FileDownloadUtils> downloadProvider, final AccessRightsClientManager accessRightsManager,
- final ImgResources img) {
+ final IconResources img) {
super(i18n, stateManager, accessRightsManager, session, snServiceProvider, groupActionRegistry,
downloadProvider, img);
adminCategory = new GridGroup("admin in:", " ", i18n.tWithNT("Administrate these groups",
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -32,9 +32,9 @@
import org.ourproject.kune.platf.client.ui.gridmenu.CustomMenu;
import org.ourproject.kune.platf.client.ui.gridmenu.GridGroup;
import org.ourproject.kune.platf.client.ui.gridmenu.GridItem;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.SocialNetworkServiceAsync;
import cc.kune.core.client.state.AccessRightsClientManager;
@@ -75,14 +75,14 @@
protected ActionToolbarButtonDescriptor<StateToken> participate;
private final Provider<FileDownloadUtils> downloadProvider;
private final AccessRightsClientManager rightsManager;
- private final ImgResources imgResources;
+ private final IconResources imgResources;
private MenuDescriptor menuOptions;
public SocialNetworkPresenter(final I18nTranslationService i18n, final StateManager stateManager,
final AccessRightsClientManager rightsManager, final Session session,
final Provider<SocialNetworkServiceAsync> snServiceProvider, final GroupActionRegistry groupActionRegistry,
- final Provider<FileDownloadUtils> downloadProvider, final ImgResources imgResources) {
+ final Provider<FileDownloadUtils> downloadProvider, final IconResources imgResources) {
this.i18n = i18n;
this.stateManager = stateManager;
this.rightsManager = rightsManager;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/UnjoinAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/UnjoinAction.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/UnjoinAction.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -1,9 +1,9 @@
package org.ourproject.kune.workspace.client.socialnet;
import org.ourproject.kune.platf.client.actions.ActionEvent;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.SocialNetworkServiceAsync;
import cc.kune.core.client.state.AccessRightsClientManager;
@@ -23,7 +23,7 @@
public UnjoinAction(final Session session, final Provider<SocialNetworkServiceAsync> snServiceProvider,
final StateManager stateManager, final AccessRightsClientManager rightsManager,
- final I18nTranslationService i18n, final ImgResources imgResources) {
+ final I18nTranslationService i18n, final IconResources imgResources) {
super(session, stateManager, rightsManager, i18n, AccessRolDTO.Editor, i18n.t("Leave this group"),
i18n.t("Do not participate anymore in this group"), imgResources.delGreen());
this.snServiceProvider = snServiceProvider;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/other/AddAsBuddieHeaderButton.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/other/AddAsBuddieHeaderButton.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/other/AddAsBuddieHeaderButton.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -8,11 +8,11 @@
import org.ourproject.kune.platf.client.actions.PropertyChangeEvent;
import org.ourproject.kune.platf.client.actions.PropertyChangeListener;
import org.ourproject.kune.platf.client.actions.ui.ButtonDescriptor;
-import org.ourproject.kune.platf.client.ui.img.ImgConstants;
-import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
import org.ourproject.kune.workspace.client.entityheader.EntityHeader;
+import cc.kune.core.client.resources.icons.IconConstants;
+import cc.kune.core.client.resources.icons.IconResources;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.dto.StateAbstractDTO;
@@ -29,7 +29,7 @@
private final Session session;
public AddAsBuddieAction(final Provider<ChatEngine> chatEngine, final Session session,
- final StateManager stateManager, final I18nTranslationService i18n, final ImgResources img) {
+ final StateManager stateManager, final I18nTranslationService i18n, final IconResources img) {
super();
this.chatEngine = chatEngine;
this.session = session;
@@ -44,7 +44,7 @@
}
});
putValue(Action.NAME, i18n.t("Add as a buddie"));
- putValue(Action.SMALL_ICON, ImgConstants.toPath(img.addGreen()));
+ putValue(Action.SMALL_ICON, IconConstants.toPath(img.addGreen()));
}
public void actionPerformed(final ActionEvent event) {
@@ -67,7 +67,7 @@
}
public AddAsBuddieHeaderButton(final Provider<ChatEngine> chatEngine, final Session session,
- final StateManager stateManager, final I18nTranslationService i18n, final ImgResources img,
+ final StateManager stateManager, final I18nTranslationService i18n, final IconResources img,
final EntityHeader entityHeader) {
final AddAsBuddieAction buddieAction = new AddAsBuddieAction(chatEngine, session, stateManager, i18n, img);
final ButtonDescriptor button = new ButtonDescriptor(buddieAction);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsBackManagerImpl.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsBackManagerImpl.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsBackManagerImpl.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -5,8 +5,6 @@
import cc.kune.core.shared.domain.utils.StateToken;
-import com.calclab.suco.client.events.Event;
-import com.calclab.suco.client.events.Event0;
import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
import com.google.gwt.user.client.DOM;
@@ -17,34 +15,39 @@
private static final StateToken NO_TOKEN = new StateToken("none.none.0.0");
private final FileDownloadUtils downloadUtils;
private StateToken lastToken;
- private final Event0 onBackClear;
- private final Event<StateToken> onSetBackImage;
+ // private final Event0 onBackClear;
+ // private final Event<StateToken> onSetBackImage;
+
public WsBackManagerImpl(final FileDownloadUtils downloadUtils) {
this.downloadUtils = downloadUtils;
lastToken = NO_TOKEN;
- this.onBackClear = new Event0("onBackClear");
- this.onSetBackImage = new Event<StateToken>("onSetBackImage");
+ // this.onBackClear = new Event0("onBackClear");
+ // this.onSetBackImage = new Event<StateToken>("onSetBackImage");
}
+ @Override
public void addBackClear(final Listener0 listener) {
- onBackClear.add(listener);
+ // onBackClear.add(listener);
}
+ @Override
public void addSetBackImage(final Listener<StateToken> listener) {
- onSetBackImage.add(listener);
+ // onSetBackImage.add(listener);
}
+ @Override
public void clearBackImage() {
- onBackClear.fire();
+ // onBackClear.fire();
if (!lastToken.equals(NO_TOKEN)) {
DOM.setStyleAttribute(RootPanel.getBodyElement(), CSS.A.BACKGROUND, "transparent");
lastToken = NO_TOKEN;
}
}
+ @Override
public void setBackImage(final StateToken token) {
- onSetBackImage.fire(token);
+ // onSetBackImage.fire(token);
if (!token.equals(lastToken)) {
final String bodyProp = "#FFFFFF url('" + downloadUtils.getImageUrl(token) + "') fixed no-repeat top left";
DOM.setStyleAttribute(RootPanel.getBodyElement(), CSS.A.BACKGROUND, bodyProp);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsThemeManager.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsThemeManager.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsThemeManager.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -30,18 +30,16 @@
import cc.kune.core.shared.dto.InitDataDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
-import com.calclab.suco.client.events.Event2;
-import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener2;
import com.calclab.suco.client.ioc.Provider;
public class WsThemeManager {
+ private WsTheme defTheme;
+ // private final Event2<WsTheme, WsTheme> onThemeChanged;
+ private final Provider<GroupServiceAsync> groupServiceProvider;
private WsTheme previousTheme;
- private final Event2<WsTheme, WsTheme> onThemeChanged;
- private final Provider<GroupServiceAsync> groupServiceProvider;
private final Session session;
- private WsTheme defTheme;
private final WsBackManager wsBackManager;
public WsThemeManager(final Session session, final Provider<GroupServiceAsync> groupServiceProvider,
@@ -49,28 +47,29 @@
this.session = session;
this.groupServiceProvider = groupServiceProvider;
this.wsBackManager = wsBackManager;
- this.onThemeChanged = new Event2<WsTheme, WsTheme>("onThemeChanged");
- session.onInitDataReceived(new Listener<InitDataDTO>() {
- public void onEvent(final InitDataDTO initData) {
- setDefTheme(initData);
- setTheme(defTheme);
- }
- });
- stateManager.onStateChanged(new Listener<StateAbstractDTO>() {
- public void onEvent(final StateAbstractDTO state) {
- setState(state);
- }
- });
+ // this.onThemeChanged = new Event2<WsTheme, WsTheme>("onThemeChanged");
+ // session.onInitDataReceived(new Listener<InitDataDTO>() {
+ // public void onEvent(final InitDataDTO initData) {
+ // setDefTheme(initData);
+ // setTheme(defTheme);
+ // }
+ // });
+ // stateManager.onStateChanged(new Listener<StateAbstractDTO>() {
+ // public void onEvent(final StateAbstractDTO state) {
+ // setState(state);
+ // }
+ // });
}
public void addOnThemeChanged(final Listener2<WsTheme, WsTheme> listener) {
- onThemeChanged.add(listener);
+ // onThemeChanged.add(listener);
}
public void changeTheme(final StateToken token, final WsTheme newTheme) {
NotifyUser.showProgressProcessing();
groupServiceProvider.get().changeGroupWsTheme(session.getUserHash(), token, newTheme.getName(),
new AsyncCallbackSimple<Void>() {
+ @Override
public void onSuccess(final Void result) {
if (session.getCurrentState().getStateToken().getGroup().equals(token.getGroup())) {
setTheme(newTheme);
@@ -84,6 +83,7 @@
NotifyUser.showProgressProcessing();
groupServiceProvider.get().changeGroupWsTheme(session.getUserHash(), session.getCurrentState().getStateToken(),
newTheme.getName(), new AsyncCallbackSimple<Void>() {
+ @Override
public void onSuccess(final Void result) {
setTheme(newTheme);
NotifyUser.hideProgress();
@@ -107,7 +107,7 @@
private void setTheme(final WsTheme newTheme) {
if (previousTheme == null || !previousTheme.equals(newTheme)) {
- onThemeChanged.fire(previousTheme, newTheme);
+ // onThemeChanged.fire(previousTheme, newTheme);
}
previousTheme = newTheme;
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsThemeSelectorPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsThemeSelectorPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsThemeSelectorPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -13,7 +13,6 @@
import cc.kune.core.shared.dto.InitDataDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import com.calclab.suco.client.events.Event;
import com.calclab.suco.client.events.Listener;
public class WsThemeSelectorPresenter implements WsThemeSelector {
@@ -29,48 +28,38 @@
putValue(SMALL_ICON, CssStyleDescriptor.create("k-wstheme-icon-" + theme));
}
+ @Override
public void actionPerformed(final ActionEvent event) {
- themeSelected.fire(new WsTheme(theme));
+ // themeSelected.fire(new WsTheme(theme));
menu.setText(i18n.t(theme));
}
}
- private final Event<WsTheme> themeSelected;
- private final Event<String> selectItemInUI;
+ // private final Event<WsTheme> themeSelected;
+ // private final Event<String> selectItemInUI;
private final I18nTranslationService i18n;
private MenuDescriptor menu;
+ private final Session session;
private ActionExtensibleView view;
- private final Session session;
public WsThemeSelectorPresenter(final Session session, final I18nTranslationService i18n) {
this.session = session;
this.i18n = i18n;
- this.themeSelected = new Event<WsTheme>("themeSelected");
- this.selectItemInUI = new Event<String>("selectItemInUI");
+ // this.themeSelected = new Event<WsTheme>("themeSelected");
+ // this.selectItemInUI = new Event<String>("selectItemInUI");
}
+ @Override
public void addThemeSelected(final Listener<WsTheme> listener) {
- themeSelected.add(listener);
+ // themeSelected.add(listener);
}
- public View getView() {
- return view;
- }
-
- public void init(final ActionExtensibleView view) {
- this.view = view;
- createActions();
- }
-
- public void select(final String theme) {
- selectItemInUI.fire(theme);
- }
-
private void createActions() {
createMenu();
final InitDataDTO initData = session.getInitData();
if (initData == null) {
session.onInitDataReceived(new Listener<InitDataDTO>() {
+ @Override
public void onEvent(final InitDataDTO initData) {
setThemes(initData);
}
@@ -88,17 +77,32 @@
private void createTheme(final String theme) {
final ThemeAction action = new ThemeAction(theme);
final MenuItemDescriptor themeItem = new MenuItemDescriptor(menu, action);
- selectItemInUI.add(new Listener<String>() {
- public void onEvent(final String themeToSelect) {
- if (theme.equals(themeToSelect)) {
- menu.setText(i18n.t(theme));
- // themeItem.setChecked(true);
- }
- }
- });
+ // selectItemInUI.add(new Listener<String>() {
+ // public void onEvent(final String themeToSelect) {
+ // if (theme.equals(themeToSelect)) {
+ // menu.setText(i18n.t(theme));
+ // // themeItem.setChecked(true);
+ // }
+ // }
+ // });
view.addAction(themeItem);
}
+ @Override
+ public View getView() {
+ return view;
+ }
+
+ public void init(final ActionExtensibleView view) {
+ this.view = view;
+ createActions();
+ }
+
+ @Override
+ public void select(final String theme) {
+ // selectItemInUI.fire(theme);
+ }
+
private void setThemes(final InitDataDTO initData) {
view.addAction(menu);
for (final String theme : initData.getWsThemes()) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/title/RenameAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/title/RenameAction.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/title/RenameAction.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -29,39 +29,40 @@
import cc.kune.core.shared.dto.StateAbstractDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import com.calclab.suco.client.events.Event2;
import com.calclab.suco.client.events.Listener2;
import com.calclab.suco.client.ioc.Provider;
import com.google.gwt.user.client.rpc.AsyncCallback;
public class RenameAction {
+ private final Provider<ContentServiceAsync> contentService;
private final I18nTranslationService i18n;
- private final Provider<ContentServiceAsync> contentService;
private final Session session;
- private final Event2<StateToken, String> onSuccess;
- private final Event2<StateToken, String> onFail;
+ // private final Event2<StateToken, String> onSuccess;
+ // private final Event2<StateToken, String> onFail;
+
public RenameAction(final I18nTranslationService i18n, final Session session,
final Provider<ContentServiceAsync> contentService) {
this.i18n = i18n;
this.session = session;
this.contentService = contentService;
- this.onSuccess = new Event2<StateToken, String>("onRenameSuccess");
- this.onFail = new Event2<StateToken, String>("onRenamaFail");
+ // this.onSuccess = new Event2<StateToken, String>("onRenameSuccess");
+ // this.onFail = new Event2<StateToken, String>("onRenamaFail");
}
public void onFail(final Listener2<StateToken, String> slot) {
- onFail.add(slot);
+ // onFail.add(slot);
}
public void onSuccess(final Listener2<StateToken, String> slot) {
- onSuccess.add(slot);
+ // onSuccess.add(slot);
}
public void rename(final StateToken token, final String oldName, final String newName) {
if (!newName.equals(oldName)) {
NotifyUser.showProgress(i18n.t("Renaming"));
final AsyncCallback<StateAbstractDTO> asyncCallback = new AsyncCallback<StateAbstractDTO>() {
+ @Override
public void onFailure(final Throwable caught) {
NotifyUser.hideProgress();
if (caught instanceof NameInUseException) {
@@ -73,13 +74,14 @@
} else {
NotifyUser.error(i18n.t("Error renaming"));
}
- onFail.fire(token, oldName);
+ // onFail.fire(token, oldName);
}
+ @Override
public void onSuccess(final StateAbstractDTO state) {
NotifyUser.hideProgress();
session.setCurrentState(state);
- onSuccess.fire(token, state.getTitle());
+ // onSuccess.fire(token, state.getTitle());
}
};
if (token.isComplete()) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/upload/FileUploaderPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/upload/FileUploaderPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/upload/FileUploaderPresenter.java 2011-01-29 03:38:12 UTC (rev 1227)
@@ -24,24 +24,24 @@
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.domain.utils.StateToken;
-import com.calclab.suco.client.events.Event;
import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
public class FileUploaderPresenter implements FileUploader {
+ private StateToken currentUploadStateToken;
+ // private final Event<StateToken> onUploadComplete;
+ private final Session session;
private FileUploaderView view;
- private final Session session;
- private StateToken currentUploadStateToken;
- private final Event<StateToken> onUploadComplete;
public FileUploaderPresenter(final Session session) {
this.session = session;
- this.onUploadComplete = new Event<StateToken>("onUploadComplete");
+ // this.onUploadComplete = new Event<StateToken>("onUploadComplete");
}
+ @Override
public void addOnUploadCompleteListener(final Listener<StateToken> slot) {
- onUploadComplete.add(slot);
+ // onUploadComplete.add(slot);
}
public boolean checkFolderChange() {
@@ -61,10 +61,12 @@
}
}
+ @Override
public boolean hasUploadingFiles() {
return view.hasUploadingFiles();
}
+ @Override
public void hide() {
view.hide();
}
@@ -72,6 +74,7 @@
public void init(final FileUploaderView view) {
this.view = view;
session.onUserSignOut(new Listener0() {
+ @Override
public void onEvent() {
view.destroy();
}
@@ -79,24 +82,27 @@
}
public void onUploadComplete() {
- onUploadComplete.fire(currentUploadStateToken);
+ // onUploadComplete.fire(currentUploadStateToken);
}
+ @Override
public void resetPermittedExtensions() {
view.resetPermittedExtensions();
}
+ private boolean sameContainer() {
+ final StateToken currentStateToken = session.getCurrentStateToken();
+ currentUploadStateToken = currentUploadStateToken == null ? currentStateToken : currentUploadStateToken;
+ return currentUploadStateToken.equals(currentStateToken);
+ }
+
+ @Override
public void setPermittedExtensions(final String extensions) {
view.setPermittedExtensions(extensions);
}
+ @Override
public void show() {
view.show();
}
-
- private boolean sameContainer() {
- final StateToken currentStateToken = session.getCurrentStateToken();
- currentUploadStateToken = currentUploadStateToken == null ? currentStateToken : currentUploadStateToken;
- return currentUploadStateToken.equals(currentStateToken);
- }
}
Modified: trunk/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/src/main/webapp/WEB-INF/web.xml 2011-01-28 01:41:24 UTC (rev 1226)
+++ trunk/src/main/webapp/WEB-INF/web.xml 2011-01-29 03:38:12 UTC (rev 1227)
@@ -15,43 +15,43 @@
<welcome-file>ws.html</welcome-file>
</welcome-file-list>
<!-- Note: this gives problems depending on the version of jetty or tomcat -->
-<!-- <context-param>-->
-<!-- <param-name>jruby.standalone</param-name>-->
-<!-- <param-value>true</param-value>-->
-<!-- </context-param>-->
-<!-- <context-param>-->
-<!-- <param-name>rails.root</param-name>-->
-<!-- <param-value>/WEB-INF/publicspace/-->
-<!-- </param-value>-->
-<!-- </context-param>-->
-<!-- <context-param>-->
-<!-- <param-name>files.prefix</param-name>-->
-<!-- <param-value>/WEB-INF/publicspace/public-->
-<!-- </param-value>-->
-<!-- </context-param>-->
-<!-- <context-param>-->
-<!-- <param-name>rails.env</param-name>-->
-<!-- <param-value>production</param-value>-->
-<!-- </context-param>-->
-<!-- <context-param>-->
-<!-- <param-name>jruby.max.runtimes</param-name>-->
-<!-- <param-value>1</param-value>-->
-<!-- </context-param>-->
-<!-- <context-param>-->
-<!-- <param-name>public.root</param-name>-->
-<!-- <param-value>/public/</param-value>-->
-<!-- </context-param>-->
-<!-- <filter>-->
-<!-- <filter-name>RackFilter</filter-name>-->
-<!-- <filter-class>org.jruby.rack.RackFilter</filter-class>-->
-<!-- </filter>-->
-<!-- <filter-mapping>-->
-<!-- <filter-name>RackFilter</filter-name>-->
-<!-- <url-pattern>/public/*</url-pattern>-->
-<!-- </filter-mapping>-->
-<!-- <listener>-->
-<!-- <listener-class>org.jruby.rack.rails.RailsServletContextListener</listener-class>-->
-<!-- </listener>-->
+ <!-- <context-param> -->
+ <!-- <param-name>jruby.standalone</param-name> -->
+ <!-- <param-value>true</param-value> -->
+ <!-- </context-param> -->
+ <!-- <context-param> -->
+ <!-- <param-name>rails.root</param-name> -->
+ <!-- <param-value>/WEB-INF/publicspace/ -->
+ <!-- </param-value> -->
+ <!-- </context-param> -->
+ <!-- <context-param> -->
+ <!-- <param-name>files.prefix</param-name> -->
+ <!-- <param-value>/WEB-INF/publicspace/public -->
+ <!-- </param-value> -->
+ <!-- </context-param> -->
+ <!-- <context-param> -->
+ <!-- <param-name>rails.env</param-name> -->
+ <!-- <param-value>production</param-value> -->
+ <!-- </context-param> -->
+ <!-- <context-param> -->
+ <!-- <param-name>jruby.max.runtimes</param-name> -->
+ <!-- <param-value>1</param-value> -->
+ <!-- </context-param> -->
+ <!-- <context-param> -->
+ <!-- <param-name>public.root</param-name> -->
+ <!-- <param-value>/public/</param-value> -->
+ <!-- </context-param> -->
+ <!-- <filter> -->
+ <!-- <filter-name>RackFilter</filter-name> -->
+ <!-- <filter-class>org.jruby.rack.RackFilter</filter-class> -->
+ <!-- </filter> -->
+ <!-- <filter-mapping> -->
+ <!-- <filter-name>RackFilter</filter-name> -->
+ <!-- <url-pattern>/public/*</url-pattern> -->
+ <!-- </filter-mapping> -->
+ <!-- <listener> -->
+ <!-- <listener-class>org.jruby.rack.rails.RailsServletContextListener</listener-class> -->
+ <!-- </listener> -->
<filter>
<filter-name>rack</filter-name>
<filter-class>org.ourproject.kune.rack.RackServletFilter</filter-class>
@@ -66,25 +66,41 @@
<filter-name>rack</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
+ <!-- <servlet> -->
+ <!-- <servlet-name>Proxy</servlet-name> -->
+ <!-- <servlet-class>de.spieleck.servlets.ProxyServlet</servlet-class> -->
+ <!-- <init-param> -->
+ <!-- <param-name>remotePath</param-name> -->
+ <!-- <param-value>/http-bind/</param-value> -->
+ <!-- </init-param> -->
+ <!-- <init-param> -->
+ <!-- <param-name>remoteServer</param-name> -->
+ <!-- <param-value>localhost</param-value> -->
+ <!-- </init-param> -->
+ <!-- <init-param> -->
+ <!-- <param-name>remotePort</param-name> -->
+ <!-- <param-value>5280</param-value> -->
+ <!-- </init-param> -->
+ <!-- </servlet> -->
+ <!-- <servlet-mapping> -->
+ <!-- <servlet-name>Proxy</servlet-name> -->
+ <!-- <url-pattern>/http-bind/</url-pattern> -->
+ <!-- </servlet-mapping> -->
<servlet>
- <servlet-name>Proxy</servlet-name>
- <servlet-class>de.spieleck.servlets.ProxyServlet</servlet-class>
+ <servlet-name>HttpBind</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
<init-param>
- <param-name>remotePath</param-name>
- <param-value>/http-bind/</param-value>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://localhost:5280/http-bind/</param-value>
</init-param>
<init-param>
- <param-name>remoteServer</param-name>
- <param-value>localhost</param-value>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
</init-param>
- <init-param>
- <param-name>remotePort</param-name>
- <param-value>5280</param-value>
- </init-param>
</servlet>
<servlet-mapping>
- <servlet-name>Proxy</servlet-name>
- <url-pattern>/http-bind/</url-pattern>
+ <servlet-name>HttpBind</servlet-name>
+ <url-pattern>/http-bind</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>WiabSocketIO</servlet-name>
1
0
Author: vjrj_
Date: 2011-01-28 02:41:24 +0100 (Fri, 28 Jan 2011)
New Revision: 1226
Added:
trunk/src/main/java/cc/kune/common/client/utils/Convert.java
trunk/src/main/java/cc/kune/common/client/utils/SchedulerManager.java
trunk/src/main/java/cc/kune/common/client/utils/TimerWrapper.java
trunk/src/main/java/cc/kune/common/client/utils/Url.java
trunk/src/main/java/cc/kune/common/client/utils/UrlParam.java
trunk/src/main/java/cc/kune/core/client/ui/KuneUiUtils.java
Removed:
trunk/src/main/java/org/ourproject/kune/platf/client/utils/Convert.java
trunk/src/main/java/org/ourproject/kune/platf/client/utils/DeferredCommandWrapper.java
trunk/src/main/java/org/ourproject/kune/platf/client/utils/TimerWrapper.java
trunk/src/main/java/org/ourproject/kune/platf/client/utils/Url.java
trunk/src/main/java/org/ourproject/kune/platf/client/utils/UrlParam.java
Modified:
trunk/src/main/java/cc/kune/common/client/ui/PopupPanelTopCentered.java
trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java
trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java
trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPanel.java
trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java
trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java
trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java
trunk/src/main/java/cc/kune/core/client/ui/dialogs/MessageToolbar.java
trunk/src/main/java/cc/kune/core/public/ws.css
trunk/src/main/java/org/ourproject/kune/app/public/css/kune.css
trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java
trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java
trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java
trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/KuneUiUtils.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileDownloadUtils.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenter.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenter.java
trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java
trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java
trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java
trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorPresenter.java
trunk/src/test/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenterTest.java
trunk/src/test/java/org/ourproject/kune/platf/client/utils/UrlTest.java
Log:
NEW - # 14: Site bar update
http://kune.ourproject.org/issues/ticket/14
Modified: trunk/src/main/java/cc/kune/common/client/ui/PopupPanelTopCentered.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/PopupPanelTopCentered.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/cc/kune/common/client/ui/PopupPanelTopCentered.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -18,6 +18,9 @@
public PopupPanelTopCentered(final boolean autohide, final boolean modal) {
super(autohide, modal);
+ if (modal) {
+ super.setGlassEnabled(true);
+ }
init();
}
Copied: trunk/src/main/java/cc/kune/common/client/utils/Convert.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/utils/Convert.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/Convert.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/utils/Convert.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -0,0 +1,29 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.common.client.utils;
+
+public final class Convert {
+ public static int toInt(final String value) {
+ return Integer.valueOf(value);
+ }
+
+ private Convert() {
+ };
+}
Copied: trunk/src/main/java/cc/kune/common/client/utils/SchedulerManager.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/utils/DeferredCommandWrapper.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/SchedulerManager.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/utils/SchedulerManager.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -0,0 +1,39 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.common.client.utils;
+
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+
+/**
+ * The Class {@link #SchedulerManager} is a wrapper of the GWT
+ * {@link #Scheduler} (used for testing classes without GWT dependencies).
+ */
+public class SchedulerManager {
+ /**
+ * Adds the command.
+ *
+ * @param command
+ * the listener
+ */
+ public void addCommand(final ScheduledCommand command) {
+ Scheduler.get().scheduleDeferred(command);
+ }
+}
Copied: trunk/src/main/java/cc/kune/common/client/utils/TimerWrapper.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/utils/TimerWrapper.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/TimerWrapper.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/utils/TimerWrapper.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -0,0 +1,42 @@
+package cc.kune.common.client.utils;
+
+import com.google.gwt.user.client.Timer;
+
+public class TimerWrapper {
+ public interface Executer {
+ /**
+ * Invokes the execute.
+ */
+ void execute();
+ }
+
+ private Timer timer;
+
+ public TimerWrapper() {
+ }
+
+ public void cancel() {
+ timer.cancel();
+ }
+
+ public void configure(final Executer onTime) {
+ timer = new Timer() {
+ @Override
+ public void run() {
+ onTime.execute();
+ }
+ };
+ }
+
+ public void run() {
+ timer.run();
+ }
+
+ public void schedule(final int delayMillis) {
+ timer.schedule(delayMillis);
+ }
+
+ public void scheduleRepeating(final int delayMillis) {
+ timer.scheduleRepeating(delayMillis);
+ }
+}
Copied: trunk/src/main/java/cc/kune/common/client/utils/Url.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/utils/Url.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/Url.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/utils/Url.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -0,0 +1,63 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ \*/
+package cc.kune.common.client.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Url {
+ private final String base;
+ private final List<UrlParam> params;
+
+ public Url(final String base) {
+ this.base = base;
+ params = new ArrayList<UrlParam>();
+ }
+
+ public Url(final String base, final UrlParam... iniParams) {
+ this(base);
+ for (UrlParam param : iniParams) {
+ addImpl(param);
+ }
+ }
+
+ public void add(final UrlParam param) {
+ addImpl(param);
+ }
+
+ @Override
+ public String toString() {
+ String paramPart = "";
+ boolean first = true;
+ for (UrlParam param : params) {
+ if (first) {
+ paramPart = "?" + param;
+ first = false;
+ } else {
+ paramPart += "&" + param;
+ }
+ }
+ return base + paramPart;
+ }
+
+ private void addImpl(final UrlParam param) {
+ params.add(param);
+ }
+}
Copied: trunk/src/main/java/cc/kune/common/client/utils/UrlParam.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/utils/UrlParam.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/UrlParam.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/utils/UrlParam.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -0,0 +1,48 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ \*/
+package cc.kune.common.client.utils;
+
+public class UrlParam {
+ private final String value;
+ private final String name;
+
+ public UrlParam(String name, boolean value) {
+ this.name = name;
+ this.value = value ? "true" : "false";
+ }
+
+ public UrlParam(String name, String value) {
+ this.name = name;
+ this.value = value;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public String toString() {
+ return name + "=" + value;
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -22,6 +22,7 @@
import cc.kune.common.client.noti.NotifyLevelImages;
import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.client.state.Session;
+import cc.kune.core.client.ui.KuneUiUtils;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.extjs.gxt.ui.client.widget.VerticalPanel;
@@ -47,18 +48,6 @@
super(REGISTER_DIALOG, i18n, i18n.t(CoreMessages.REGISTER_TITLE), true, true, true, 400, 420, "",
i18n.t(CoreMessages.REGISTER_TITLE), REGISTER_BUTTON_ID, i18n.tWithNT("Cancel", "used in button"),
CANCEL_BUTTON_ID, images, ERRMSG, 11);
- // super.addListener(new WindowListenerAdapter() {
- // @Override
- // public void onActivate(final Panel panel) {
- // KuneUiUtils.focusOnField(registerForm.getShortNameField());
- // }
- //
- // @Override
- // public void onShow(final Component component) {
- // KuneUiUtils.focusOnField(registerForm.getShortNameField());
- // }
- // });
-
final VerticalPanel panel = new VerticalPanel();
// panel.setBorder(false);
registerForm = new RegisterForm(i18n, session);
@@ -109,6 +98,12 @@
}
@Override
+ public void show() {
+ super.show();
+ KuneUiUtils.focusOnField(registerForm.getShortNameField());
+ }
+
+ @Override
public void showWelcolmeDialog() {
// final InfoDialog welcomeDialog = new InfoDialog(WELCOME_DIALOG,
// i18n.t("Welcome"),
Modified: trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -88,6 +88,34 @@
return (RegisterView) super.getView();
}
+ @Override
+ protected void onBind() {
+ super.onBind();
+ getView().getFirstBtn().addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(final ClickEvent event) {
+ getView().validate();
+ if (getView().isValid()) {
+ onFormRegister();
+ }
+ }
+ });
+ getView().getSecondBtn().addClickHandler(new ClickHandler() {
+
+ @Override
+ public void onClick(final ClickEvent event) {
+ onCancel();
+ }
+ });
+ getView().getClose().addCloseHandler(new CloseHandler<PopupPanel>() {
+
+ @Override
+ public void onClose(final CloseEvent<PopupPanel> event) {
+ RegisterPresenter.this.onClose();
+ }
+ });
+ }
+
public void onFormRegister() {
if (getView().isRegisterFormValid()) {
getView().maskProcessing();
@@ -117,7 +145,6 @@
} else {
getView().setErrorMessage(i18n.t("Error during registration."), NotifyLevel.error);
throw new UIException("Other kind of exception in user registration", caught);
-
}
}
@@ -139,34 +166,6 @@
}
@Override
- protected void onReveal() {
- super.onReveal();
- getView().getFirstBtn().addClickHandler(new ClickHandler() {
- @Override
- public void onClick(final ClickEvent event) {
- getView().validate();
- if (getView().isValid()) {
- onFormRegister();
- }
- }
- });
- getView().getSecondBtn().addClickHandler(new ClickHandler() {
-
- @Override
- public void onClick(final ClickEvent event) {
- onCancel();
- }
- });
- getView().getClose().addCloseHandler(new CloseHandler<PopupPanel>() {
-
- @Override
- public void onClose(final CloseEvent<PopupPanel> event) {
- RegisterPresenter.this.onClose();
- }
- });
- }
-
- @Override
protected void revealInParent() {
RevealRootContentEvent.fire(this, this);
}
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPanel.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -61,6 +61,7 @@
private void createMessageErrorIfNeeded() {
if (messageErrorBar == null) {
messageErrorBar = new MessageToolbar(images, errorLabelId);
+ dialog.getBottomPanel().add(messageErrorBar);
}
}
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -21,6 +21,7 @@
import cc.kune.common.client.noti.NotifyLevelImages;
import cc.kune.core.client.resources.CoreMessages;
+import cc.kune.core.client.ui.KuneUiUtils;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.extjs.gxt.ui.client.widget.VerticalPanel;
@@ -42,19 +43,19 @@
@Inject
public SignInPanel(final I18nTranslationService i18n, final NotifyLevelImages images) {
- super(SIGNIN_DIALOG, i18n, i18n.t(CoreMessages.SIGN_IN_TITLE), true, true, true, 360, 360, "",
+ super(SIGNIN_DIALOG, i18n, i18n.t(CoreMessages.SIGN_IN_TITLE), true, true, true, 360, 430, "",
i18n.t(CoreMessages.SIGN_IN_TITLE), SIGN_IN_BUTTON_ID, i18n.tWithNT("Cancel", "used in button"),
CANCEL_BUTTON_ID, images, ERROR_MSG, 102);
// @Override
// public void onShow(final Component component) {
- // KuneUiUtils.focusOnField(getNickname());
+ //
// }
final VerticalPanel panel = new VerticalPanel();
// panel.setBorder(false);
signInForm = new SignInForm(i18n);
- signInForm.setWidth(310);
+ signInForm.setWidth(370);
panel.add(signInForm.getFormPanel());
panel.add(createNoAccountRegister());
super.getInnerPanel().add(panel);
@@ -69,7 +70,8 @@
registerLabel = new Label(i18n.t("Create one."));
registerLabel.ensureDebugId(CREATE_ONE);
registerLabel.addStyleName("kune-Margin-Medium-l");
- registerLabel.addStyleName("kune-link");
+ registerLabel.addStyleName("k-link");
+ registerLabel.addStyleName("k-cursor");
hpanel.add(dontHaveAccount);
hpanel.add(registerLabel);
noAccRegisterPanel.add(hpanel);
@@ -111,6 +113,12 @@
}
@Override
+ public void show() {
+ super.show();
+ KuneUiUtils.focusOnField(getNickname());
+ }
+
+ @Override
public void validate() {
signInForm.validate();
}
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -94,6 +94,38 @@
stateManager.gotoToken(SiteCommonTokens.REGISTER);
}
+ @Override
+ protected void onBind() {
+ super.onBind();
+ getView().getFirstBtn().addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(final ClickEvent event) {
+ onFormSignIn();
+ }
+ });
+ getView().getSecondBtn().addClickHandler(new ClickHandler() {
+
+ @Override
+ public void onClick(final ClickEvent event) {
+ onCancel();
+ }
+ });
+ getView().getClose().addCloseHandler(new CloseHandler<PopupPanel>() {
+
+ @Override
+ public void onClose(final CloseEvent<PopupPanel> event) {
+ SignInPresenter.this.onClose();
+ }
+ });
+ getView().getAccountRegister().addClickHandler(new ClickHandler() {
+
+ @Override
+ public void onClick(final ClickEvent event) {
+ onAccountRegister();
+ }
+ });
+ }
+
public void onFormSignIn() {
getView().validate();
if (getView().isSignInFormValid()) {
@@ -133,38 +165,6 @@
}
@Override
- protected void onReveal() {
- super.onReveal();
- getView().getFirstBtn().addClickHandler(new ClickHandler() {
- @Override
- public void onClick(final ClickEvent event) {
- onFormSignIn();
- }
- });
- getView().getSecondBtn().addClickHandler(new ClickHandler() {
-
- @Override
- public void onClick(final ClickEvent event) {
- onCancel();
- }
- });
- getView().getClose().addCloseHandler(new CloseHandler<PopupPanel>() {
-
- @Override
- public void onClose(final CloseEvent<PopupPanel> event) {
- SignInPresenter.this.onClose();
- }
- });
- getView().getAccountRegister().addClickHandler(new ClickHandler() {
-
- @Override
- public void onClick(final ClickEvent event) {
- onAccountRegister();
- }
- });
- }
-
- @Override
protected void revealInParent() {
RevealRootContentEvent.fire(this, this);
}
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -1,10 +1,15 @@
package cc.kune.core.client.sitebar.spaces;
+import cc.kune.common.client.noti.NotifyUser;
+import cc.kune.core.client.auth.SignIn;
import cc.kune.core.client.init.AppStartEvent;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.wspace.client.WsArmor;
import com.google.gwt.event.shared.EventBus;
import com.google.inject.Inject;
+import com.google.inject.Provider;
import com.gwtplatform.mvp.client.HasUiHandlers;
import com.gwtplatform.mvp.client.Presenter;
import com.gwtplatform.mvp.client.View;
@@ -33,12 +38,19 @@
}
private final WsArmor armor;
+ private final I18nTranslationService i18n;
+ private final Session session;
+ private final Provider<SignIn> signIn;
@Inject
public SpaceSelectorPresenter(final EventBus eventBus, final SpaceSelectorView view,
- final SpaceSelectorProxy proxy, final WsArmor armor) {
+ final SpaceSelectorProxy proxy, final WsArmor armor, final Session session, final Provider<SignIn> sigIn,
+ final I18nTranslationService i18n) {
super(eventBus, view, proxy);
this.armor = armor;
+ this.session = session;
+ this.signIn = sigIn;
+ this.i18n = i18n;
getView().setUiHandlers(this);
}
@@ -80,11 +92,17 @@
@Override
public void onUserSpaceSelect() {
- armor.selectUserSpace();
- getView().setHomeBtnDown(false);
- getView().setUserBtnDown(true);
- getView().setGroupBtnDown(false);
- getView().setPublicBtnDown(false);
+ if (session.isLogged()) {
+ armor.selectUserSpace();
+ getView().setHomeBtnDown(false);
+ getView().setUserBtnDown(true);
+ getView().setGroupBtnDown(false);
+ getView().setPublicBtnDown(false);
+ } else {
+ signIn.get().doSignIn();
+ getView().setUserBtnDown(false);
+ NotifyUser.info(i18n.t("Sign in to access to your workspace"));
+ }
}
@Override
Added: trunk/src/main/java/cc/kune/core/client/ui/KuneUiUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/KuneUiUtils.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/ui/KuneUiUtils.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -0,0 +1,15 @@
+package cc.kune.core.client.ui;
+
+import com.extjs.gxt.ui.client.widget.form.Field;
+import com.google.gwt.user.client.Timer;
+
+public class KuneUiUtils {
+ public static void focusOnField(final Field<?> field) {
+ new Timer() {
+ @Override
+ public void run() {
+ field.focus();
+ }
+ }.schedule(50);
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/ui/KuneUiUtils.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -2,6 +2,7 @@
import cc.kune.common.client.ui.PopupPanelTopCentered;
+import com.google.gwt.core.client.GWT;
import com.google.gwt.event.logical.shared.HasCloseHandlers;
import com.google.gwt.user.client.ui.PopupPanel;
@@ -19,6 +20,7 @@
super.getTitleText().setText(title);
// super.setAutoscroll(autoscroll);
// super.setSize(String.valueOf(width), String.valueOf(height));
+ GWT.log("Not setting size of dialog to: " + String.valueOf(width) + "/" + String.valueOf(height));
super.setTitleIcon(icon);
super.getFirstBtnText().setText(firstButtonTitle);
super.getSecondBtnText().setText(cancelButtonTitle);
Modified: trunk/src/main/java/cc/kune/core/client/ui/dialogs/MessageToolbar.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/dialogs/MessageToolbar.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/cc/kune/core/client/ui/dialogs/MessageToolbar.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -27,9 +27,10 @@
import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Image;
-public class MessageToolbar {
+public class MessageToolbar extends Composite {
private final Image errorIcon;
private final Label errorLabel;
private final NotifyLevelImages images;
@@ -51,6 +52,7 @@
toolbar.add(errorLabel);
errorIcon.setVisible(false);
toolbar.setVisible(false);
+ initWidget(toolbar);
}
public ToolBar getToolbar() {
Modified: trunk/src/main/java/cc/kune/core/public/ws.css
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.css 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/cc/kune/core/public/ws.css 2011-01-28 01:41:24 UTC (rev 1226)
@@ -382,4 +382,246 @@
.k-sitebar {
margin-top: -30px;
-}
\ No newline at end of file
+}
+
+.k-link {
+ text-decoration: underline;
+ color: green;
+ cursor: pointer;
+}
+
+
+/* Margins */
+
+.kune-Margin-40-trbl {
+ margin: 40px;
+}
+
+.kune-Margin-40-lr {
+ margin-left: 40px;
+ margin-right: 40px;
+}
+
+.kune-Margin-40-tl {
+ margin-top: 40px;
+ margin-left: 40px;
+}
+
+.kune-Margin-40-tb {
+ margin-top: 40px;
+ margin-bottom: 40px;
+}
+
+.kune-Margin-40-t {
+ margin-top: 40px;
+}
+
+.kune-Margin-40-r {
+ margin-right: 40px;
+}
+
+.kune-Margin-40-l {
+ margin-left: 40px;
+}
+
+.kune-Margin-20-trbl {
+ margin: 20px;
+}
+
+.kune-Margin-20-lr {
+ margin-left: 20px;
+ margin-right: 20px;
+}
+
+.kune-Margin-20-tl {
+ margin-top: 20px;
+ margin-left: 20px;
+}
+
+.kune-Margin-20-tb {
+ margin-top: 20px;
+ margin-bottom: 20px;
+}
+
+.kune-Margin-20-t {
+ margin-top: 20px;
+}
+
+.kune-Margin-20-r {
+ margin-right: 20px;
+}
+
+.kune-Margin-20-l {
+ margin-left: 20px;
+}
+
+.kune-Margin-Large-trbl {
+ margin: 10px;
+}
+
+.kune-Margin-Large-lr {
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+.kune-Margin-Large-tl {
+ margin-top: 10px;
+ margin-left: 10px;
+}
+
+.kune-Margin-Large-tb {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+.kune-Margin-Large-t {
+ margin-top: 10px;
+}
+
+.kune-Margin-Large-r {
+ margin-right: 10px;
+}
+
+.kune-Margin-Large-l {
+ margin-left: 10px;
+}
+
+.kune-Margin-7-trbl {
+ margin: 7px;
+}
+
+.kune-Margin-7-lr {
+ margin-left: 7px;
+ margin-right: 7px;
+}
+
+.kune-Margin-7-tl {
+ margin-top: 7px;
+ margin-left: 7px;
+}
+
+.kune-Margin-7-tb {
+ margin-top: 7px;
+ margin-bottom: 7px;
+}
+
+.kune-Margin-7-t {
+ margin-top: 7px;
+}
+
+.kune-Margin-7-r {
+ margin-right: 7px;
+}
+
+.kune-Margin-7-b {
+ margin-bottom: 7px;
+}
+
+.kune-Margin-7-l {
+ margin-left: 7px;
+}
+
+.kune-Margin-Medium-trbl {
+ margin: 5px;
+}
+
+.kune-Margin-Medium-lr {
+ margin-left: 5px;
+ margin-right: 5px;
+}
+
+.kune-Margin-Medium-tl {
+ margin-top: 5px;
+ margin-left: 5px;
+}
+
+.kune-Margin-Medium-tb {
+ margin-top: 5px;
+ margin-bottom: 5px;
+}
+
+.kune-Margin-Medium-t {
+ margin-top: 5px;
+}
+
+.kune-Margin-Medium-r {
+ margin-right: 5px;
+}
+
+.kune-Margin-Medium-b {
+ margin-bottom: 5px;
+}
+
+.kune-Margin-Medium-l {
+ margin-left: 5px;
+}
+
+.kune-Margin-Small-trbl {
+ margin: 3px;
+}
+
+.kune-Margin-Small-lr {
+ margin-left: 3px;
+ margin-right: 3px;
+}
+
+.kune-Margin-Small-tl {
+ margin-top: 3px;
+ margin-left: 3px;
+}
+
+.kune-Margin-Small-tb {
+ margin-top: 3px;
+ margin-bottom: 3px;
+}
+
+.kune-Margin-Small-t {
+ margin-top: 3px;
+}
+
+.kune-Margin-Small-l {
+ margin-left: 3px;
+}
+
+.kune-Margin-Small-r {
+ margin-right: 3px;
+}
+
+.kune-Margin-Small-b {
+ margin-bottom: 3px;
+}
+
+.kune-Margin-Mini-trbl {
+ margin: 1px;
+}
+
+.kune-Margin-Mini-lr {
+ margin-left: 1px;
+ margin-right: 1px;
+}
+
+.kune-Margin-Mini-tl {
+ margin-top: 1px;
+ margin-left: 1px;
+}
+
+.kune-Margin-Mini-tb {
+ margin-top: 1px;
+ margin-bottom: 1px;
+}
+
+.kune-Margin-Mini-t {
+ margin-top: 1px;
+}
+
+.kune-Margin-Mini-r {
+ margin-right: 1px;
+}
+
+.kune-Margin-Mini-b {
+ margin-bottom: 1px;
+}
+
+.kune-Margin-Mini-l {
+ margin-left: 1px;
+}
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/kune.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/kune.css 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/kune.css 2011-01-28 01:41:24 UTC (rev 1226)
@@ -266,12 +266,6 @@
}
-.kune-link {
- text-decoration: underline;
- color: green;
- cursor: pointer;
-}
-
/* DropDowns */
.kune-DropDownOuter {
@@ -305,241 +299,6 @@
vertical-align: middle;
}
-/* Margins */
-
-.kune-Margin-40-trbl {
- margin: 40px;
-}
-
-.kune-Margin-40-lr {
- margin-left: 40px;
- margin-right: 40px;
-}
-
-.kune-Margin-40-tl {
- margin-top: 40px;
- margin-left: 40px;
-}
-
-.kune-Margin-40-tb {
- margin-top: 40px;
- margin-bottom: 40px;
-}
-
-.kune-Margin-40-t {
- margin-top: 40px;
-}
-
-.kune-Margin-40-r {
- margin-right: 40px;
-}
-
-.kune-Margin-40-l {
- margin-left: 40px;
-}
-
-.kune-Margin-20-trbl {
- margin: 20px;
-}
-
-.kune-Margin-20-lr {
- margin-left: 20px;
- margin-right: 20px;
-}
-
-.kune-Margin-20-tl {
- margin-top: 20px;
- margin-left: 20px;
-}
-
-.kune-Margin-20-tb {
- margin-top: 20px;
- margin-bottom: 20px;
-}
-
-.kune-Margin-20-t {
- margin-top: 20px;
-}
-
-.kune-Margin-20-r {
- margin-right: 20px;
-}
-
-.kune-Margin-20-l {
- margin-left: 20px;
-}
-
-.kune-Margin-Large-trbl {
- margin: 10px;
-}
-
-.kune-Margin-Large-lr {
- margin-left: 10px;
- margin-right: 10px;
-}
-
-.kune-Margin-Large-tl {
- margin-top: 10px;
- margin-left: 10px;
-}
-
-.kune-Margin-Large-tb {
- margin-top: 10px;
- margin-bottom: 10px;
-}
-
-.kune-Margin-Large-t {
- margin-top: 10px;
-}
-
-.kune-Margin-Large-r {
- margin-right: 10px;
-}
-
-.kune-Margin-Large-l {
- margin-left: 10px;
-}
-
-.kune-Margin-7-trbl {
- margin: 7px;
-}
-
-.kune-Margin-7-lr {
- margin-left: 7px;
- margin-right: 7px;
-}
-
-.kune-Margin-7-tl {
- margin-top: 7px;
- margin-left: 7px;
-}
-
-.kune-Margin-7-tb {
- margin-top: 7px;
- margin-bottom: 7px;
-}
-
-.kune-Margin-7-t {
- margin-top: 7px;
-}
-
-.kune-Margin-7-r {
- margin-right: 7px;
-}
-
-.kune-Margin-7-b {
- margin-bottom: 7px;
-}
-
-.kune-Margin-7-l {
- margin-left: 7px;
-}
-
-.kune-Margin-Medium-trbl {
- margin: 5px;
-}
-
-.kune-Margin-Medium-lr {
- margin-left: 5px;
- margin-right: 5px;
-}
-
-.kune-Margin-Medium-tl {
- margin-top: 5px;
- margin-left: 5px;
-}
-
-.kune-Margin-Medium-tb {
- margin-top: 5px;
- margin-bottom: 5px;
-}
-
-.kune-Margin-Medium-t {
- margin-top: 5px;
-}
-
-.kune-Margin-Medium-r {
- margin-right: 5px;
-}
-
-.kune-Margin-Medium-b {
- margin-bottom: 5px;
-}
-
-.kune-Margin-Medium-l {
- margin-left: 5px;
-}
-
-.kune-Margin-Small-trbl {
- margin: 3px;
-}
-
-.kune-Margin-Small-lr {
- margin-left: 3px;
- margin-right: 3px;
-}
-
-.kune-Margin-Small-tl {
- margin-top: 3px;
- margin-left: 3px;
-}
-
-.kune-Margin-Small-tb {
- margin-top: 3px;
- margin-bottom: 3px;
-}
-
-.kune-Margin-Small-t {
- margin-top: 3px;
-}
-
-.kune-Margin-Small-l {
- margin-left: 3px;
-}
-
-.kune-Margin-Small-r {
- margin-right: 3px;
-}
-
-.kune-Margin-Small-b {
- margin-bottom: 3px;
-}
-
-.kune-Margin-Mini-trbl {
- margin: 1px;
-}
-
-.kune-Margin-Mini-lr {
- margin-left: 1px;
- margin-right: 1px;
-}
-
-.kune-Margin-Mini-tl {
- margin-top: 1px;
- margin-left: 1px;
-}
-
-.kune-Margin-Mini-tb {
- margin-top: 1px;
- margin-bottom: 1px;
-}
-
-.kune-Margin-Mini-t {
- margin-top: 1px;
-}
-
-.kune-Margin-Mini-r {
- margin-right: 1px;
-}
-
-.kune-Margin-Mini-b {
- margin-bottom: 1px;
-}
-
-.kune-Margin-Mini-l {
- margin-left: 1px;
-}
-
/* Fonts
see: http://developer.yahoo.com/yui/fonts/ */
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -26,7 +26,6 @@
import org.ourproject.kune.blogs.client.cnt.BlogViewer;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.workspace.client.AbstractFoldableContentActions;
import org.ourproject.kune.workspace.client.cnt.ContentActionRegistry;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
@@ -39,6 +38,7 @@
import org.ourproject.kune.workspace.client.upload.FileUploader;
import org.ourproject.kune.workspace.client.wave.WaveInsert;
+import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.rpcservices.ContentServiceAsync;
@@ -51,7 +51,7 @@
public class BlogClientActions extends AbstractFoldableContentActions {
public BlogClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator,
final Session session, final StateManager stateManager,
- final DeferredCommandWrapper deferredCommandWrapper,
+ final SchedulerManager deferredCommandWrapper,
final Provider<ContentServiceAsync> contentServiceProvider,
final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider,
final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -34,7 +34,6 @@
import org.ourproject.kune.platf.client.services.AbstractExtendedModule;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.rte.insertmedia.abstractmedia.MediaUtils;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.workspace.client.cnt.ActionContentToolbar;
import org.ourproject.kune.workspace.client.cnt.ContentActionRegistry;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
@@ -50,6 +49,7 @@
import org.ourproject.kune.workspace.client.upload.FileUploader;
import org.ourproject.kune.workspace.client.wave.WaveInsert;
+import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.rpcservices.ContentServiceAsync;
@@ -79,7 +79,7 @@
@Override
public BlogClientActions create() {
return new BlogClientActions(i(I18nUITranslationService.class), i(ContextNavigator.class),
- i(Session.class), i(StateManager.class), i(DeferredCommandWrapper.class),
+ i(Session.class), i(StateManager.class), i(SchedulerManager.class),
p(ContentServiceAsync.class), p(GroupServiceAsync.class), p(FileUploader.class),
i(ContentActionRegistry.class), i(ContextActionRegistry.class), p(FileDownloadUtils.class),
i(EntityHeader.class), p(ContentEditor.class), i(ErrorHandler.class), i(BlogViewer.class),
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -26,12 +26,12 @@
import org.ourproject.kune.platf.client.actions.ActionEnableCondition;
import org.ourproject.kune.platf.client.actions.ActionToolbarButtonDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarButtonSeparator;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.wiki.client.WikiClientTool;
import org.ourproject.kune.workspace.client.AbstractFoldableContentActions;
import org.ourproject.kune.workspace.client.cnt.ContentActionRegistry;
import org.ourproject.kune.workspace.client.cxt.ContextActionRegistry;
+import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.domain.ContentStatus;
@@ -39,23 +39,23 @@
import cc.kune.core.shared.dto.AccessRolDTO;
import com.calclab.suco.client.events.Listener;
-import com.calclab.suco.client.events.Listener0;
import com.calclab.suco.client.ioc.Provider;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
public class ChatClientActions {
- private final Session session;
+ private final Provider<AddRoom> addRoomProvider;
private final Provider<ChatEngine> chatEngineProvider;
private final ContentActionRegistry contentActionRegistry;
+ private final ContextActionRegistry contextActionRegistry;
+ private final Provider<SchedulerManager> deferredWrapper;
private final I18nUITranslationService i18n;
- private final ContextActionRegistry contextActionRegistry;
- private final Provider<AddRoom> addRoomProvider;
- private final Provider<DeferredCommandWrapper> deferredWrapper;
+ private final Session session;
public ChatClientActions(final I18nUITranslationService i18n, final Session session,
final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
final Provider<ChatEngine> chatEngine, final Provider<AddRoom> addRoomProvider,
- final Provider<DeferredCommandWrapper> deferredWrapper) {
+ final Provider<SchedulerManager> deferredWrapper) {
this.i18n = i18n;
this.session = session;
this.contentActionRegistry = contentActionRegistry;
@@ -69,9 +69,11 @@
private void createActions() {
final ActionToolbarButtonDescriptor<StateToken> chatAbout = new ActionToolbarButtonDescriptor<StateToken>(
AccessRolDTO.Viewer, AbstractFoldableContentActions.CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken token) {
- deferredWrapper.get().addCommand(new Listener0() {
- public void onEvent() {
+ deferredWrapper.get().addCommand(new ScheduledCommand() {
+ @Override
+ public void execute() {
final String subject = i18n.t("Chat about: [%s]", session.getContentState().getTitle());
chatEngineProvider.get().joinRoom(token.toString().replaceAll("\\.", "-"), subject,
session.getCurrentUserInfo().getShortName());
@@ -88,6 +90,7 @@
final ActionToolbarButtonDescriptor<StateToken> joinRoom = new ActionToolbarButtonDescriptor<StateToken>(
AccessRolDTO.Viewer, AbstractFoldableContentActions.CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken token) {
final ChatEngine chatEngine = chatEngineProvider.get();
chatEngine.joinRoom(session.getContainerState().getContainer().getName(),
@@ -101,6 +104,7 @@
final ActionToolbarButtonDescriptor<StateToken> addRoom = new ActionToolbarButtonDescriptor<StateToken>(
AccessRolDTO.Administrator, AbstractFoldableContentActions.CONTEXT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken token) {
addRoomProvider.get().show();
}
@@ -123,6 +127,7 @@
private ActionEnableCondition<StateToken> notDeleted() {
return new ActionEnableCondition<StateToken>() {
+ @Override
public boolean mustBeEnabled(final StateToken token) {
final boolean isNotDeleted = !(session.isCurrentStateAContent() && session.getContentState().getStatus().equals(
ContentStatus.inTheDustbin));
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -33,7 +33,6 @@
import org.ourproject.kune.platf.client.shortcuts.GlobalShortcutRegister;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.rte.insertmedia.abstractmedia.MediaUtils;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.workspace.client.cnt.ActionContentToolbar;
import org.ourproject.kune.workspace.client.cnt.ContentActionRegistry;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
@@ -42,6 +41,7 @@
import org.ourproject.kune.workspace.client.themes.WsThemeManager;
import org.ourproject.kune.workspace.client.tool.ToolSelector;
+import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.init.AppStarter;
import cc.kune.core.client.rpcservices.ContentServiceAsync;
@@ -63,7 +63,7 @@
public ChatClientActions create() {
return new ChatClientActions(i(I18nUITranslationService.class), i(Session.class),
i(ContentActionRegistry.class), i(ContextActionRegistry.class), p(ChatEngine.class),
- p(AddRoom.class), p(DeferredCommandWrapper.class));
+ p(AddRoom.class), p(SchedulerManager.class));
}
});
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -27,7 +27,6 @@
import org.ourproject.kune.docs.client.cnt.DocumentViewer;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.workspace.client.AbstractFoldableContentActions;
import org.ourproject.kune.workspace.client.cnt.ContentActionRegistry;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
@@ -40,6 +39,7 @@
import org.ourproject.kune.workspace.client.upload.FileUploader;
import org.ourproject.kune.workspace.client.wave.WaveInsert;
+import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.rpcservices.ContentServiceAsync;
@@ -52,7 +52,7 @@
public class DocumentClientActions extends AbstractFoldableContentActions {
public DocumentClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator,
final Session session, final StateManager stateManager,
- final DeferredCommandWrapper deferredCommandWrapper,
+ final SchedulerManager deferredCommandWrapper,
final Provider<ContentServiceAsync> contentServiceProvider,
final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider,
final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -34,7 +34,6 @@
import org.ourproject.kune.platf.client.services.AbstractExtendedModule;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.rte.insertmedia.abstractmedia.MediaUtils;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.workspace.client.cnt.ActionContentToolbar;
import org.ourproject.kune.workspace.client.cnt.ContentActionRegistry;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
@@ -50,6 +49,7 @@
import org.ourproject.kune.workspace.client.upload.FileUploader;
import org.ourproject.kune.workspace.client.wave.WaveInsert;
+import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.rpcservices.ContentServiceAsync;
@@ -79,7 +79,7 @@
@Override
public DocumentClientActions create() {
return new DocumentClientActions(i(I18nUITranslationService.class), i(ContextNavigator.class),
- i(Session.class), i(StateManager.class), i(DeferredCommandWrapper.class),
+ i(Session.class), i(StateManager.class), i(SchedulerManager.class),
p(ContentServiceAsync.class), p(GroupServiceAsync.class), p(FileUploader.class),
i(ContentActionRegistry.class), i(ContextActionRegistry.class), p(FileDownloadUtils.class),
i(EntityHeader.class), p(ContentEditor.class), i(ErrorHandler.class), i(DocumentViewer.class),
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -25,7 +25,6 @@
import org.ourproject.kune.gallery.client.cnt.GalleryViewer;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.workspace.client.AbstractFoldableContentActions;
import org.ourproject.kune.workspace.client.cnt.ContentActionRegistry;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
@@ -38,6 +37,7 @@
import org.ourproject.kune.workspace.client.upload.FileUploader;
import org.ourproject.kune.workspace.client.wave.WaveInsert;
+import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.rpcservices.ContentServiceAsync;
@@ -50,7 +50,7 @@
public class GalleryClientActions extends AbstractFoldableContentActions {
public GalleryClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator,
final Session session, final StateManager stateManager,
- final DeferredCommandWrapper deferredCommandWrapper,
+ final SchedulerManager deferredCommandWrapper,
final Provider<ContentServiceAsync> contentServiceProvider,
final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider,
final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -34,7 +34,6 @@
import org.ourproject.kune.platf.client.services.AbstractExtendedModule;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.rte.insertmedia.abstractmedia.MediaUtils;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.workspace.client.cnt.ActionContentToolbar;
import org.ourproject.kune.workspace.client.cnt.ContentActionRegistry;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
@@ -50,6 +49,7 @@
import org.ourproject.kune.workspace.client.upload.FileUploader;
import org.ourproject.kune.workspace.client.wave.WaveInsert;
+import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.rpcservices.ContentServiceAsync;
@@ -79,7 +79,7 @@
@Override
public GalleryClientActions create() {
return new GalleryClientActions(i(I18nUITranslationService.class), i(ContextNavigator.class),
- i(Session.class), i(StateManager.class), i(DeferredCommandWrapper.class),
+ i(Session.class), i(StateManager.class), i(SchedulerManager.class),
p(ContentServiceAsync.class), p(GroupServiceAsync.class), p(FileUploader.class),
i(ContentActionRegistry.class), i(ContextActionRegistry.class), p(FileDownloadUtils.class),
i(EntityHeader.class), p(ContentEditor.class), i(ErrorHandler.class), i(GalleryViewer.class),
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -94,10 +94,10 @@
import org.ourproject.kune.platf.client.ui.rte.saving.RTESavingEditor;
import org.ourproject.kune.platf.client.ui.rte.saving.RTESavingEditorPanel;
import org.ourproject.kune.platf.client.ui.rte.saving.RTESavingEditorPresenter;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
-import org.ourproject.kune.platf.client.utils.TimerWrapper;
import cc.kune.common.client.noti.NotifyLevelImages;
+import cc.kune.common.client.utils.SchedulerManager;
+import cc.kune.common.client.utils.TimerWrapper;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.state.AccessRightsClientManager;
@@ -183,10 +183,10 @@
// }
// });
- register(Singleton.class, new Factory<DeferredCommandWrapper>(DeferredCommandWrapper.class) {
+ register(Singleton.class, new Factory<SchedulerManager>(SchedulerManager.class) {
@Override
- public DeferredCommandWrapper create() {
- return new DeferredCommandWrapper();
+ public SchedulerManager create() {
+ return new SchedulerManager();
}
});
@@ -262,7 +262,7 @@
final RTEditorPresenter presenter = new RTEditorPresenter(i(I18nTranslationService.class),
i(Session.class), i(RTEImgResources.class), p(InsertLinkDialog.class),
p(ColorWebSafePalette.class), p(EditHtmlDialog.class), p(InsertImageDialog.class),
- p(InsertMediaDialog.class), p(InsertTableDialog.class), p(InsertSpecialCharDialog.class), i(DeferredCommandWrapper.class));
+ p(InsertMediaDialog.class), p(InsertTableDialog.class), p(InsertSpecialCharDialog.class), i(SchedulerManager.class));
final RTEditorPanel panel = new RTEditorPanel(presenter, i(I18nUITranslationService.class),
i(GlobalShortcutRegister.class), i(GuiBindingsRegister.class));
presenter.init(panel);
@@ -274,7 +274,7 @@
final RTESavingEditorPresenter presenter = new RTESavingEditorPresenter(i(I18nTranslationService.class),
i(Session.class), i(RTEImgResources.class), p(InsertLinkDialog.class),
p(ColorWebSafePalette.class), p(EditHtmlDialog.class), p(InsertImageDialog.class),
- p(InsertMediaDialog.class), p(InsertTableDialog.class), p(InsertSpecialCharDialog.class), i(DeferredCommandWrapper.class), true,
+ p(InsertMediaDialog.class), p(InsertTableDialog.class), p(InsertSpecialCharDialog.class), i(SchedulerManager.class), true,
i(StateManager.class),
i(TimerWrapper.class));
final RTESavingEditorPanel panel = new RTESavingEditorPanel(presenter, i(I18nUITranslationService.class),
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/KuneUiUtils.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/KuneUiUtils.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/KuneUiUtils.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -29,6 +29,7 @@
import com.gwtext.client.widgets.ToolTip;
import com.gwtext.client.widgets.form.Field;
+@Deprecated
public final class KuneUiUtils {
public enum IconPosition {
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileDownloadUtils.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileDownloadUtils.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/download/FileDownloadUtils.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -21,9 +21,9 @@
import org.ourproject.kune.platf.client.services.ImageDescriptor;
import org.ourproject.kune.platf.client.services.ImageUtils;
-import org.ourproject.kune.platf.client.utils.Url;
-import org.ourproject.kune.platf.client.utils.UrlParam;
+import cc.kune.common.client.utils.Url;
+import cc.kune.common.client.utils.UrlParam;
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.domain.utils.StateToken;
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -41,8 +41,8 @@
import org.ourproject.kune.platf.client.ui.rte.insertmedia.InsertMediaDialog;
import org.ourproject.kune.platf.client.ui.rte.insertspecialchar.InsertSpecialCharDialog;
import org.ourproject.kune.platf.client.ui.rte.inserttable.InsertTableDialog;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
+import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -51,6 +51,7 @@
import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
import com.calclab.suco.client.ioc.Provider;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.Event;
@@ -62,10 +63,12 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
createPalette();
final Event event = actionEvent.getEvent();
palette.show(event.getClientX(), event.getClientY(), new Listener<String>() {
+ @Override
public void onEvent(final String color) {
palette.hide();
view.setBackColor(color);
@@ -80,6 +83,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.focus();
view.insertBlockquote();
@@ -92,6 +96,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.toggleBold();
fireOnEdit();
@@ -103,21 +108,25 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
- deferred.addCommand(new Listener0() {
- public void onEvent() {
+ deferred.addCommand(new ScheduledCommand() {
+ @Override
+ public void execute() {
view.focus();
final String author = session.isLogged() ? session.getCurrentUser().getShortName()
: i18n.t("anonymous user");
if (view.isAnythingSelected()) {
NotifyUser.askConfirmation(i18n.t("Insert a comment"),
i18n.t("Include the selected text in the comment?"), new Listener0() {
+ @Override
public void onEvent() {
// include selection in
// comment
view.insertCommentUsingSelection(author);
}
}, new Listener0() {
+ @Override
public void onEvent() {
// not include selection in
// comment;
@@ -144,6 +153,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.copy();
}
@@ -154,13 +164,16 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
- deferred.addCommand(new Listener0() {
+ deferred.addCommand(new ScheduledCommand() {
private InsertLinkDialog insLinkDialog;
- public void onEvent() {
+ @Override
+ public void execute() {
if (insLinkListener == null) {
insLinkListener = new Listener<LinkInfo>() {
+ @Override
public void onEvent(final LinkInfo linkInfo) {
final String link = linkInfo.toString();
Log.debug("Link: " + link);
@@ -197,6 +210,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.cut();
fireOnEdit();
@@ -208,6 +222,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.leftIndent();
fireOnEdit();
@@ -219,9 +234,11 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
- deferred.addCommand(new Listener0() {
- public void onEvent() {
+ deferred.addCommand(new ScheduledCommand() {
+ @Override
+ public void execute() {
view.getRangeInfo();
}
});
@@ -235,9 +252,11 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
if (updHtmlListener == null) {
updHtmlListener = new Listener<String>() {
+ @Override
public void onEvent(final String html) {
view.setHTML(html);
fireOnEdit();
@@ -262,6 +281,7 @@
super.putValue(FONT_NAME, fontName);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
final String fontName = getFontName();
view.setFontName(fontName);
@@ -279,10 +299,12 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
createPalette();
final Event event = actionEvent.getEvent();
palette.show(event.getClientX(), event.getClientY(), new Listener<String>() {
+ @Override
public void onEvent(final String color) {
palette.hide();
view.setForeColor(color);
@@ -302,6 +324,7 @@
this.fontSize = fontSize;
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.setFontSize(FONT_SIZES[fontSize]);
fireOnEdit();
@@ -314,6 +337,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.focus();
view.insertHorizontalRule();
@@ -326,13 +350,16 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
- deferred.addCommand(new Listener0() {
+ deferred.addCommand(new ScheduledCommand() {
private InsertImageDialog insImgDialog;
- public void onEvent() {
+ @Override
+ public void execute() {
if (insImgListener == null) {
insImgListener = new Listener<ImageInfo>() {
+ @Override
public void onEvent(final ImageInfo imageInfo) {
Log.debug("Image: " + imageInfo);
view.focus();
@@ -358,6 +385,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.rightIndent();
fireOnEdit();
@@ -369,13 +397,16 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
- deferred.addCommand(new Listener0() {
+ deferred.addCommand(new ScheduledCommand() {
private InsertMediaDialog insMediaDialog;
- public void onEvent() {
+ @Override
+ public void execute() {
if (insMediaListener == null) {
insMediaListener = new Listener<String>() {
+ @Override
public void onEvent(final String html) {
Log.debug("Media: " + html);
view.focus();
@@ -402,10 +433,12 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
NotifyUser.showProgressLoading();
if (insCharListener == null) {
insCharListener = new Listener<String>() {
+ @Override
public void onEvent(final String character) {
view.insertHtml(character);
}
@@ -428,9 +461,11 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
if (insTableListener == null) {
insTableListener = new Listener<String>() {
+ @Override
public void onEvent(final String table) {
view.insertHtml(table);
fireOnEdit();
@@ -450,6 +485,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.toggleItalic();
fireOnEdit();
@@ -461,6 +497,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.justifyCenter();
fireOnEdit();
@@ -472,6 +509,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.justifyLeft();
fireOnEdit();
@@ -483,6 +521,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.justifyRight();
fireOnEdit();
@@ -494,6 +533,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.insertOrderedList();
fireOnEdit();
@@ -505,6 +545,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.paste();
fireOnEdit();
@@ -516,6 +557,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.redo();
fireOnEdit();
@@ -527,6 +569,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.removeFormat();
fireOnEdit();
@@ -538,9 +581,11 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
- deferred.addCommand(new Listener0() {
- public void onEvent() {
+ deferred.addCommand(new ScheduledCommand() {
+ @Override
+ public void execute() {
view.unlink();
hideLinkCtxMenu();
fireOnEdit();
@@ -554,6 +599,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.selectAll();
}
@@ -564,6 +610,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.toggleStrikethrough();
fireOnEdit();
@@ -575,6 +622,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.toggleSubscript();
fireOnEdit();
@@ -586,6 +634,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.toggleSuperscript();
fireOnEdit();
@@ -597,6 +646,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.insertUnorderedList();
fireOnEdit();
@@ -608,6 +658,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.toggleUnderline();
fireOnEdit();
@@ -619,70 +670,71 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
view.undo();
fireOnEdit();
}
}
+ private static final String FONT_GROUP = "fontgroup";
private static final String FONT_NAMES[] = { "Times New Roman", "Arial", "Courier New", "Georgia", "Trebuchet",
"Verdana" };
private static final String FONT_SIZE_NAMES[] = { "Extra small", "Very small (normal)", "Small", "Medium", "Large",
"Very large", "Extra large" };
+ private static final String FONT_SIZEGROUP = "fontsizegroup";
private static final RichTextArea.FontSize[] FONT_SIZES = new RichTextArea.FontSize[] {
RichTextArea.FontSize.XX_SMALL, RichTextArea.FontSize.X_SMALL, RichTextArea.FontSize.SMALL,
RichTextArea.FontSize.MEDIUM, RichTextArea.FontSize.LARGE, RichTextArea.FontSize.X_LARGE,
RichTextArea.FontSize.XX_LARGE };
- private static final String FONT_GROUP = "fontgroup";
- private static final String FONT_SIZEGROUP = "fontsizegroup";
- private RTEditorView view;
+ private GuiActionDescCollection actions;
+ protected boolean attached;
+ private final GuiAddCondition basicAddCond;
+ private PushButtonDescriptor bold;
+ private MenuCheckItemDescriptor currentFontItem;
+ private final SchedulerManager deferred;
+ private final Provider<EditHtmlDialog> editHtmlDialogPv;
+ private MenuDescriptor editMenu;
private boolean extended;
+ private final GuiAddCondition extendedAddCond;
+ private MenuDescriptor fileMenu;
+ private final Map<String, MenuCheckItemDescriptor> fontActions;
+ private MenuDescriptor fontMenu;
+ private MenuDescriptor fontSizeMenu;
+ private MenuDescriptor formatMenu;
private final I18nTranslationService i18n;
- private final Session session;
private final RTEImgResources imgResources;
- private final Event0 onEdit;
- private final DeferredCommandWrapper deferred;
- private final Provider<ColorWebSafePalette> paletteProvider;
+ private final InputMap inputMap;
+ private final Provider<InsertSpecialCharDialog> insCharDialogProv;
+ protected Listener<String> insCharListener;
+ private MenuDescriptor insertMenu;
+ private final Provider<InsertImageDialog> insImgDialogProv;
+ private Listener<ImageInfo> insImgListener;
private final Provider<InsertLinkDialog> insLinkDialogPv;
- private final Provider<EditHtmlDialog> editHtmlDialogPv;
- private final Provider<InsertImageDialog> insImgDialogProv;
+ private Listener<LinkInfo> insLinkListener;
+ private final Provider<InsertMediaDialog> insMediaDialogPv;
+ private Listener<String> insMediaListener;
private final Provider<InsertTableDialog> insTableDialogPv;
- private final Provider<InsertSpecialCharDialog> insCharDialogProv;
- private final Provider<InsertMediaDialog> insMediaDialogPv;
private Listener<String> insTableListener;
- private Listener<LinkInfo> insLinkListener;
- private Listener<ImageInfo> insImgListener;
- private Listener<String> insMediaListener;
- private Listener<String> updHtmlListener;
- protected Listener<String> insCharListener;
- protected ColorWebSafePalette palette;
- private PushButtonDescriptor bold;
private PushButtonDescriptor italic;
- private PushButtonDescriptor underline;
- private PushButtonDescriptor strikethrough;
- private final GuiAddCondition basicAddCond;
- private final GuiAddCondition extendedAddCond;
- private final InputMap inputMap;
- private MenuDescriptor editMenu;
- private MenuDescriptor insertMenu;
- private MenuDescriptor formatMenu;
private MenuDescriptor linkCtxMenu;
- private GuiActionDescCollection actions;
- private MenuDescriptor fontMenu;
- private MenuDescriptor fontSizeMenu;
- private MenuDescriptor fileMenu;
private final List<MenuDescriptor> menus;
- protected boolean attached;
- private final Map<String, MenuCheckItemDescriptor> fontActions;
- private MenuCheckItemDescriptor currentFontItem;
+ private final Event0 onEdit;
+ protected ColorWebSafePalette palette;
+ private final Provider<ColorWebSafePalette> paletteProvider;
+ private final Session session;
+ private PushButtonDescriptor strikethrough;
+ private PushButtonDescriptor underline;
+ private Listener<String> updHtmlListener;
+ private RTEditorView view;
public RTEditorPresenter(final I18nTranslationService i18n, final Session session,
final RTEImgResources imgResources, final Provider<InsertLinkDialog> insLinkDialog,
final Provider<ColorWebSafePalette> palette, final Provider<EditHtmlDialog> editHtmlDialog,
final Provider<InsertImageDialog> insertImageDialog, final Provider<InsertMediaDialog> insertMediaDialog,
final Provider<InsertTableDialog> insertTableDialog, final Provider<InsertSpecialCharDialog> insCharDialog,
- final DeferredCommandWrapper deferred) {
+ final SchedulerManager deferred) {
super();
this.i18n = i18n;
this.session = session;
@@ -700,11 +752,13 @@
this.imgResources = imgResources;
this.onEdit = new Event0("onRTEEdit");
extendedAddCond = new GuiAddCondition() {
+ @Override
public boolean mustBeAdded() {
return isAndCanBeExtended();
}
};
basicAddCond = new GuiAddCondition() {
+ @Override
public boolean mustBeAdded() {
return view.canBeBasic();
}
@@ -719,6 +773,7 @@
checkForMenus(descriptor);
}
+ @Override
public void addOnEditListener(final Listener0 listener) {
onEdit.add(listener);
}
@@ -727,6 +782,7 @@
view.adjustSize(height);
}
+ @Override
public void attach() {
if (!attached) {
attached = true;
@@ -735,146 +791,6 @@
}
}
- public void detach() {
- // Nothing at the moment
- }
-
- public void fireOnEdit() {
- onEdit.fire();
- }
-
- public GuiAddCondition getBasicAddCondition() {
- return basicAddCond;
- }
-
- public MenuDescriptor getEditMenu() {
- return editMenu;
- }
-
- public View getEditorArea() {
- return view;
- }
-
- public GuiAddCondition getExtendedAddCondition() {
- return extendedAddCond;
- }
-
- public MenuDescriptor getFileMenu() {
- return fileMenu;
- }
-
- public MenuDescriptor getFormatMenu() {
- return formatMenu;
- }
-
- public String getHtml() {
- return view.getHTML();
- }
-
- public MenuDescriptor getInsertMenu() {
- return insertMenu;
- }
-
- public MenuDescriptor getLinkCtxMenu() {
- return linkCtxMenu;
- }
-
- public View getSndBar() {
- return view.getSndBar();
- }
-
- public String getText() {
- return view.getText();
- }
-
- public View getTopBar() {
- return view.getTopBar();
- }
-
- public void init(final RTEditorView view) {
- this.view = view;
- createMainMenus();
- createBasicActions();
- }
-
- public void onEditorFocus() {
- hideMenus();
- }
-
- public void onLostFocus() {
- // Nothing for the moment
- }
-
- public void reset() {
- hideMenus();
- hideLinkCtxMenu();
- }
-
- public void setActionShortcut(final KeyStroke key, final AbstractAction action) {
- inputMap.put(key, action);
- action.setShortcut(key);
- }
-
- public void setActionShortcut(final KeyStroke key, final AbstractAction mainAction, final AbstractAction... actions) {
- setActionShortcut(key, mainAction);
- for (final AbstractAction action : actions) {
- action.setShortcut(key);
- }
- }
-
- public void setExtended(final boolean newValue) {
- this.extended = newValue;
- }
-
- public void setFocus(final boolean focus) {
- view.setFocus(focus);
- }
-
- public void setHtml(final String html) {
- view.setHTML(html);
- view.focus();
- }
-
- public void setLocation(final String location, final GuiActionDescrip... descripts) {
- for (final GuiActionDescrip descript : descripts) {
- descript.setLocation(location);
- }
- }
-
- public void setText(final String text) {
- view.setText(text);
- view.focus();
- }
-
- public void updateLinkInfo() {
- deferred.addCommand(new Listener0() {
- public void onEvent() {
- if (isAndCanBeExtended() && view.isLink()) {
- view.showLinkCtxMenu();
- } else {
- hideLinkCtxMenu();
- }
- }
- });
- }
-
- public void updateStatus() {
- if (view.canBeBasic()) {
- bold.setPushed(view.isBold());
- italic.setPushed(view.isItalic());
- underline.setPushed(view.isUnderlined());
- deferred.addCommand(new Listener0() {
- public void onEvent() {
- updateFont();
- // Log.warn(view.getFontSize());
- }
- });
- }
- if (isAndCanBeExtended()) {
- strikethrough.setPushed(view.isStrikethrough());
- }
- }
-
private void attachActions() {
for (final GuiActionDescrip descriptor : actions) {
view.addAction(descriptor);
@@ -1160,6 +1076,75 @@
}
}
+ @Override
+ public void detach() {
+ // Nothing at the moment
+ }
+
+ public void fireOnEdit() {
+ onEdit.fire();
+ }
+
+ @Override
+ public GuiAddCondition getBasicAddCondition() {
+ return basicAddCond;
+ }
+
+ @Override
+ public MenuDescriptor getEditMenu() {
+ return editMenu;
+ }
+
+ @Override
+ public View getEditorArea() {
+ return view;
+ }
+
+ @Override
+ public GuiAddCondition getExtendedAddCondition() {
+ return extendedAddCond;
+ }
+
+ @Override
+ public MenuDescriptor getFileMenu() {
+ return fileMenu;
+ }
+
+ @Override
+ public MenuDescriptor getFormatMenu() {
+ return formatMenu;
+ }
+
+ @Override
+ public String getHtml() {
+ return view.getHTML();
+ }
+
+ @Override
+ public MenuDescriptor getInsertMenu() {
+ return insertMenu;
+ }
+
+ @Override
+ public MenuDescriptor getLinkCtxMenu() {
+ return linkCtxMenu;
+ }
+
+ @Override
+ public View getSndBar() {
+ return view.getSndBar();
+ }
+
+ @Override
+ public String getText() {
+ return view.getText();
+ }
+
+ @Override
+ public View getTopBar() {
+ return view.getTopBar();
+ }
+
private void hideLinkCtxMenu() {
if (view.isCtxMenuVisible()) {
view.hideLinkCtxMenu();
@@ -1175,10 +1160,73 @@
}
}
+ public void init(final RTEditorView view) {
+ this.view = view;
+ createMainMenus();
+ createBasicActions();
+ }
+
private boolean isAndCanBeExtended() {
return extended && view.canBeExtended();
}
+ public void onEditorFocus() {
+ hideMenus();
+ }
+
+ public void onLostFocus() {
+ // Nothing for the moment
+ }
+
+ @Override
+ public void reset() {
+ hideMenus();
+ hideLinkCtxMenu();
+ }
+
+ @Override
+ public void setActionShortcut(final KeyStroke key, final AbstractAction action) {
+ inputMap.put(key, action);
+ action.setShortcut(key);
+ }
+
+ @Override
+ public void setActionShortcut(final KeyStroke key, final AbstractAction mainAction, final AbstractAction... actions) {
+ setActionShortcut(key, mainAction);
+ for (final AbstractAction action : actions) {
+ action.setShortcut(key);
+ }
+ }
+
+ @Override
+ public void setExtended(final boolean newValue) {
+ this.extended = newValue;
+ }
+
+ @Override
+ public void setFocus(final boolean focus) {
+ view.setFocus(focus);
+ }
+
+ @Override
+ public void setHtml(final String html) {
+ view.setHTML(html);
+ view.focus();
+ }
+
+ @Override
+ public void setLocation(final String location, final GuiActionDescrip... descripts) {
+ for (final GuiActionDescrip descript : descripts) {
+ descript.setLocation(location);
+ }
+ }
+
+ @Override
+ public void setText(final String text) {
+ view.setText(text);
+ view.focus();
+ }
+
private void updateFont() {
final String currentFont = view.getFont();
final MenuCheckItemDescriptor item = fontActions.get(currentFont);
@@ -1193,4 +1241,35 @@
fontMenu.setText((String) item.getValue(FontAction.FONT_NAME));
}
}
+
+ public void updateLinkInfo() {
+ deferred.addCommand(new ScheduledCommand() {
+ @Override
+ public void execute() {
+ if (isAndCanBeExtended() && view.isLink()) {
+ view.showLinkCtxMenu();
+ } else {
+ hideLinkCtxMenu();
+ }
+ }
+ });
+ }
+
+ public void updateStatus() {
+ if (view.canBeBasic()) {
+ bold.setPushed(view.isBold());
+ italic.setPushed(view.isItalic());
+ underline.setPushed(view.isUnderlined());
+ deferred.addCommand(new ScheduledCommand() {
+ @Override
+ public void execute() {
+ updateFont();
+ // Log.warn(view.getFontSize());
+ }
+ });
+ }
+ if (isAndCanBeExtended()) {
+ strikethrough.setPushed(view.isStrikethrough());
+ }
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -20,10 +20,11 @@
import org.ourproject.kune.platf.client.ui.rte.insertmedia.InsertMediaDialog;
import org.ourproject.kune.platf.client.ui.rte.insertspecialchar.InsertSpecialCharDialog;
import org.ourproject.kune.platf.client.ui.rte.inserttable.InsertTableDialog;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
-import org.ourproject.kune.platf.client.utils.TimerWrapper;
import cc.kune.common.client.actions.BeforeActionListener;
+import cc.kune.common.client.utils.SchedulerManager;
+import cc.kune.common.client.utils.TimerWrapper;
+import cc.kune.common.client.utils.TimerWrapper.Executer;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -31,6 +32,7 @@
import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
import com.calclab.suco.client.ioc.Provider;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.resources.client.ImageResource;
@@ -41,6 +43,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
// bitwise, similar to: autoSave = !autoSave; but fast
autoSave ^= true;
@@ -57,6 +60,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
onCancelImpl();
}
@@ -66,6 +70,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
onDoSaveImpl();
}
@@ -76,6 +81,7 @@
super(text, tooltip, icon);
}
+ @Override
public void actionPerformed(final ActionEvent actionEvent) {
if (savePending) {
timer.cancel();
@@ -89,27 +95,27 @@
public static final int AUTOSAVE_AFTER_FAIL_MILLS = 20000;
public static final int AUTOSAVE_IN_MILLIS = 10000;
private boolean autoSave;
+ private final BeforeActionListener beforeStateChg;
+ private final SchedulerManager deferred;
+ private final I18nTranslationService i18n;
+ private final RTEImgResources imgResources;
+ private Listener0 onEditCancelled;
+ private Listener<String> onSave;
+ SaveAction saveAction;
+ private boolean saveCloseConfirmed;
+ private SaveAction saveMenuAction;
private boolean savePending;
- private boolean saveCloseConfirmed;
- private Listener<String> onSave;
- private Listener0 onEditCancelled;
- private final RTEImgResources imgResources;
+ private final StateManager stateManager;
+
private final TimerWrapper timer;
- private final DeferredCommandWrapper deferred;
- private final I18nTranslationService i18n;
- private final StateManager stateManager;
- private final BeforeActionListener beforeStateChg;
private RTESavingEditorView view;
- SaveAction saveAction;
- private SaveAction saveMenuAction;
-
public RTESavingEditorPresenter(final I18nTranslationService i18n, final Session session,
final RTEImgResources imgResources, final Provider<InsertLinkDialog> insLinkDialog,
final Provider<ColorWebSafePalette> palette, final Provider<EditHtmlDialog> editHtmlDialog,
final Provider<InsertImageDialog> insertImageDialog, final Provider<InsertMediaDialog> insertMediaDialog,
final Provider<InsertTableDialog> insertTableDialog, final Provider<InsertSpecialCharDialog> insCharDialog,
- final DeferredCommandWrapper deferred, final boolean autoSave,
+ final SchedulerManager deferred, final boolean autoSave,
final StateManager stateManager, final TimerWrapper timer) {
super(i18n, session, imgResources, insLinkDialog, palette, editHtmlDialog, insertImageDialog, insertMediaDialog, insertTableDialog, insCharDialog, deferred);
this.autoSave = autoSave;
@@ -120,95 +126,36 @@
this.savePending = false;
this.saveCloseConfirmed = false;
this.timer = timer;
- timer.configure(new Listener0() {;
+ timer.configure(new Executer() {;
- public void onEvent() {
+ @Override
+ public void execute() {
onAutoSave();
}
});
super.addOnEditListener(new Listener0() {
+ @Override
public void onEvent() {
onEdit();
}
});
beforeStateChg = new BeforeActionListener() {
+ @Override
public boolean beforeAction() {
return beforeTokenChange();
}
};
}
- public void edit(final String html, final Listener<String> onSave, final Listener0 onEditCancelled) {
- this.onSave = onSave;
- this.onEditCancelled = onEditCancelled;
- super.setHtml(html);
- super.attach();
- stateManager.addBeforeStateChangeListener(beforeStateChg);
- enableSaveBtn(false);
- }
-
- public BeforeActionListener getBeforeSavingListener() {
- return beforeStateChg;
- }
-
- public void init(final RTESavingEditorView view) {
- super.init(view);
- this.view = view;
- createActions();
- }
-
- public boolean isSavePending() {
- return savePending;
- }
-
- public void onDoSaveAndClose() {
- onDoSaveAndCloseImpl();
- }
-
- public void onSavedSuccessful() {
- if (saveCloseConfirmed) {
- onCancelConfirmed();
- } else {
- reset();
- }
- }
-
- public void onSaveFailed() {
- timer.schedule(AUTOSAVE_AFTER_FAIL_MILLS);
- if (saveCloseConfirmed) {
- saveCloseConfirmed = false;
- }
- }
-
- @Override
- public void reset() {
- timer.cancel();
- savePending = false;
- saveCloseConfirmed = false;
- enableSaveBtn(false);
- super.reset();
- }
-
- protected void onAutoSave() {
- onDoSave();
- }
-
- protected void onCancel() {
- onCancelImpl();
- }
-
- protected void onCancelConfirmed() {
- onCancelConfirmedImpl();
- }
-
boolean beforeTokenChange() {
boolean result = false;
if (savePending) {
onCancelImpl();
} else {
- deferred.addCommand(new Listener0() {
- public void onEvent() {
+ deferred.addCommand(new ScheduledCommand() {
+ @Override
+ public void execute() {
onCancelConfirmed();
}
});
@@ -217,20 +164,6 @@
return result;
}
- void onDoSave() {
- onDoSaveImpl();
- }
-
- void onEdit() {
- if (!savePending) {
- savePending = true;
- if (autoSave) {
- timer.schedule(AUTOSAVE_IN_MILLIS);
- }
- enableSaveBtn(true);
- }
- }
-
private void createActions() {
saveAction = new SaveAction(NO_TEXT, i18n.t("Save"),imgResources.save());
@@ -272,11 +205,49 @@
addAction(closeItem);
}
+ @Override
+ public void edit(final String html, final Listener<String> onSave, final Listener0 onEditCancelled) {
+ this.onSave = onSave;
+ this.onEditCancelled = onEditCancelled;
+ super.setHtml(html);
+ super.attach();
+ stateManager.addBeforeStateChangeListener(beforeStateChg);
+ enableSaveBtn(false);
+ }
+
private void enableSaveBtn(final boolean enabled) {
saveAction.setEnabled(enabled);
saveMenuAction.setEnabled(enabled);
}
+ @Override
+ public BeforeActionListener getBeforeSavingListener() {
+ return beforeStateChg;
+ }
+
+ public void init(final RTESavingEditorView view) {
+ super.init(view);
+ this.view = view;
+ createActions();
+ }
+
+ @Override
+ public boolean isSavePending() {
+ return savePending;
+ }
+
+ protected void onAutoSave() {
+ onDoSave();
+ }
+
+ protected void onCancel() {
+ onCancelImpl();
+ }
+
+ protected void onCancelConfirmed() {
+ onCancelConfirmedImpl();
+ }
+
private void onCancelConfirmedImpl() {
stateManager.removeBeforeStateChangeListener(beforeStateChg);
stateManager.resumeTokenChange();
@@ -289,11 +260,13 @@
if (savePending) {
timer.cancel();
final Listener0 onYes = new Listener0() {
+ @Override
public void onEvent() {
onDoSaveAndCloseImpl();
}
};
final Listener0 onCancel = new Listener0() {
+ @Override
public void onEvent() {
onCancelConfirmedImpl();
}
@@ -309,6 +282,14 @@
onEditCancelled.onEvent();
}
+ void onDoSave() {
+ onDoSaveImpl();
+ }
+
+ public void onDoSaveAndClose() {
+ onDoSaveAndCloseImpl();
+ }
+
private void onDoSaveAndCloseImpl() {
saveCloseConfirmed = true;
onDoSaveImpl();
@@ -317,4 +298,40 @@
private void onDoSaveImpl() {
onSave.onEvent(super.getHtml());
}
+
+ void onEdit() {
+ if (!savePending) {
+ savePending = true;
+ if (autoSave) {
+ timer.schedule(AUTOSAVE_IN_MILLIS);
+ }
+ enableSaveBtn(true);
+ }
+ }
+
+ @Override
+ public void onSavedSuccessful() {
+ if (saveCloseConfirmed) {
+ onCancelConfirmed();
+ } else {
+ reset();
+ }
+ }
+
+ @Override
+ public void onSaveFailed() {
+ timer.schedule(AUTOSAVE_AFTER_FAIL_MILLS);
+ if (saveCloseConfirmed) {
+ saveCloseConfirmed = false;
+ }
+ }
+
+ @Override
+ public void reset() {
+ timer.cancel();
+ savePending = false;
+ saveCloseConfirmed = false;
+ enableSaveBtn(false);
+ super.reset();
+ }
}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/utils/Convert.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/utils/Convert.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/utils/Convert.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -1,29 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.platf.client.utils;
-
-public final class Convert {
- public static int toInt(final String value) {
- return Integer.valueOf(value);
- }
-
- private Convert() {
- };
-}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/utils/DeferredCommandWrapper.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/utils/DeferredCommandWrapper.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/utils/DeferredCommandWrapper.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -1,45 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.platf.client.utils;
-
-import com.calclab.suco.client.events.Listener0;
-import com.google.gwt.core.client.Scheduler;
-import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-
-/**
- * The Class DeferredCommandWrapper is a wrapper of the GWT DeferredCommand
- * (used for testing classes without GWT dependencies).
- */
-public class DeferredCommandWrapper {
-
- /**
- * Adds the command.
- *
- * @param command
- * the listener
- */
- public void addCommand(final Listener0 command) {
- Scheduler.get().scheduleDeferred(new ScheduledCommand() {
- public void execute() {
- command.onEvent();
- }
- });
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/utils/TimerWrapper.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/utils/TimerWrapper.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/utils/TimerWrapper.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -1,36 +0,0 @@
-package org.ourproject.kune.platf.client.utils;
-
-import com.calclab.suco.client.events.Listener0;
-import com.google.gwt.user.client.Timer;
-
-public class TimerWrapper {
- private Timer timer;
-
- public TimerWrapper() {
- }
-
- public void cancel() {
- timer.cancel();
- }
-
- public void configure(final Listener0 onTime) {
- timer = new Timer() {
- @Override
- public void run() {
- onTime.onEvent();
- }
- };
- }
-
- public void run() {
- timer.run();
- }
-
- public void schedule(final int delayMillis) {
- timer.schedule(delayMillis);
- }
-
- public void scheduleRepeating(final int delayMillis) {
- timer.scheduleRepeating(delayMillis);
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/utils/Url.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/utils/Url.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/utils/Url.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -1,63 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- \*/
-package org.ourproject.kune.platf.client.utils;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class Url {
- private final String base;
- private final List<UrlParam> params;
-
- public Url(final String base) {
- this.base = base;
- params = new ArrayList<UrlParam>();
- }
-
- public Url(final String base, final UrlParam... iniParams) {
- this(base);
- for (UrlParam param : iniParams) {
- addImpl(param);
- }
- }
-
- public void add(final UrlParam param) {
- addImpl(param);
- }
-
- @Override
- public String toString() {
- String paramPart = "";
- boolean first = true;
- for (UrlParam param : params) {
- if (first) {
- paramPart = "?" + param;
- first = false;
- } else {
- paramPart += "&" + param;
- }
- }
- return base + paramPart;
- }
-
- private void addImpl(final UrlParam param) {
- params.add(param);
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/utils/UrlParam.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/utils/UrlParam.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/utils/UrlParam.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -1,48 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- \*/
-package org.ourproject.kune.platf.client.utils;
-
-public class UrlParam {
- private final String value;
- private final String name;
-
- public UrlParam(String name, boolean value) {
- this.name = name;
- this.value = value ? "true" : "false";
- }
-
- public UrlParam(String name, String value) {
- this.name = name;
- this.value = value;
- }
-
- public String getName() {
- return name;
- }
-
- public String getValue() {
- return value;
- }
-
- @Override
- public String toString() {
- return name + "=" + value;
- }
-}
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -25,7 +25,6 @@
import static org.ourproject.kune.wiki.client.WikiClientTool.TYPE_WIKIPAGE;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.wiki.client.cnt.WikiViewer;
import org.ourproject.kune.workspace.client.AbstractFoldableContentActions;
import org.ourproject.kune.workspace.client.cnt.ContentActionRegistry;
@@ -39,6 +38,7 @@
import org.ourproject.kune.workspace.client.upload.FileUploader;
import org.ourproject.kune.workspace.client.wave.WaveInsert;
+import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.rpcservices.ContentServiceAsync;
@@ -51,7 +51,7 @@
public class WikiClientActions extends AbstractFoldableContentActions {
public WikiClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator,
final Session session, final StateManager stateManager,
- final DeferredCommandWrapper deferredCommandWrapper,
+ final SchedulerManager deferredCommandWrapper,
final Provider<ContentServiceAsync> contentServiceProvider,
final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider,
final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -24,7 +24,6 @@
import org.ourproject.kune.platf.client.services.AbstractExtendedModule;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.rte.insertmedia.abstractmedia.MediaUtils;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.wiki.client.cnt.WikiFolderContent;
import org.ourproject.kune.wiki.client.cnt.WikiFolderContentPanel;
import org.ourproject.kune.wiki.client.cnt.WikiFolderContentPresenter;
@@ -50,6 +49,7 @@
import org.ourproject.kune.workspace.client.upload.FileUploader;
import org.ourproject.kune.workspace.client.wave.WaveInsert;
+import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.rpcservices.ContentServiceAsync;
@@ -79,7 +79,7 @@
@Override
public WikiClientActions create() {
return new WikiClientActions(i(I18nUITranslationService.class), i(ContextNavigator.class),
- i(Session.class), i(StateManager.class), i(DeferredCommandWrapper.class),
+ i(Session.class), i(StateManager.class), i(SchedulerManager.class),
p(ContentServiceAsync.class), p(GroupServiceAsync.class), p(FileUploader.class),
i(ContentActionRegistry.class), i(ContextActionRegistry.class), p(FileDownloadUtils.class),
i(EntityHeader.class), p(ContentEditor.class), i(ErrorHandler.class), i(WikiViewer.class),
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -33,7 +33,6 @@
import org.ourproject.kune.platf.client.actions.RadioMustBeChecked;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.workspace.client.cnt.ContentActionRegistry;
import org.ourproject.kune.workspace.client.cnt.FoldableContent;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
@@ -46,6 +45,7 @@
import org.ourproject.kune.workspace.client.upload.FileUploader;
import org.ourproject.kune.workspace.client.wave.WaveInsert;
+import cc.kune.common.client.utils.SchedulerManager;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.errors.SessionExpiredException;
import cc.kune.core.client.i18n.I18nUITranslationService;
@@ -67,6 +67,7 @@
import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
import com.calclab.suco.client.ioc.Provider;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.user.client.rpc.AsyncCallback;
public abstract class AbstractFoldableContentActions {
@@ -75,39 +76,38 @@
cnt, ctx
}
- private static final String PUBLICATION_MENU = "Publication";
+ public static final ActionToolbarPosition CONTENT_BOTTOMBAR = new ActionToolbarPosition("afca-ctn-bottom");
public static final ActionToolbarPosition CONTENT_TOPBAR = new ActionToolbarPosition("afca-ctn-top");
- public static final ActionToolbarPosition CONTENT_BOTTOMBAR = new ActionToolbarPosition("afca-ctn-bottom");
+ public static final ActionToolbarPosition CONTEXT_BOTTOMBAR = new ActionToolbarPosition("afca-ctx-bottom");
public static final ActionToolbarPosition CONTEXT_TOPBAR = new ActionToolbarPosition("afca-ctx-top");
- public static final ActionToolbarPosition CONTEXT_BOTTOMBAR = new ActionToolbarPosition("afca-ctx-bottom");
+ private static final String PUBLICATION_MENU = "Publication";
- protected final Session session;
- protected final StateManager stateManager;
- protected final I18nUITranslationService i18n;
+ protected final ContentActionRegistry contentActionRegistry;
protected final Provider<ContentServiceAsync> contentServiceProvider;
- protected final Provider<FileUploader> fileUploaderProvider;
+ protected final ContextActionRegistry contextActionRegistry;
protected final ContextNavigator contextNavigator;
+ protected final Provider<ContextPropEditor> contextPropEditorProvider;
+ protected final SchedulerManager deferredCommandWrapper;
+ protected final EntityHeader entityLogo;
protected final ErrorHandler errorHandler;
- protected final Provider<GroupServiceAsync> groupServiceProvider;
- protected final ContentActionRegistry contentActionRegistry;
- protected final ContextActionRegistry contextActionRegistry;
protected final Provider<FileDownloadUtils> fileDownloadProvider;
- protected final Provider<ContentEditor> textEditorProvider;
- protected final Provider<ContextPropEditor> contextPropEditorProvider;
+ protected final Provider<FileUploader> fileUploaderProvider;
protected final FoldableContent foldableContent;
- protected final DeferredCommandWrapper deferredCommandWrapper;
- protected final EntityHeader entityLogo;
+ protected final Provider<GroupServiceAsync> groupServiceProvider;
+ protected final I18nUITranslationService i18n;
private final SitePublicSpaceLink publicLink;
+ protected final Session session;
+ protected final StateManager stateManager;
+ protected final Provider<ContentEditor> textEditorProvider;
+ private final Provider<WaveInsert> waveInsert;
+
private final WsBackManager wsBackManager;
- private final Provider<WaveInsert> waveInsert;
-
public AbstractFoldableContentActions(final Session session, final StateManager stateManager,
final I18nUITranslationService i18n, final ErrorHandler errorHandler,
- final DeferredCommandWrapper deferredCommandWrapper,
- final Provider<GroupServiceAsync> groupServiceProvider,
+ final SchedulerManager deferredCommandWrapper, final Provider<GroupServiceAsync> groupServiceProvider,
final Provider<ContentServiceAsync> contentServiceProvider,
final Provider<FileUploader> fileUploaderProvider, final ContextNavigator contextNavigator,
final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
@@ -136,6 +136,7 @@
this.waveInsert = waveInsert;
createActions();
session.onInitDataReceived(new Listener<InitDataDTO>() {
+ @Override
public void onEvent(final InitDataDTO parameter) {
createPostSessionInitActions();
}
@@ -160,6 +161,7 @@
final String... registerInTypes) {
final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtn = new ActionToolbarMenuAndItemDescriptor<StateToken>(
AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken stateToken) {
contextNavigator.editItem(stateToken);
}
@@ -176,6 +178,7 @@
final String... registerInTypes) {
final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = new ActionToolbarMenuAndItemDescriptor<StateToken>(
AccessRolDTO.Administrator, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken token) {
NotifyUser.info("Sorry, in development");
}
@@ -192,9 +195,11 @@
final String... registerInTypes) {
final ActionToolbarMenuAndItemDescriptor<StateToken> delContent = new ActionToolbarMenuAndItemDescriptor<StateToken>(
AccessRolDTO.Administrator, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken token) {
contentServiceProvider.get().delContent(session.getUserHash(), token,
new AsyncCallbackSimple<StateContentDTO>() {
+ @Override
public void onSuccess(final StateContentDTO state) {
session.setCurrentState(state);
final StateToken parent = token.copy().clearDocument();
@@ -217,6 +222,7 @@
protected void createDownloadActions(final String typeUploadedfile) {
final ActionToolbarButtonDescriptor<StateToken> download = new ActionToolbarButtonDescriptor<StateToken>(
AccessRolDTO.Viewer, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken token) {
downloadContent(token);
}
@@ -228,6 +234,7 @@
final ActionMenuItemDescriptor<StateToken> downloadCtx = new ActionMenuItemDescriptor<StateToken>(
AccessRolDTO.Viewer, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken token) {
downloadContent(token);
}
@@ -244,19 +251,23 @@
final String... registerInTypes) {
final ActionToolbarButtonDescriptor<StateToken> editContent = new ActionToolbarButtonDescriptor<StateToken>(
AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken stateToken) {
NotifyUser.showProgressProcessing();
session.check(new AsyncCallbackSimple<Void>() {
+ @Override
public void onSuccess(final Void result) {
final ContentEditor editor = textEditorProvider.get();
foldableContent.detach();
contextNavigator.detach();
contextPropEditorProvider.get().attach();
editor.edit(session.getContentState().getContent(), new Listener<String>() {
+ @Override
public void onEvent(final String html) {
NotifyUser.showProgressSaving();
contentServiceProvider.get().save(session.getUserHash(), stateToken, html,
new AsyncCallback<Void>() {
+ @Override
public void onFailure(final Throwable caught) {
NotifyUser.hideProgress();
if (caught instanceof SessionExpiredException) {
@@ -268,6 +279,7 @@
}
}
+ @Override
public void onSuccess(final Void param) {
NotifyUser.hideProgress();
session.getContentState().setContent(html);
@@ -276,10 +288,12 @@
});
}
}, new Listener0() {
+ @Override
public void onEvent() {
// onClose
- deferredCommandWrapper.addCommand(new Listener0() {
- public void onEvent() {
+ deferredCommandWrapper.addCommand(new ScheduledCommand() {
+ @Override
+ public void execute() {
foldableContent.attach();
contextPropEditorProvider.get().detach();
contextNavigator.attach();
@@ -308,6 +322,7 @@
protected ActionMenuItemDescriptor<StateToken> createGoAction(final String... registerInTypes) {
final ActionMenuItemDescriptor<StateToken> go = new ActionMenuItemDescriptor<StateToken>(AccessRolDTO.Viewer,
new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken token) {
stateManager.gotoToken(token);
}
@@ -322,6 +337,7 @@
protected ActionToolbarButtonDescriptor<StateToken> createGoHomeAction(final String... registerInTypes) {
final ActionToolbarButtonDescriptor<StateToken> goGroupHome = new ActionToolbarButtonDescriptor<StateToken>(
AccessRolDTO.Viewer, CONTEXT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken token) {
stateManager.gotoToken(token.getGroup());
}
@@ -329,6 +345,7 @@
goGroupHome.setMustBeAuthenticated(false);
goGroupHome.setIconUrl("images/group-home.png");
goGroupHome.setEnableCondition(new ActionEnableCondition<StateToken>() {
+ @Override
public boolean mustBeEnabled(final StateToken token) {
final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent().getStateToken();
return !session.getCurrentStateToken().equals(defContentToken);
@@ -345,10 +362,12 @@
final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder;
addFolder = new ActionToolbarMenuAndItemDescriptor<StateToken>(AccessRolDTO.Editor, CONTEXT_TOPBAR,
new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken stateToken) {
NotifyUser.showProgressProcessing();
contentServiceProvider.get().addFolder(session.getUserHash(), stateToken, defaultName,
contentTypeId, new AsyncCallbackSimple<StateContainerDTO>() {
+ @Override
public void onSuccess(final StateContainerDTO state) {
contextNavigator.setEditOnNextStateChange(true);
stateManager.setRetrievedState(state);
@@ -368,11 +387,13 @@
final String... registerInTypes) {
final ActionToolbarMenuAndItemDescriptor<StateToken> addContent = new ActionToolbarMenuAndItemDescriptor<StateToken>(
AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener0() {
+ @Override
public void onEvent() {
NotifyUser.showProgressProcessing();
contentServiceProvider.get().addContent(session.getUserHash(),
session.getCurrentState().getStateToken(), description, typeId,
new AsyncCallbackSimple<StateContentDTO>() {
+ @Override
public void onSuccess(final StateContentDTO state) {
contextNavigator.setEditOnNextStateChange(true);
stateManager.setRetrievedState(state);
@@ -394,6 +415,7 @@
final String... registerInTypes) {
final ActionToolbarMenuDescriptor<StateToken> refreshCnt = new ActionToolbarMenuDescriptor<StateToken>(
AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken stateToken) {
stateManager.reload();
contextNavigator.selectItem(stateToken);
@@ -411,6 +433,7 @@
final String... registerInTypes) {
final ActionToolbarMenuDescriptor<StateToken> refreshCtx = new ActionToolbarMenuDescriptor<StateToken>(
AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken stateToken) {
stateManager.reload();
contextNavigator.selectItem(stateToken);
@@ -428,6 +451,7 @@
final String parentMenuTitleCtx, final String textDescription, final String... registerInTypes) {
final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtx = new ActionToolbarMenuAndItemDescriptor<StateToken>(
AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken stateToken) {
contextNavigator.editItem(stateToken);
}
@@ -443,10 +467,12 @@
final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupContent;
setAsDefGroupContent = new ActionToolbarMenuDescriptor<StateToken>(AccessRolDTO.Administrator, CONTENT_TOPBAR,
new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken token) {
NotifyUser.showProgressProcessing();
contentServiceProvider.get().setAsDefaultContent(session.getUserHash(), token,
new AsyncCallbackSimple<ContentSimpleDTO>() {
+ @Override
public void onSuccess(final ContentSimpleDTO defContent) {
session.getCurrentState().getGroup().setDefaultContent(defContent);
NotifyUser.hideProgress();
@@ -466,9 +492,11 @@
protected void createSetGroupBackImageAction(final String parentMenuTitle, final String... registerInTypes) {
final ActionToolbarMenuAndItemDescriptor<StateToken> setGroupBackImage = new ActionToolbarMenuAndItemDescriptor<StateToken>(
AccessRolDTO.Administrator, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken token) {
groupServiceProvider.get().setGroupBackImage(session.getUserHash(), token,
new AsyncCallbackSimple<GroupDTO>() {
+ @Override
public void onSuccess(final GroupDTO newGroup) {
if (session.getCurrentState().getGroup().getShortName().equals(
newGroup.getShortName())) {
@@ -484,6 +512,7 @@
setGroupBackImage.setTextDescription(i18n.t("Set this as the group background image"));
setGroupBackImage.setIconUrl("images/nav/picture.png");
setGroupBackImage.setEnableCondition(new ActionEnableCondition<StateToken>() {
+ @Override
public boolean mustBeEnabled(final StateToken token) {
return session.getContentState().getMimeType().isImage();
}
@@ -495,10 +524,12 @@
final ContentStatus status, final String[] contentsModerated) {
final ActionToolbarMenuRadioDescriptor<StateToken> action = new ActionToolbarMenuRadioDescriptor<StateToken>(
rol, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken stateToken) {
setContentStatus(status, stateToken);
}
}, "ContentRadioStatus", new RadioMustBeChecked() {
+ @Override
public boolean mustBeChecked() {
if (session.getContainerState() instanceof StateContentDTO) {
final ContentStatus currentStatus = session.getContentState().getStatus();
@@ -516,6 +547,7 @@
protected void createShowDeletedItems(final String parentMenuTitle, final String... registerInTypes) {
final ActionToolbarMenuCheckItemDescriptor<StateToken> showDeletedItems = new ActionToolbarMenuCheckItemDescriptor<StateToken>(
AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener0() {
+ @Override
public void onEvent() {
final boolean mustShow = !session.getCurrentUserInfo().getShowDeletedContent();
session.getCurrentUserInfo().setShowDeletedContent(mustShow);
@@ -527,6 +559,7 @@
contextNavigator.refreshState();
}
}, new ActionCheckedCondition() {
+ @Override
public boolean mustBeChecked() {
return session.getShowDeletedContent();
}
@@ -541,6 +574,7 @@
final String... registerInTypes) {
final ActionToolbarMenuDescriptor<StateToken> translateContent = new ActionToolbarMenuDescriptor<StateToken>(
AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken stateToken) {
NotifyUser.important(i18n.t("Sorry, this functionality is currently in development"));
}
@@ -560,6 +594,7 @@
final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile;
uploadFile = new ActionToolbarButtonAndItemDescriptor<StateToken>(AccessRolDTO.Editor, CONTEXT_BOTTOMBAR,
new Listener0() {
+ @Override
public void onEvent() {
if (permitedExtensions != null) {
// FIXME: can't be reset ...
@@ -590,6 +625,7 @@
final String parentMenuTitle, final Position position, final String... registerInTypes) {
final ActionToolbarMenuAndItemDescriptor<StateToken> addWave = new ActionToolbarMenuAndItemDescriptor<StateToken>(
AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener<StateToken>() {
+ @Override
public void onEvent(final StateToken parentToken) {
waveInsert.get().show(parentToken);
}
@@ -609,6 +645,7 @@
private ActionEnableCondition<StateToken> notDefAndNotDeleted() {
return new ActionEnableCondition<StateToken>() {
+ @Override
public boolean mustBeEnabled(final StateToken token) {
final boolean isNotDefContentToken = !session.getCurrentState().getGroup().getDefaultContent().getStateToken().equals(
session.getCurrentStateToken());
@@ -619,6 +656,7 @@
private ActionEnableCondition<StateToken> notDeleted() {
return new ActionEnableCondition<StateToken>() {
+ @Override
public boolean mustBeEnabled(final StateToken token) {
final boolean isNotDeleted = !(session.isCurrentStateAContent() && session.getContentState().getStatus().equals(
ContentStatus.inTheDustbin));
@@ -638,6 +676,7 @@
private void setContentStatus(final ContentStatus status, final StateToken stateToken) {
final AsyncCallbackSimple<StateAbstractDTO> callback = new AsyncCallbackSimple<StateAbstractDTO>() {
+ @Override
public void onSuccess(final StateAbstractDTO state) {
if (session.inSameToken(stateToken)) {
session.setCurrentState(state);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -49,8 +49,6 @@
import org.ourproject.kune.platf.client.ui.rte.insertmedia.abstractmedia.MediaUtils;
import org.ourproject.kune.platf.client.ui.rte.insertspecialchar.InsertSpecialCharDialog;
import org.ourproject.kune.platf.client.ui.rte.inserttable.InsertTableDialog;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
-import org.ourproject.kune.platf.client.utils.TimerWrapper;
import org.ourproject.kune.workspace.client.cnt.ActionContentToolbar;
import org.ourproject.kune.workspace.client.cnt.ActionContentToolbarPresenter;
import org.ourproject.kune.workspace.client.cnt.ContentIconsRegistry;
@@ -229,6 +227,8 @@
import org.ourproject.kune.workspace.client.wave.WaveInsertPresenter;
import cc.kune.common.client.noti.NotifyLevelImages;
+import cc.kune.common.client.utils.SchedulerManager;
+import cc.kune.common.client.utils.TimerWrapper;
import cc.kune.core.client.auth.Register;
import cc.kune.core.client.auth.SignIn;
import cc.kune.core.client.errors.ErrorHandler;
@@ -995,7 +995,7 @@
i(Session.class), i(RTEImgResources.class), p(InsertLinkDialog.class),
p(ColorWebSafePalette.class), p(EditHtmlDialog.class), p(InsertImageDialog.class),
p(InsertMediaDialog.class), p(InsertTableDialog.class), p(InsertSpecialCharDialog.class),
- i(DeferredCommandWrapper.class), true, i(StateManager.class), i(SiteSignOutLink.class),
+ i(SchedulerManager.class), true, i(StateManager.class), i(SiteSignOutLink.class),
i(WorkspaceSkeleton.class), i(TimerWrapper.class), i(EntityTitle.class));
final ContentEditorPanel panel = new ContentEditorPanel(presenter, i(I18nUITranslationService.class),
i(GlobalShortcutRegister.class), i(GuiBindingsRegister.class));
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorPresenter.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -21,13 +21,13 @@
import org.ourproject.kune.platf.client.ui.rte.insertspecialchar.InsertSpecialCharDialog;
import org.ourproject.kune.platf.client.ui.rte.inserttable.InsertTableDialog;
import org.ourproject.kune.platf.client.ui.rte.saving.RTESavingEditorPresenter;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
-import org.ourproject.kune.platf.client.utils.TimerWrapper;
import org.ourproject.kune.workspace.client.sitebar.sitesign.SiteSignOutLink;
import org.ourproject.kune.workspace.client.skel.Toolbar;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
import org.ourproject.kune.workspace.client.title.EntityTitle;
+import cc.kune.common.client.utils.SchedulerManager;
+import cc.kune.common.client.utils.TimerWrapper;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -69,7 +69,7 @@
final Provider<ColorWebSafePalette> palette, final Provider<EditHtmlDialog> editHtmlDialog,
final Provider<InsertImageDialog> insertImageDialog, final Provider<InsertMediaDialog> insertMediaDialog,
final Provider<InsertTableDialog> insertTableDialog, final Provider<InsertSpecialCharDialog> insCharDialog,
- final DeferredCommandWrapper deferred, final boolean autoSave, final StateManager stateManager,
+ final SchedulerManager deferred, final boolean autoSave, final StateManager stateManager,
final SiteSignOutLink siteSignOutLink, final WorkspaceSkeleton wspace, final TimerWrapper timer,
final EntityTitle entityTitle) {
super(i18n, session, imgResources, insLinkDialog, palette, editHtmlDialog, insertImageDialog,
Modified: trunk/src/test/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenterTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenterTest.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/test/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenterTest.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -9,9 +9,9 @@
import org.mockito.internal.verification.api.VerificationMode;
import org.ourproject.kune.platf.client.i18n.Resources;
import org.ourproject.kune.platf.client.ui.rte.img.RTEImgResources;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
-import org.ourproject.kune.platf.client.utils.TimerWrapper;
+import cc.kune.common.client.utils.SchedulerManager;
+import cc.kune.common.client.utils.TimerWrapper;
import cc.kune.core.client.i18n.I18nTranslationServiceMocked;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -19,24 +19,29 @@
import com.calclab.suco.client.events.Listener0;
import com.calclab.suco.testing.events.MockedListener;
import com.calclab.suco.testing.events.MockedListener0;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
import com.google.gwt.resources.client.ImageResource;
public class RTESavingEditorPresenterTest {
+ private MockedListener0 cancelListener;
+ private SchedulerManager deferredCommandWrapper;
private RTESavingEditorPresenter presenter;
private MockedListener<String> saveListener;
- private MockedListener0 cancelListener;
private StateManager stateManager;
- private DeferredCommandWrapper deferredCommandWrapper;
private TimerWrapper timer;
private RTESavingEditorView view;
+ private void checkSaveBtnDisabled() {
+ assertFalse(presenter.saveAction.isEnabled());
+ }
+
@Before
public void createObjects() {
final I18nTranslationService i18n = new I18nTranslationServiceMocked();
new Resources(i18n);
stateManager = Mockito.mock(StateManager.class);
- deferredCommandWrapper = Mockito.mock(DeferredCommandWrapper.class);
+ deferredCommandWrapper = Mockito.mock(SchedulerManager.class);
final RTEImgResources imgResources = Mockito.mock(RTEImgResources.class);
final ImageResource img = Mockito.mock(ImageResource.class);
@@ -54,13 +59,23 @@
cancelListener = new MockedListener0();
}
+ private String editAndChangeHistoryToken() {
+ presenter.edit("Text to edit", saveListener, cancelListener);
+ presenter.onEdit();
+ final String newToken = "somegroup";
+ final boolean change = presenter.beforeTokenChange();
+ assertFalse(change);
+ verifyAskConfirmationCalled(Mockito.times(1));
+ return newToken;
+ }
+
@Test
public void historyChangeWithoutPendingMustAccept() {
presenter.edit("Text to edit", saveListener, cancelListener);
final boolean change = presenter.beforeTokenChange();
assertTrue(change);
verifyAskConfirmationCalled(Mockito.never());
- Mockito.verify(deferredCommandWrapper, Mockito.times(1)).addCommand((Listener0) Mockito.anyObject());
+ Mockito.verify(deferredCommandWrapper, Mockito.times(1)).addCommand((ScheduledCommand) Mockito.anyObject());
}
@Test
@@ -127,20 +142,6 @@
assertTrue(saveListener.isCalled(2));
}
- private void checkSaveBtnDisabled() {
- assertFalse(presenter.saveAction.isEnabled());
- }
-
- private String editAndChangeHistoryToken() {
- presenter.edit("Text to edit", saveListener, cancelListener);
- presenter.onEdit();
- final String newToken = "somegroup";
- final boolean change = presenter.beforeTokenChange();
- assertFalse(change);
- verifyAskConfirmationCalled(Mockito.times(1));
- return newToken;
- }
-
private void verifyAskConfirmationCalled(final VerificationMode mode) {
Mockito.verify(view, mode).askConfirmation(Mockito.anyString(), Mockito.anyString(),
(Listener0) Mockito.anyObject(), (Listener0) Mockito.anyObject());
Modified: trunk/src/test/java/org/ourproject/kune/platf/client/utils/UrlTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/client/utils/UrlTest.java 2011-01-28 00:16:03 UTC (rev 1225)
+++ trunk/src/test/java/org/ourproject/kune/platf/client/utils/UrlTest.java 2011-01-28 01:41:24 UTC (rev 1226)
@@ -4,6 +4,9 @@
import org.junit.Test;
+import cc.kune.common.client.utils.Url;
+import cc.kune.common.client.utils.UrlParam;
+
public class UrlTest {
@Test
1
0
Author: vjrj_
Date: 2011-01-28 01:16:03 +0100 (Fri, 28 Jan 2011)
New Revision: 1225
Added:
trunk/src/main/java/cc/kune/common/client/actions/BeforeActionCollection.java
trunk/src/main/java/cc/kune/common/client/actions/BeforeActionListener.java
trunk/src/main/java/cc/kune/common/client/noti/NotifyLevelImages.java
trunk/src/main/java/cc/kune/common/client/noti/NotifyUser.java
trunk/src/main/java/cc/kune/core/client/auth/
trunk/src/main/java/cc/kune/core/client/auth/Register.java
trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java
trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java
trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java
trunk/src/main/java/cc/kune/core/client/auth/RegisterView.java
trunk/src/main/java/cc/kune/core/client/auth/SignIn.java
trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPanel.java
trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java
trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractView.java
trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java
trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java
trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java
trunk/src/main/java/cc/kune/core/client/auth/SignInView.java
trunk/src/main/java/cc/kune/core/client/logs/
trunk/src/main/java/cc/kune/core/client/logs/EventsLogger.java
trunk/src/main/java/cc/kune/core/client/resources/CoreMessages.java
trunk/src/main/java/cc/kune/core/client/resources/accept.png
trunk/src/main/java/cc/kune/core/client/resources/add-green.png
trunk/src/main/java/cc/kune/core/client/resources/add.png
trunk/src/main/java/cc/kune/core/client/resources/alert.png
trunk/src/main/java/cc/kune/core/client/resources/anybody.png
trunk/src/main/java/cc/kune/core/client/resources/arrow-down-black.gif
trunk/src/main/java/cc/kune/core/client/resources/arrow-down-green.png
trunk/src/main/java/cc/kune/core/client/resources/arrow-down-white.gif
trunk/src/main/java/cc/kune/core/client/resources/arrow-left-green.png
trunk/src/main/java/cc/kune/core/client/resources/arrow-right-black.gif
trunk/src/main/java/cc/kune/core/client/resources/arrow-right-green.png
trunk/src/main/java/cc/kune/core/client/resources/arrow-right-white.gif
trunk/src/main/java/cc/kune/core/client/resources/arrow-up-green.png
trunk/src/main/java/cc/kune/core/client/resources/arrow_in.png
trunk/src/main/java/cc/kune/core/client/resources/arrow_out.png
trunk/src/main/java/cc/kune/core/client/resources/arrowdown.gif
trunk/src/main/java/cc/kune/core/client/resources/bullet_add.png
trunk/src/main/java/cc/kune/core/client/resources/bullet_black.png
trunk/src/main/java/cc/kune/core/client/resources/bullet_blue.png
trunk/src/main/java/cc/kune/core/client/resources/bullet_delete.png
trunk/src/main/java/cc/kune/core/client/resources/bullet_green.png
trunk/src/main/java/cc/kune/core/client/resources/bullet_pink.png
trunk/src/main/java/cc/kune/core/client/resources/bullet_purple.png
trunk/src/main/java/cc/kune/core/client/resources/bullet_red.png
trunk/src/main/java/cc/kune/core/client/resources/bullet_star.png
trunk/src/main/java/cc/kune/core/client/resources/bullet_toggle_minus.png
trunk/src/main/java/cc/kune/core/client/resources/bullet_toggle_plus.png
trunk/src/main/java/cc/kune/core/client/resources/bullet_yellow.png
trunk/src/main/java/cc/kune/core/client/resources/button-arrow-down.png
trunk/src/main/java/cc/kune/core/client/resources/button-help-blue.png
trunk/src/main/java/cc/kune/core/client/resources/button-help-dark.png
trunk/src/main/java/cc/kune/core/client/resources/button-help-light.png
trunk/src/main/java/cc/kune/core/client/resources/button15cblue.png
trunk/src/main/java/cc/kune/core/client/resources/button15cdark.png
trunk/src/main/java/cc/kune/core/client/resources/button15clight.png
trunk/src/main/java/cc/kune/core/client/resources/button15cxlight.png
trunk/src/main/java/cc/kune/core/client/resources/button15lblue.png
trunk/src/main/java/cc/kune/core/client/resources/button15ldark.png
trunk/src/main/java/cc/kune/core/client/resources/button15llight.png
trunk/src/main/java/cc/kune/core/client/resources/button15lxlight.png
trunk/src/main/java/cc/kune/core/client/resources/button15rblue.png
trunk/src/main/java/cc/kune/core/client/resources/button15rdark.png
trunk/src/main/java/cc/kune/core/client/resources/button15rlight.png
trunk/src/main/java/cc/kune/core/client/resources/button15rxlight.png
trunk/src/main/java/cc/kune/core/client/resources/button17cblue.png
trunk/src/main/java/cc/kune/core/client/resources/button17cdark.png
trunk/src/main/java/cc/kune/core/client/resources/button17clight.png
trunk/src/main/java/cc/kune/core/client/resources/button17cxlight.png
trunk/src/main/java/cc/kune/core/client/resources/button17lblue.png
trunk/src/main/java/cc/kune/core/client/resources/button17ldark.png
trunk/src/main/java/cc/kune/core/client/resources/button17llight.png
trunk/src/main/java/cc/kune/core/client/resources/button17lxlight.png
trunk/src/main/java/cc/kune/core/client/resources/button17rblue.png
trunk/src/main/java/cc/kune/core/client/resources/button17rdark.png
trunk/src/main/java/cc/kune/core/client/resources/button17rlight.png
trunk/src/main/java/cc/kune/core/client/resources/button17rxlight.png
trunk/src/main/java/cc/kune/core/client/resources/button20cblue.png
trunk/src/main/java/cc/kune/core/client/resources/button20cdark.png
trunk/src/main/java/cc/kune/core/client/resources/button20clight.png
trunk/src/main/java/cc/kune/core/client/resources/button20cxlight.png
trunk/src/main/java/cc/kune/core/client/resources/button20lblue.png
trunk/src/main/java/cc/kune/core/client/resources/button20ldark.png
trunk/src/main/java/cc/kune/core/client/resources/button20llight.png
trunk/src/main/java/cc/kune/core/client/resources/button20lxlight.png
trunk/src/main/java/cc/kune/core/client/resources/button20rblue.png
trunk/src/main/java/cc/kune/core/client/resources/button20rdark.png
trunk/src/main/java/cc/kune/core/client/resources/button20rlight.png
trunk/src/main/java/cc/kune/core/client/resources/button20rxlight.png
trunk/src/main/java/cc/kune/core/client/resources/by80x15.png
trunk/src/main/java/cc/kune/core/client/resources/bync80x15.png
trunk/src/main/java/cc/kune/core/client/resources/byncnd80x15.png
trunk/src/main/java/cc/kune/core/client/resources/byncsa80x15.png
trunk/src/main/java/cc/kune/core/client/resources/bynd80x15.png
trunk/src/main/java/cc/kune/core/client/resources/bysa80x15.png
trunk/src/main/java/cc/kune/core/client/resources/cancel.png
trunk/src/main/java/cc/kune/core/client/resources/clear.png
trunk/src/main/java/cc/kune/core/client/resources/copyleft.png
trunk/src/main/java/cc/kune/core/client/resources/cross-dark.png
trunk/src/main/java/cc/kune/core/client/resources/cross.png
trunk/src/main/java/cc/kune/core/client/resources/del.png
trunk/src/main/java/cc/kune/core/client/resources/emblem-important.png
trunk/src/main/java/cc/kune/core/client/resources/emblem-system.png
trunk/src/main/java/cc/kune/core/client/resources/error.png
trunk/src/main/java/cc/kune/core/client/resources/everybody.png
trunk/src/main/java/cc/kune/core/client/resources/fullscreen.png
trunk/src/main/java/cc/kune/core/client/resources/gnu-fdl.gif
trunk/src/main/java/cc/kune/core/client/resources/group-def-icon.png
trunk/src/main/java/cc/kune/core/client/resources/group-home.png
trunk/src/main/java/cc/kune/core/client/resources/important.png
trunk/src/main/java/cc/kune/core/client/resources/info-light.png
trunk/src/main/java/cc/kune/core/client/resources/info.png
trunk/src/main/java/cc/kune/core/client/resources/kune-close.png
trunk/src/main/java/cc/kune/core/client/resources/kune-external-window.png
trunk/src/main/java/cc/kune/core/client/resources/kune-help-translation-icon.png
trunk/src/main/java/cc/kune/core/client/resources/kune-icon16.png
trunk/src/main/java/cc/kune/core/client/resources/kune-logo-16px.png
trunk/src/main/java/cc/kune/core/client/resources/kune-preferences.png
trunk/src/main/java/cc/kune/core/client/resources/kune-search-ico-push.png
trunk/src/main/java/cc/kune/core/client/resources/kune-search-ico.png
trunk/src/main/java/cc/kune/core/client/resources/language.png
trunk/src/main/java/cc/kune/core/client/resources/no-copyleft.png
trunk/src/main/java/cc/kune/core/client/resources/nobody.png
trunk/src/main/java/cc/kune/core/client/resources/nt.png
trunk/src/main/java/cc/kune/core/client/resources/opentriangle.gif
trunk/src/main/java/cc/kune/core/client/resources/person-def.png
trunk/src/main/java/cc/kune/core/client/resources/person2-60.png
trunk/src/main/java/cc/kune/core/client/resources/remove.png
trunk/src/main/java/cc/kune/core/client/resources/rss-icon.png
trunk/src/main/java/cc/kune/core/client/resources/search-ico.png
trunk/src/main/java/cc/kune/core/client/resources/spin-kune-thund-green.gif
trunk/src/main/java/cc/kune/core/client/resources/splitter-vert-bar.gif
trunk/src/main/java/cc/kune/core/client/resources/star-10.png
trunk/src/main/java/cc/kune/core/client/resources/star-20.png
trunk/src/main/java/cc/kune/core/client/resources/star-30.png
trunk/src/main/java/cc/kune/core/client/resources/star-40.png
trunk/src/main/java/cc/kune/core/client/resources/star-50.png
trunk/src/main/java/cc/kune/core/client/resources/star-60.png
trunk/src/main/java/cc/kune/core/client/resources/star-70.png
trunk/src/main/java/cc/kune/core/client/resources/star-80.png
trunk/src/main/java/cc/kune/core/client/resources/star-90.png
trunk/src/main/java/cc/kune/core/client/resources/star-grey.png
trunk/src/main/java/cc/kune/core/client/resources/star-small-yellow.png
trunk/src/main/java/cc/kune/core/client/resources/star-vsmall-yellow.png
trunk/src/main/java/cc/kune/core/client/resources/star-yellow.png
trunk/src/main/java/cc/kune/core/client/resources/step1.png
trunk/src/main/java/cc/kune/core/client/resources/step2.png
trunk/src/main/java/cc/kune/core/client/resources/step3.png
trunk/src/main/java/cc/kune/core/client/resources/step4.png
trunk/src/main/java/cc/kune/core/client/resources/step5.png
trunk/src/main/java/cc/kune/core/client/resources/theme-choose.png
trunk/src/main/java/cc/kune/core/client/resources/triangle.gif
trunk/src/main/java/cc/kune/core/client/state/SiteTokenListeners.java
trunk/src/main/java/cc/kune/core/client/ui/DefaultForm.java
trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java
trunk/src/main/java/cc/kune/core/client/ui/dialogs/MessageToolbar.java
trunk/src/main/java/org/ourproject/kune/app/client/OldKuneEntryPoint.java
Removed:
trunk/src/main/java/cc/kune/core/client/actions/
trunk/src/main/java/cc/kune/core/client/logs/BeforeActionCollection.java
trunk/src/main/java/cc/kune/core/client/logs/BeforeActionListener.java
trunk/src/main/java/cc/kune/core/client/sitebar/sign/
trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java
trunk/src/main/java/org/ourproject/kune/platf/client/PlatfMessages.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/MessageToolbar.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/Register.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignIn.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInForm.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInView.java
Modified:
trunk/TODO
trunk/TROUBLESHOOT
trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtButtonGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtGuiProvider.java
trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java
trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java
trunk/src/main/java/cc/kune/common/client/ui/PopupPanelBottomCentered.java
trunk/src/main/java/cc/kune/common/client/ui/PopupPanelTopCentered.java
trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java
trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
trunk/src/main/java/cc/kune/core/client/CoreGinjector.java
trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java
trunk/src/main/java/cc/kune/core/client/cookies/CookiesManager.java
trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerImpl.java
trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java
trunk/src/main/java/cc/kune/core/client/resources/CoreResources.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java
trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoPresenter.java
trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoViewImpl.java
trunk/src/main/java/cc/kune/core/client/state/SiteCommonTokens.java
trunk/src/main/java/cc/kune/core/client/state/StateManager.java
trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialog.java
trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialog.ui.xml
trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialogView.java
trunk/src/main/java/cc/kune/core/client/ws/CorePlaceManager.java
trunk/src/main/java/cc/kune/core/client/ws/CorePresenter.java
trunk/src/main/java/cc/kune/core/public/ws.css
trunk/src/main/java/cc/kune/core/public/ws.html
trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml
trunk/src/main/java/org/ourproject/kune/platf/client/services/Images.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/InfoDialog.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialog.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialogPresenter.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialogView.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/edithtml/EditHtmlDialogPanel.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertimg/InsertImageDialogPanel.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertlink/InsertLinkDialogPanel.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertmedia/InsertMediaDialogPanel.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertmedia/ext/InsertMediaExtPresenter.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertspecialchar/InsertSpecialCharDialogPanel.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditor.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceMessages.java
trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java
trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/nohomepage/NoHomePagePanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/options/EntityOptions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/options/GroupOptionsPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/options/UserOptionsPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/options/logo/EntityOptionsLogoPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/options/tools/EntityOptionsToolsConfPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignOutLink.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignOutLinkPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteusermenu/SiteUserOptionsPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java
trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java
Log:
NEW - # 14: Site bar update
http://kune.ourproject.org/issues/ticket/14
Modified: trunk/TODO
===================================================================
--- trunk/TODO 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/TODO 2011-01-28 00:16:03 UTC (rev 1225)
@@ -15,10 +15,8 @@
** Use Emulate Stack Java like src/org/waveprotocol/box/webclient/WebClientDev.gwt.xml
** roo error
[FelixDispatchQueue] Expected string-based content in @RooGwtMirroredFrom on cc.kune.client.managed.request.ContainerTranslationProxyObject of class [org.springframework.roo.classpath.details.annotations.ClassAttributeValue] must be an instance of class org.springframework.roo.classpath.details.annotations.StringAttributeValue
-** spaces navigation
-*** index.html via jruby and loads the app in background...
-**** the sitebar (login/logout), the site logo, etc
-****
+** Gin sharing of instances between injectos
+https://groups.google.com/group/google-gin/browse_thread/thread/203ab1725406bd44/209429fd95366182?lnk=gst&q=multiple+module#209429fd95366182
** Wave integration
[ ] org.waveprotocol.box.webclient.WebClientProd
[ ] src/org/waveprotocol/box/server/ServerMain.java
Modified: trunk/TROUBLESHOOT
===================================================================
--- trunk/TROUBLESHOOT 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/TROUBLESHOOT 2011-01-28 00:16:03 UTC (rev 1225)
@@ -5,6 +5,8 @@
Server: debug with jetty in eclipse:
http://docs.codehaus.org/display/JETTY/Debugging+with+the+Maven+Jetty+Plugi…
+Also for different logging levels you can play with -Dorg.eclipse.jetty.util.log.DEBUG=true (or similars)
+
== Client debug ==
Client code: you can debug with gwt hosted mode in eclipse (see DEV-GUIDE for hosted mode instructions).
@@ -75,5 +77,8 @@
Error: Problem with Eclipse plugin and UiBinder "Field xxx has no corresponding field in template file yyy.ui.xml"
https://code.google.com/p/google-web-toolkit/issues/detail?id=4353
-== Outbound variable M2_REPO ==
-Set M2_REPO to eclipse in Preferences > Java > Build Path > Classpath Variable (normally to /home/youruser/.m2/repository/)
\ No newline at end of file
+=== Outbound variable M2_REPO ===
+
+Set M2_REPO to eclipse in Preferences > Java > Build Path > Classpath Variable (normally to /home/youruser/.m2/repository/)
+
+===
\ No newline at end of file
Copied: trunk/src/main/java/cc/kune/common/client/actions/BeforeActionCollection.java (from rev 1223, trunk/src/main/java/cc/kune/core/client/actions/BeforeActionCollection.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/BeforeActionCollection.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/actions/BeforeActionCollection.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,45 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.common.client.actions;
+
+import java.util.ArrayList;
+
+/**
+ * The Class BeforeActionCollection.
+ */
+public class BeforeActionCollection extends ArrayList<BeforeActionListener> {
+
+ private static final long serialVersionUID = -1508664709628420137L;
+
+ /**
+ * Check before action listeners.
+ *
+ * @return true, if all listener returns true
+ */
+ public boolean checkBeforeAction() {
+ for (BeforeActionListener listener : this) {
+ if (!listener.beforeAction()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/common/client/actions/BeforeActionCollection.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: trunk/src/main/java/cc/kune/common/client/actions/BeforeActionListener.java (from rev 1223, trunk/src/main/java/cc/kune/core/client/actions/BeforeActionListener.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/BeforeActionListener.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/actions/BeforeActionListener.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,31 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.common.client.actions;
+
+public interface BeforeActionListener {
+
+ /**
+ * Return false to cancel the action
+ *
+ * @return
+ */
+ boolean beforeAction();
+
+}
Property changes on: trunk/src/main/java/cc/kune/common/client/actions/BeforeActionListener.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtButtonGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtButtonGui.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtButtonGui.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -28,7 +28,7 @@
}
@Override
- protected void addStyle(String style) {
+ protected void addStyle(final String style) {
button.addStyleName(style);
}
@@ -101,8 +101,10 @@
@Override
public void setVisible(final boolean visible) {
if (button.isRendered()) {
- super.setVisible(visible);
+ // ??
}
+ button.setVisible(visible);
+
}
@Override
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtGuiProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtGuiProvider.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtGuiProvider.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,6 +1,7 @@
package cc.kune.common.client.actions.gxtui;
import cc.kune.common.client.actions.gwtui.GwtIconLabelGui;
+import cc.kune.common.client.actions.gwtui.GwtToolbarSeparatorGui;
import cc.kune.common.client.actions.ui.bind.GuiProvider;
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.common.client.actions.ui.descrip.IconLabelDescriptor;
@@ -24,7 +25,7 @@
final Provider<GxtMenuGui> gxtMenuGui, final Provider<GxtMenuItemGui> gxtMenuItemGui,
final Provider<GxtMenuSeparatorGui> gxtMenuSeparatorGui, final Provider<GxtPushButtonGui> gxtPushButtonGui,
final Provider<GxtButtonGui> gxtButtonGui, final Provider<GwtIconLabelGui> gwtIconLabelGui,
- final Provider<GxtToolbarGui> gxtToolbarGui, final Provider<GxtToolbarSeparatorGui> gxtToolbarSeparatorGui) {
+ final Provider<GxtToolbarGui> gxtToolbarGui, final Provider<GwtToolbarSeparatorGui> gxtToolbarSeparatorGui) {
guiProvider.register(SubMenuDescriptor.class, gxtSubMenuGui);
guiProvider.register(MenuDescriptor.class, gxtMenuGui);
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -23,7 +23,7 @@
this.descriptor = descriptor;
}
- protected void addStyle(String style) {
+ protected void addStyle(final String style) {
super.addStyleName(style);
}
@@ -93,10 +93,10 @@
protected abstract void setIconStyle(String style);
- private void setStyles(String styles) {
+ private void setStyles(final String styles) {
if (styles != null) {
clearStyles();
- for (String style : TextUtils.splitTags(styles)) {
+ for (final String style : TextUtils.splitTags(styles)) {
addStyle(style);
}
}
Added: trunk/src/main/java/cc/kune/common/client/noti/NotifyLevelImages.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/noti/NotifyLevelImages.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/noti/NotifyLevelImages.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,30 @@
+package cc.kune.common.client.noti;
+
+import cc.kune.core.client.resources.CoreResources;
+
+import com.google.gwt.resources.client.ImageResource;
+import com.google.inject.Inject;
+
+public class NotifyLevelImages {
+
+ private final CoreResources images;
+
+ @Inject
+ public NotifyLevelImages(final CoreResources images) {
+ this.images = images;
+ }
+
+ public ImageResource getImage(final NotifyLevel level) {
+ switch (level) {
+ case info:
+ return images.info();
+ case important:
+ return images.important();
+ case veryImportant:
+ return images.alert();
+ case error:
+ default:
+ return images.error();
+ }
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/common/client/noti/NotifyLevelImages.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/common/client/noti/NotifyUser.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/noti/NotifyUser.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/noti/NotifyUser.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,67 @@
+package cc.kune.common.client.noti;
+
+import cc.kune.common.client.utils.SimpleCallback;
+import cc.kune.core.client.notify.msgs.UserNotifyEvent;
+import cc.kune.core.client.notify.spiner.ProgressHideEvent;
+import cc.kune.core.client.notify.spiner.ProgressShowEvent;
+
+import com.google.gwt.event.shared.EventBus;
+
+public class NotifyUser {
+ private static EventBus eventBus;
+ private static SimpleCallback onOk;
+
+ public static void hideProgress() {
+ eventBus.fireEvent(new ProgressHideEvent());
+ }
+
+ public static void important(final String message) {
+ eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.important, message));
+ }
+
+ public static void info(final String message) {
+ eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.info, message));
+ }
+
+ public static void init(final EventBus eventBus) {
+ NotifyUser.eventBus = eventBus;
+ onOk = new SimpleCallback() {
+
+ @Override
+ public void onCancel() {
+ // Do nothing
+ }
+
+ @Override
+ public void onSuccess() {
+ // Do nothing
+ }
+ };
+
+ }
+
+ public static void showAlertMessage(final String title, final String message) {
+ eventBus.fireEvent(new AlertEvent(title, message, onOk));
+ }
+
+ public static void showAlertMessage(final String title, final String message, final SimpleCallback callback) {
+ eventBus.fireEvent(new AlertEvent(title, message, callback));
+ }
+
+ public static void showProgress(final String text) {
+ eventBus.fireEvent(new ProgressShowEvent(text));
+ }
+
+ public static void showProgressLoading() {
+ eventBus.fireEvent(new ProgressShowEvent());
+ }
+
+ public static void showProgressProcessing() {
+ eventBus.fireEvent(new ProgressShowEvent());
+ }
+
+ public static void veryImportant(final String message) {
+ eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.veryImportant, message));
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/common/client/noti/NotifyUser.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -4,16 +4,18 @@
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
+import com.google.gwt.i18n.client.HasDirection.Direction;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FocusPanel;
import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.HasDirectionalText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Widget;
-public class IconLabel extends Composite implements HasWidgets {
+public class IconLabel extends Composite implements HasWidgets, HasDirectionalText {
interface IconTitleUiBinder extends UiBinder<Widget, IconLabel> {
}
@@ -21,12 +23,16 @@
private static IconTitleUiBinder uiBinder = GWT.create(IconTitleUiBinder.class);
@UiField
+ HorizontalPanel hp;
+ @UiField
HTML label;
@UiField
- HorizontalPanel hp;
- @UiField
FocusPanel self;
+ public IconLabel() {
+ this("");
+ }
+
public IconLabel(final String text) {
initWidget(uiBinder.createAndBindUi(this));
label.setText(text);
@@ -51,6 +57,16 @@
}
@Override
+ public String getText() {
+ return label.getText();
+ }
+
+ @Override
+ public Direction getTextDirection() {
+ return label.getTextDirection();
+ }
+
+ @Override
public Iterator<Widget> iterator() {
return hp.iterator();
}
@@ -69,7 +85,13 @@
label.setHTML(html);
}
+ @Override
public void setText(final String text) {
label.setText(text);
}
+
+ @Override
+ public void setText(final String text, final Direction dir) {
+ label.setText(text, dir);
+ }
}
Modified: trunk/src/main/java/cc/kune/common/client/ui/PopupPanelBottomCentered.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/PopupPanelBottomCentered.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/common/client/ui/PopupPanelBottomCentered.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -13,12 +13,12 @@
init();
}
- public PopupPanelBottomCentered(boolean autohide) {
+ public PopupPanelBottomCentered(final boolean autohide) {
super(autohide);
init();
}
- public PopupPanelBottomCentered(boolean autohide, boolean modal) {
+ public PopupPanelBottomCentered(final boolean autohide, final boolean modal) {
super(autohide, modal);
init();
}
@@ -30,7 +30,7 @@
addStyleName("k-top-10corners");
Window.addResizeHandler(new ResizeHandler() {
@Override
- public void onResize(ResizeEvent event) {
+ public void onResize(final ResizeEvent event) {
setCenterPositionImpl();
}
});
@@ -41,15 +41,19 @@
}
private void setCenterPositionImpl() {
- Widget widget = getWidget();
- int x = (Window.getClientWidth() - (widget != null ? getWidget().getOffsetWidth() : 0)) / 2;
- int y = Window.getClientHeight() - (widget != null ? getWidget().getOffsetHeight() : 0);
- setPopupPosition(x, y);
+ setPopupPositionAndShow(new PopupPanel.PositionCallback() {
+ @Override
+ public void setPosition(final int offsetWidth, final int offsetHeight) {
+ final Widget widget = getWidget();
+ final int x = (Window.getClientWidth() - (widget != null ? getWidget().getOffsetWidth() : 0)) / 2;
+ final int y = Window.getClientHeight() - (widget != null ? getWidget().getOffsetHeight() : 0);
+ PopupPanelBottomCentered.this.setPopupPosition(x, y);
+ }
+ });
+
}
- @Override
- public void show() {
- super.show();
- setCenterPosition();
+ public void showCentered() {
+ setCenterPositionImpl();
}
}
Modified: trunk/src/main/java/cc/kune/common/client/ui/PopupPanelTopCentered.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/PopupPanelTopCentered.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/common/client/ui/PopupPanelTopCentered.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -4,7 +4,6 @@
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.PopupPanel;
-import com.google.gwt.user.client.ui.Widget;
public class PopupPanelTopCentered extends PopupPanel {
public PopupPanelTopCentered() {
@@ -12,12 +11,12 @@
init();
}
- public PopupPanelTopCentered(boolean autohide) {
+ public PopupPanelTopCentered(final boolean autohide) {
super(autohide);
init();
}
- public PopupPanelTopCentered(boolean autohide, boolean modal) {
+ public PopupPanelTopCentered(final boolean autohide, final boolean modal) {
super(autohide, modal);
init();
}
@@ -29,7 +28,7 @@
addStyleName("k-bottom-10corners");
Window.addResizeHandler(new ResizeHandler() {
@Override
- public void onResize(ResizeEvent event) {
+ public void onResize(final ResizeEvent event) {
setCenterPositionImpl();
}
});
@@ -40,15 +39,17 @@
}
private void setCenterPositionImpl() {
- Widget widget = getWidget();
- int x = (Window.getClientWidth() - (widget != null ? getWidget().getOffsetWidth() : 0)) / 2;
- int y = 0;
- setPopupPosition(x, y);
+ setPopupPositionAndShow(new PopupPanel.PositionCallback() {
+ @Override
+ public void setPosition(final int offsetWidth, final int offsetHeight) {
+ final int x = (Window.getClientWidth() - (getWidget() != null ? getWidget().getOffsetWidth() : 0)) / 2;
+ final int y = 0;
+ PopupPanelTopCentered.this.setPopupPosition(x, y);
+ }
+ });
}
- @Override
- public void show() {
- super.show();
- setCenterPosition();
+ public void showCentered() {
+ setCenterPositionImpl();
}
}
Modified: trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -61,6 +61,10 @@
return "<a href=\"" + href + "\" target=\"_blank\">" + text + "</a>";
}
+ public static boolean notEmpty(final String string) {
+ return string != null & string.length() > 0;
+ }
+
public static String removeLastSlash(final String text) {
return text.replaceFirst("/$", "");
}
Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,10 +1,19 @@
package cc.kune.core.client;
+import cc.kune.common.client.actions.gwtui.GwtGuiProvider;
import cc.kune.common.client.actions.gxtui.GxtGuiProvider;
import cc.kune.common.client.actions.ui.bind.DefaultGuiProvider;
import cc.kune.common.client.actions.ui.bind.GuiProvider;
import cc.kune.common.client.shortcuts.DefaultGlobalShortcutRegister;
import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
+import cc.kune.core.client.auth.Register;
+import cc.kune.core.client.auth.RegisterPanel;
+import cc.kune.core.client.auth.RegisterPresenter;
+import cc.kune.core.client.auth.RegisterView;
+import cc.kune.core.client.auth.SignIn;
+import cc.kune.core.client.auth.SignInPanel;
+import cc.kune.core.client.auth.SignInPresenter;
+import cc.kune.core.client.auth.SignInView;
import cc.kune.core.client.cookies.CookiesManager;
import cc.kune.core.client.cookies.CookiesManagerImpl;
import cc.kune.core.client.errors.ErrorHandler;
@@ -12,6 +21,7 @@
import cc.kune.core.client.init.AppStarter;
import cc.kune.core.client.init.AppStarterDefault;
import cc.kune.core.client.init.PrefetchUtilities;
+import cc.kune.core.client.logs.EventsLogger;
import cc.kune.core.client.notify.msgs.UserNotifierPresenter;
import cc.kune.core.client.notify.msgs.UserNotifierPresenter.UserNotifierProxy;
import cc.kune.core.client.notify.msgs.UserNotifierViewImpl;
@@ -33,10 +43,10 @@
import cc.kune.core.client.state.HistoryWrapperDefault;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.SessionDefault;
+import cc.kune.core.client.state.SiteTokenListeners;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.client.state.StateManagerDefault;
import cc.kune.core.client.ui.QTipsHelper;
-import cc.kune.core.client.ws.CorePlaceManager;
import cc.kune.core.client.ws.CorePresenter;
import cc.kune.core.client.ws.CoreViewImpl;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -52,7 +62,6 @@
import com.gwtplatform.mvp.client.RootPresenter;
import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
import com.gwtplatform.mvp.client.proxy.ParameterTokenFormatter;
-import com.gwtplatform.mvp.client.proxy.PlaceManager;
import com.gwtplatform.mvp.client.proxy.ProxyFailureHandler;
import com.gwtplatform.mvp.client.proxy.TokenFormatter;
@@ -66,14 +75,18 @@
@Override
protected void configure() {
bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class);
- bind(PlaceManager.class).to(CorePlaceManager.class).in(Singleton.class);
+ // bind(PlaceManager.class).to(CorePlaceManager.class).in(Singleton.class);
bind(TokenFormatter.class).to(ParameterTokenFormatter.class).in(Singleton.class);
bind(RootPresenter.class).asEagerSingleton();
bind(QTipsHelper.class).asEagerSingleton();
+ bind(EventsLogger.class).asEagerSingleton();
bind(ProxyFailureHandler.class).to(DefaultProxyFailureHandler.class).in(Singleton.class);
+ bind(I18nUITranslationService.class).in(Singleton.class);
+ bind(I18nTranslationService.class).to(I18nUITranslationService.class).in(Singleton.class);
bind(GuiProvider.class).to(DefaultGuiProvider.class).in(Singleton.class);
bind(GxtGuiProvider.class).in(Singleton.class);
+ bind(GwtGuiProvider.class).in(Singleton.class);
bind(GlobalShortcutRegister.class).to(DefaultGlobalShortcutRegister.class).in(Singleton.class);
// Presenters
@@ -91,6 +104,12 @@
bindPresenter(SitebarActionsPresenter.class, SitebarActionsPresenter.SitebarActionsView.class,
SitebarActionsViewImpl.class, SitebarActionsPresenter.SitebarActionsProxy.class);
+ bindPresenter(SignInPresenter.class, SignInView.class, SignInPanel.class, SignInPresenter.SignInProxy.class);
+ bindPresenter(RegisterPresenter.class, RegisterView.class, RegisterPanel.class,
+ RegisterPresenter.RegisterProxy.class);
+ bind(SignIn.class).to(SignInPresenter.class).in(Singleton.class);
+ bind(Register.class).to(RegisterPresenter.class).in(Singleton.class);
+
bind(UserMessagesPresenter.class).in(Singleton.class);
bind(UserMessagesPanel.class).in(Singleton.class);
@@ -98,7 +117,7 @@
bind(WsArmor.class).to(WsArmorImpl.class).in(Singleton.class);
bind(CookiesManager.class).to(CookiesManagerImpl.class).in(Singleton.class);
bind(Session.class).to(SessionDefault.class).in(Singleton.class);
- bind(I18nTranslationService.class).to(I18nUITranslationService.class).in(Singleton.class);
+
bind(ErrorHandler.class).in(Singleton.class);
bind(StateManagerDefault.class).in(Singleton.class);
bind(StateManager.class).to(StateManagerDefault.class).in(Singleton.class);
@@ -111,5 +130,6 @@
bind(SitebarSignInLink.class).in(Singleton.class);
bind(SitebarSignOutLink.class).in(Singleton.class);
bind(BeforeSignOut.class).in(Singleton.class);
+ bind(SiteTokenListeners.class).asEagerSingleton();
}
}
Modified: trunk/src/main/java/cc/kune/core/client/CoreGinjector.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreGinjector.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/CoreGinjector.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,15 +1,20 @@
package cc.kune.core.client;
+import cc.kune.common.client.actions.gwtui.GwtGuiProvider;
import cc.kune.common.client.actions.gxtui.GxtGuiProvider;
import cc.kune.common.client.actions.ui.bind.GuiProvider;
import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
+import cc.kune.core.client.auth.RegisterPresenter;
+import cc.kune.core.client.auth.SignInPresenter;
import cc.kune.core.client.cookies.CookiesManager;
import cc.kune.core.client.errors.ErrorHandler;
+import cc.kune.core.client.logs.EventsLogger;
import cc.kune.core.client.notify.msgs.UserNotifierPresenter;
import cc.kune.core.client.notify.spiner.SpinerPresenter;
import cc.kune.core.client.sitebar.SitebarActionsPresenter;
import cc.kune.core.client.sitebar.logo.SiteLogoPresenter;
import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter;
+import cc.kune.core.client.state.SiteTokenListeners;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.client.ws.CorePresenter;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -18,7 +23,7 @@
import com.google.gwt.inject.client.AsyncProvider;
import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;
-import com.gwtplatform.mvp.client.proxy.PlaceManager;
+import com.google.inject.Provider;
import com.gwtplatform.mvp.client.proxy.ProxyFailureHandler;
@GinModules({ CoreGinModule.class })
@@ -31,28 +36,38 @@
AsyncProvider<CookiesManager> getCookiesManager();
- AsyncProvider<CorePresenter> getCorePresenter();
+ Provider<CorePresenter> getCorePresenter();
ErrorHandler getErrorHandler();
EventBus getEventBus();
+ EventsLogger getEventLogger();
+
GlobalShortcutRegister getGlobalShortcutRegister();
GuiProvider getGuiProvider();
+ GwtGuiProvider getGwtGuiProvider();
+
GxtGuiProvider getGxtGuiProvider();
I18nTranslationService getI18n();
- PlaceManager getPlaceManager();
+ // PlaceManager getPlaceManager();
ProxyFailureHandler getProxyFailureHandler();
+ AsyncProvider<RegisterPresenter> getRegisterPresenter();
+
+ AsyncProvider<SignInPresenter> getSignInPresenter();
+
AsyncProvider<SitebarActionsPresenter> getSitebarActionsPresenter();
AsyncProvider<SiteLogoPresenter> getSiteLogoPresenter();
+ SiteTokenListeners getSiteTokenListeners();
+
AsyncProvider<SpaceSelectorPresenter> getSpacesTabPresenter();
AsyncProvider<SpinerPresenter> getSpinerPresenter();
Modified: trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,7 +1,9 @@
package cc.kune.core.client;
+import cc.kune.common.client.noti.NotifyUser;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
+import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.GWT.UncaughtExceptionHandler;
@@ -29,7 +31,7 @@
e.printStackTrace();
}
});
-
+ Log.setCurrentLogLevel(Log.LOG_LEVEL_DEBUG);
Scheduler.get().scheduleDeferred(new ScheduledCommand() {
@Override
public void execute() {
@@ -44,12 +46,16 @@
public void onModuleLoadCont() {
DelayedBindRegistry.bind(ginjector);
AsyncCallbackSimple.init(ginjector.getErrorHandler());
- ginjector.getPlaceManager().revealCurrentPlace();
+ NotifyUser.init(ginjector.getEventBus());
+ // ginjector.getPlaceManager().revealCurrentPlace();
+ ginjector.getCorePresenter().get().forceReveal();
+ ginjector.getStateManager();
+ ginjector.getSiteTokenListeners();
+ ginjector.getEventLogger();
ginjector.getI18n();
ginjector.getGxtGuiProvider();
ginjector.getUserNotifierPresenter();
ginjector.getSpinerPresenter();
- ginjector.getStateManager();
ginjector.getSiteLogoPresenter();
ginjector.getSpacesTabPresenter();
}
Copied: trunk/src/main/java/cc/kune/core/client/auth/Register.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/workspace/client/signin/Register.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/Register.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/Register.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,29 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.auth;
+
+
+public interface Register {
+
+ void doRegister();
+
+ void hide();
+
+}
Copied: trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,125 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ \*/
+package cc.kune.core.client.auth;
+
+import cc.kune.common.client.utils.TextUtils;
+import cc.kune.core.client.resources.CoreMessages;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.ui.DefaultForm;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.extjs.gxt.ui.client.widget.form.Field;
+import com.extjs.gxt.ui.client.widget.form.TextField;
+
+public class RegisterForm extends DefaultForm {
+
+ public static final String COUNTRY_FIELD = "k-urf-country-f";
+ public static final String EMAIL_FIELD = "k-urf-email-f";
+ public static final String LANG_FIELD = "k-urf-lang-f";
+ public static final String LONGNAME_FIELD = "k-urf-long_name-f";
+ public static final String NICK_FIELD = "k-urf-nick-f";
+ public static final String NOPERSONALHOMEPAGE_ID = "k-urf-nphp-id";
+ public static final String PASSWORD_FIELD = "k-urf-password-f";
+ public static final String PASSWORD_FIELD_DUP = "k-urf-passwordDup-f";
+ public static final String TIMEZONE_FIELD = "k-urf-timezone-f";
+ public static final String WANNAPERSONALHOMEPAGE_ID = "k-urf-wphp-id";
+ public static final String WANTHOMEPAGE_FIELD = "k-urf-wphp-f";
+
+ private final TextField<String> emailRegField;
+ private final TextField<String> longNameRegField;
+ private final TextField<String> passwdRegField;
+ private final TextField<String> shortNameRegField;
+
+ public RegisterForm(final I18nTranslationService i18n, final Session session) {
+ super.addStyleName("kune-Margin-Large-l");
+
+ shortNameRegField = new TextField<String>();
+ shortNameRegField.setTabIndex(1);
+ shortNameRegField.setFieldLabel(i18n.t("Nickname"));
+ shortNameRegField.setName(NICK_FIELD);
+ shortNameRegField.setWidth(DEF_SMALL_FIELD_WIDTH);
+ shortNameRegField.setAllowBlank(false);
+ shortNameRegField.setMinLength(3);
+ shortNameRegField.setMaxLength(15);
+ shortNameRegField.setRegex("^[a-z0-9_\\-]+$");
+ shortNameRegField.getMessages().setMinLengthText(i18n.t(CoreMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
+ shortNameRegField.getMessages().setMaxLengthText(i18n.t(CoreMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
+ shortNameRegField.getMessages().setRegexText(i18n.t(CoreMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
+ shortNameRegField.setValidationDelay(1000);
+ add(shortNameRegField);
+
+ longNameRegField = new TextField<String>();
+ longNameRegField.setTabIndex(2);
+ longNameRegField.setFieldLabel(i18n.t("Full Name"));
+ longNameRegField.setName(LONGNAME_FIELD);
+ longNameRegField.setWidth(DEF_FIELD_WIDTH);
+ longNameRegField.setAllowBlank(false);
+ longNameRegField.setMinLength(3);
+ longNameRegField.setMaxLength(50);
+ // longNameRegField.setValidationEvent(false);
+ longNameRegField.setId(LONGNAME_FIELD);
+ add(longNameRegField);
+
+ passwdRegField = new TextField<String>();
+ passwdRegField.setTabIndex(3);
+ passwdRegField.setFieldLabel(i18n.t("Password"));
+ passwdRegField.setName(PASSWORD_FIELD);
+ passwdRegField.setPassword(true);
+ passwdRegField.setAllowBlank(false);
+ passwdRegField.setMaxLength(40);
+ passwdRegField.setWidth(DEF_MEDIUM_FIELD_WIDTH);
+ passwdRegField.setValidationDelay(1000);
+ passwdRegField.setId(PASSWORD_FIELD);
+ add(passwdRegField);
+
+ // http://www.sencha.com/forum/showthread.php?49702-GXT-Form-Validation
+ emailRegField = new TextField<String>();
+ emailRegField.setTabIndex(5);
+ emailRegField.setFieldLabel(i18n.t("Email"));
+ emailRegField.setName(EMAIL_FIELD);
+ emailRegField.setRegex(TextUtils.EMAIL_REGEXP);
+ emailRegField.getMessages().setRegexText(i18n.t("This is not a valid email"));
+ emailRegField.setWidth(DEF_MEDIUM_FIELD_WIDTH);
+ emailRegField.setAllowBlank(false);
+ emailRegField.setValidationDelay(1000);
+ emailRegField.setId(EMAIL_FIELD);
+ add(emailRegField);
+ }
+
+ public String getEmail() {
+ return emailRegField.getValue();
+ }
+
+ public String getLongName() {
+ return longNameRegField.getValue();
+ }
+
+ public String getRegisterPassword() {
+ return passwdRegField.getValue();
+ }
+
+ public String getShortName() {
+ return shortNameRegField.getValue();
+ }
+
+ public Field<String> getShortNameField() {
+ return shortNameRegField;
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterPanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,141 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.auth;
+
+import cc.kune.common.client.noti.NotifyLevelImages;
+import cc.kune.core.client.resources.CoreMessages;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.extjs.gxt.ui.client.widget.VerticalPanel;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+import com.google.inject.Inject;
+
+public class RegisterPanel extends SignInAbstractPanel implements RegisterView {
+
+ public static final String CANCEL_BUTTON_ID = "k-regp-cb";
+
+ public static final String ERRMSG = "k-regp-errmsg";
+
+ public static final String REGISTER_BUTTON_ID = "k-regp-rb";
+ public static final String REGISTER_DIALOG = "k-regp-dialog";
+ public static final String REGISTER_FORM = "k-regp-p";
+ public static final String WELCOME_DIALOG = "k-regp-wdiag";
+ public static final String WELCOME_OK_BUTTON = "k-regp-okbt";
+ private final RegisterForm registerForm;
+
+ @Inject
+ public RegisterPanel(final I18nTranslationService i18n, final Session session, final NotifyLevelImages images) {
+ super(REGISTER_DIALOG, i18n, i18n.t(CoreMessages.REGISTER_TITLE), true, true, true, 400, 420, "",
+ i18n.t(CoreMessages.REGISTER_TITLE), REGISTER_BUTTON_ID, i18n.tWithNT("Cancel", "used in button"),
+ CANCEL_BUTTON_ID, images, ERRMSG, 11);
+ // super.addListener(new WindowListenerAdapter() {
+ // @Override
+ // public void onActivate(final Panel panel) {
+ // KuneUiUtils.focusOnField(registerForm.getShortNameField());
+ // }
+ //
+ // @Override
+ // public void onShow(final Component component) {
+ // KuneUiUtils.focusOnField(registerForm.getShortNameField());
+ // }
+ // });
+
+ final VerticalPanel panel = new VerticalPanel();
+ // panel.setBorder(false);
+ registerForm = new RegisterForm(i18n, session);
+ registerForm.setWidth(370);
+ panel.add(registerForm.getFormPanel());
+ super.getInnerPanel().add(panel);
+ panel.setId(REGISTER_FORM);
+ }
+
+ @Override
+ public String getEmail() {
+ return registerForm.getEmail();
+ }
+
+ @Override
+ public String getLongName() {
+ return registerForm.getLongName();
+ }
+
+ @Override
+ public String getRegisterPassword() {
+ return registerForm.getRegisterPassword();
+ }
+
+ @Override
+ public String getShortName() {
+ return registerForm.getShortName();
+ }
+
+ @Override
+ public boolean isRegisterFormValid() {
+ return registerForm.isValid();
+ }
+
+ @Override
+ public boolean isValid() {
+ return registerForm.isValid();
+ }
+
+ @Override
+ public void reset() {
+ Scheduler.get().scheduleDeferred(new ScheduledCommand() {
+ @Override
+ public void execute() {
+ registerForm.reset();
+ }
+ });
+ }
+
+ @Override
+ public void showWelcolmeDialog() {
+ // final InfoDialog welcomeDialog = new InfoDialog(WELCOME_DIALOG,
+ // i18n.t("Welcome"),
+ // i18n.t("Thanks for registering"),
+ // i18n.t("Now you can participate more actively in this site with other people and groups. "
+ // + "You can also use your personal space to publish contents. "
+ // +
+ // "Your email is not verified, please follow the instructions you will receive by email."),
+ // i18n.t("Ok"), WELCOME_OK_BUTTON, true, true, 380, 210);
+ // welcomeDialog.show();
+ }
+
+ @Override
+ public void showWelcolmeDialogNoHomepage() {
+ // final InfoDialog welcomeDialog = new InfoDialog(WELCOME_DIALOG,
+ // i18n.t("Welcome"),
+ // i18n.t("Thanks for registering"),
+ // i18n.t("Now you can participate more actively in this site with other people and groups. "
+ // +
+ // "Your email is not verified, please follow the instructions you will receive by email."),
+ // i18n.t("Ok"), WELCOME_OK_BUTTON, true, true, 380, 210);
+ // welcomeDialog.show();
+ }
+
+ @Override
+ public void validate() {
+ registerForm.validate();
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterPresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,173 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.auth;
+
+import cc.kune.common.client.errors.UIException;
+import cc.kune.common.client.noti.NotifyLevel;
+import cc.kune.common.client.noti.NotifyUser;
+import cc.kune.core.client.cookies.CookiesManager;
+import cc.kune.core.client.errors.EmailAddressInUseException;
+import cc.kune.core.client.errors.GroupNameInUseException;
+import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.resources.CoreMessages;
+import cc.kune.core.client.rpcservices.UserServiceAsync;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.dto.I18nCountryDTO;
+import cc.kune.core.shared.dto.I18nLanguageDTO;
+import cc.kune.core.shared.dto.SubscriptionMode;
+import cc.kune.core.shared.dto.TimeZoneDTO;
+import cc.kune.core.shared.dto.UserDTO;
+import cc.kune.core.shared.dto.UserInfoDTO;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.logical.shared.CloseEvent;
+import com.google.gwt.event.logical.shared.CloseHandler;
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.PopupPanel;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit;
+import com.gwtplatform.mvp.client.proxy.Proxy;
+import com.gwtplatform.mvp.client.proxy.RevealRootContentEvent;
+
+public class RegisterPresenter extends SignInAbstractPresenter<RegisterView, RegisterPresenter.RegisterProxy> implements
+ Register {
+
+ @ProxyCodeSplit
+ public interface RegisterProxy extends Proxy<RegisterPresenter> {
+ }
+ private final Provider<SignIn> signInProvider;
+
+ private final Provider<UserServiceAsync> userServiceProvider;
+
+ @Inject
+ public RegisterPresenter(final EventBus eventBus, final RegisterView view, final RegisterProxy proxy,
+ final Session session, final StateManager stateManager, final I18nUITranslationService i18n,
+ final Provider<UserServiceAsync> userServiceProvider, final Provider<SignIn> signInProvider,
+ final CookiesManager cookiesManager) {
+ super(eventBus, view, proxy, session, stateManager, i18n, cookiesManager);
+ this.userServiceProvider = userServiceProvider;
+ this.signInProvider = signInProvider;
+ }
+
+ @Override
+ public void doRegister() {
+ signInProvider.get().hide();
+ if (!session.isLogged()) {
+ NotifyUser.showProgressProcessing();
+ getView().show();
+ // getView().center();
+ NotifyUser.hideProgress();
+ } else {
+ stateManager.restorePreviousToken();
+ }
+ }
+
+ @Override
+ public RegisterView getView() {
+ return (RegisterView) super.getView();
+ }
+
+ public void onFormRegister() {
+ if (getView().isRegisterFormValid()) {
+ getView().maskProcessing();
+
+ final I18nLanguageDTO language = new I18nLanguageDTO();
+ language.setCode(i18n.getCurrentLanguage());
+
+ final I18nCountryDTO country = new I18nCountryDTO();
+ country.setCode("GB");
+
+ final TimeZoneDTO timezone = new TimeZoneDTO();
+ timezone.setId("GMT");
+
+ final boolean wantHomepage = true;
+
+ final UserDTO user = new UserDTO(getView().getLongName(), getView().getShortName(),
+ getView().getRegisterPassword(), getView().getEmail(), language, country, timezone, null, true,
+ SubscriptionMode.manual, "blue");
+ final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
+ @Override
+ public void onFailure(final Throwable caught) {
+ getView().unMask();
+ if (caught instanceof EmailAddressInUseException) {
+ getView().setErrorMessage(i18n.t(CoreMessages.EMAIL_IN_USE), NotifyLevel.error);
+ } else if (caught instanceof GroupNameInUseException) {
+ getView().setErrorMessage(i18n.t(CoreMessages.NAME_IN_USE), NotifyLevel.error);
+ } else {
+ getView().setErrorMessage(i18n.t("Error during registration."), NotifyLevel.error);
+ throw new UIException("Other kind of exception in user registration", caught);
+
+ }
+ }
+
+ @Override
+ public void onSuccess(final UserInfoDTO userInfoDTO) {
+ onSignIn(userInfoDTO);
+ stateManager.gotoToken(userInfoDTO.getHomePage());
+ getView().hide();
+ getView().unMask();
+ if (wantHomepage) {
+ getView().showWelcolmeDialog();
+ } else {
+ getView().showWelcolmeDialogNoHomepage();
+ }
+ }
+ };
+ userServiceProvider.get().createUser(user, wantHomepage, callback);
+ }
+ }
+
+ @Override
+ protected void onReveal() {
+ super.onReveal();
+ getView().getFirstBtn().addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(final ClickEvent event) {
+ getView().validate();
+ if (getView().isValid()) {
+ onFormRegister();
+ }
+ }
+ });
+ getView().getSecondBtn().addClickHandler(new ClickHandler() {
+
+ @Override
+ public void onClick(final ClickEvent event) {
+ onCancel();
+ }
+ });
+ getView().getClose().addCloseHandler(new CloseHandler<PopupPanel>() {
+
+ @Override
+ public void onClose(final CloseEvent<PopupPanel> event) {
+ RegisterPresenter.this.onClose();
+ }
+ });
+ }
+
+ @Override
+ protected void revealInParent() {
+ RevealRootContentEvent.fire(this, this);
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/client/auth/RegisterView.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterView.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/RegisterView.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/RegisterView.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,42 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.auth;
+
+public interface RegisterView extends SignInAbstractView {
+
+ String getEmail();
+
+ String getLongName();
+
+ String getRegisterPassword();
+
+ String getShortName();
+
+ boolean isRegisterFormValid();
+
+ boolean isValid();
+
+ void showWelcolmeDialog();
+
+ void showWelcolmeDialogNoHomepage();
+
+ void validate();
+
+}
Copied: trunk/src/main/java/cc/kune/core/client/auth/SignIn.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignIn.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignIn.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignIn.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,29 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.auth;
+
+
+public interface SignIn {
+
+ void doSignIn();
+
+ void hide();
+
+}
Copied: trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPanel.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractPanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,116 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.auth;
+
+import cc.kune.common.client.noti.NotifyLevel;
+import cc.kune.common.client.noti.NotifyLevelImages;
+import cc.kune.core.client.ui.dialogs.BasicTopDialog;
+import cc.kune.core.client.ui.dialogs.MessageToolbar;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.dom.client.HasClickHandlers;
+import com.google.gwt.event.logical.shared.HasCloseHandlers;
+import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
+import com.google.gwt.user.client.ui.PopupPanel;
+import com.google.gwt.user.client.ui.Widget;
+import com.gwtplatform.mvp.client.ViewImpl;
+
+public abstract class SignInAbstractPanel extends ViewImpl {
+
+ private final BasicTopDialog dialog;
+ private final String errorLabelId;
+ protected final I18nTranslationService i18n;
+ private final NotifyLevelImages images;
+ private MessageToolbar messageErrorBar;
+
+ public SignInAbstractPanel(final String dialogId, final I18nTranslationService i18n, final String title,
+ final boolean autohide, final boolean modal, final boolean autoscroll, final int width, final int heigth,
+ final String icon, final String firstButtonTitle, final String firstButtonId,
+ final String cancelButtonTitle, final String cancelButtonId, final NotifyLevelImages images,
+ final String errorLabelId, final int tabIndexStart) {
+ dialog = new BasicTopDialog(dialogId, title, autohide, modal, autoscroll, width, heigth, icon,
+ firstButtonTitle, firstButtonId, cancelButtonTitle, cancelButtonId, tabIndexStart);
+ this.i18n = i18n;
+ this.images = images;
+ this.errorLabelId = errorLabelId;
+ }
+
+ @Override
+ public Widget asWidget() {
+ return dialog;
+ }
+
+ private void createMessageErrorIfNeeded() {
+ if (messageErrorBar == null) {
+ messageErrorBar = new MessageToolbar(images, errorLabelId);
+ }
+ }
+
+ public HasCloseHandlers<PopupPanel> getClose() {
+ return dialog.getClose();
+ }
+
+ public HasClickHandlers getFirstBtn() {
+ return dialog.getFirstBtn();
+ }
+
+ public ForIsWidget getInnerPanel() {
+ return dialog.getInnerPanel();
+ }
+
+ public HasClickHandlers getSecondBtn() {
+ return dialog.getSecondBtn();
+ }
+
+ public void hide() {
+ if (dialog.isVisible()) {
+ dialog.hide();
+ }
+ }
+
+ public void hideMessages() {
+ createMessageErrorIfNeeded();
+ messageErrorBar.hideErrorMessage();
+ }
+
+ public void mask(final String message) {
+ GWT.log("Mask not implemented");
+
+ }
+
+ public void maskProcessing() {
+ GWT.log("Mask not implemented");
+ // mask(i18n.t("Processing"));
+ }
+
+ public void setErrorMessage(final String message, final NotifyLevel level) {
+ createMessageErrorIfNeeded();
+ messageErrorBar.setErrorMessage(message, level);
+ }
+
+ public void show() {
+ dialog.show();
+ }
+
+ public void unMask() {
+ GWT.log("Unask not implemented");
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractPresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,88 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.auth;
+
+import cc.kune.core.client.cookies.CookiesManager;
+import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.dto.I18nLanguageDTO;
+import cc.kune.core.shared.dto.UserInfoDTO;
+
+import com.google.gwt.event.shared.EventBus;
+import com.gwtplatform.mvp.client.Presenter;
+import com.gwtplatform.mvp.client.View;
+import com.gwtplatform.mvp.client.proxy.Proxy;
+
+public abstract class SignInAbstractPresenter<V extends View, Proxy_ extends Proxy<?>> extends
+ Presenter<View, Proxy<?>> {
+
+ protected final CookiesManager cookiesManager;
+ protected final I18nUITranslationService i18n;
+ protected final Session session;
+ protected final StateManager stateManager;
+
+ public SignInAbstractPresenter(final EventBus eventBus, final View view, final Proxy<?> proxy,
+ final Session session, final StateManager stateManager, final I18nUITranslationService i18n,
+ final CookiesManager cookiesManager) {
+ super(eventBus, view, proxy);
+ this.session = session;
+ this.stateManager = stateManager;
+ this.i18n = i18n;
+ this.cookiesManager = cookiesManager;
+ }
+
+ @Override
+ public SignInAbstractView getView() {
+ return (SignInAbstractView) super.getView();
+ }
+
+ public void hide() {
+ getView().hide();
+ }
+
+ public void onCancel() {
+ getView().reset();
+ getView().hideMessages();
+ getView().hide();
+ stateManager.restorePreviousToken();
+ }
+
+ public void onClose() {
+ getView().reset();
+ getView().hideMessages();
+ if (!session.isLogged()) {
+ stateManager.restorePreviousToken();
+ }
+ }
+
+ protected void onSignIn(final UserInfoDTO userInfoDTO) {
+ final String userHash = userInfoDTO.getUserHash();
+ cookiesManager.setCookie(userHash);
+ getView().reset();
+ session.setUserHash(userHash);
+ session.setCurrentUserInfo(userInfoDTO);
+ final I18nLanguageDTO language = userInfoDTO.getLanguage();
+ i18n.changeCurrentLanguage(language.getCode());
+ session.setCurrentLanguage(language);
+ stateManager.restorePreviousToken();
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractView.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractView.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractView.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractView.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,53 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.auth;
+
+import cc.kune.common.client.noti.NotifyLevel;
+
+import com.google.gwt.event.dom.client.HasClickHandlers;
+import com.google.gwt.event.logical.shared.HasCloseHandlers;
+import com.google.gwt.user.client.ui.PopupPanel;
+import com.gwtplatform.mvp.client.View;
+
+public interface SignInAbstractView extends View {
+
+ HasCloseHandlers<PopupPanel> getClose();
+
+ HasClickHandlers getFirstBtn();
+
+ HasClickHandlers getSecondBtn();
+
+ void hide();
+
+ void hideMessages();
+
+ void mask(final String message);
+
+ void maskProcessing();
+
+ void reset();
+
+ void setErrorMessage(final String message, final NotifyLevel level);
+
+ void show();
+
+ void unMask();
+
+}
Copied: trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInForm.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInForm.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,88 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ \*/
+package cc.kune.core.client.auth;
+
+import cc.kune.core.client.ui.DefaultForm;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.extjs.gxt.ui.client.event.Events;
+import com.extjs.gxt.ui.client.event.FieldEvent;
+import com.extjs.gxt.ui.client.event.Listener;
+import com.extjs.gxt.ui.client.widget.form.Field;
+import com.extjs.gxt.ui.client.widget.form.TextField;
+import com.google.gwt.user.client.Window;
+
+public class SignInForm extends DefaultForm {
+ public static final String NICKOREMAIL_FIELD = "kune-sif-nkf";
+ public static final String PASSWORD_FIELD = "kune-sif-psf";
+
+ private final TextField<String> loginNickOrEmailField;
+ private final TextField<String> loginPassField;
+
+ public SignInForm(final I18nTranslationService i18n) {
+ super.addStyleName("kune-Margin-Large-trbl");
+
+ loginNickOrEmailField = new TextField<String>();
+ loginNickOrEmailField.setFieldLabel(i18n.t("Nickname or email"));
+ loginNickOrEmailField.setName(NICKOREMAIL_FIELD);
+ loginNickOrEmailField.setWidth(DEF_SMALL_FIELD_WIDTH);
+ loginNickOrEmailField.setAllowBlank(false);
+ loginNickOrEmailField.setValidationDelay(1000);
+ loginNickOrEmailField.setId(NICKOREMAIL_FIELD);
+ loginNickOrEmailField.setTabIndex(100);
+ super.add(loginNickOrEmailField);
+
+ loginPassField = new TextField<String>();
+ loginPassField.setFieldLabel(i18n.t("Password"));
+ loginPassField.setName(PASSWORD_FIELD);
+ loginPassField.setWidth(DEF_MEDIUM_FIELD_WIDTH);
+ loginPassField.setPassword(true);
+ loginPassField.setAllowBlank(false);
+ loginPassField.setValidationDelay(1000);
+ loginPassField.setId(PASSWORD_FIELD);
+ loginPassField.setTabIndex(101);
+ loginPassField.addListener(Events.Change, new Listener<FieldEvent>() {
+ @Override
+ public void handleEvent(final FieldEvent fe) {
+ if (fe.getEvent().getKeyCode() == 13) {
+ Window.alert("SignInForm");
+ // presenter.onFormSignIn();
+ }
+ }
+ });
+ super.add(loginPassField);
+ }
+
+ public void focusLogin() {
+ loginNickOrEmailField.focus();
+ }
+
+ public String getLoginPassword() {
+ return loginPassField.getValue();
+ }
+
+ public String getNickOrEmail() {
+ return loginNickOrEmailField.getValue();
+ }
+
+ public Field<String> getNickOrEmailField() {
+ return loginNickOrEmailField;
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,118 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.auth;
+
+import cc.kune.common.client.noti.NotifyLevelImages;
+import cc.kune.core.client.resources.CoreMessages;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.extjs.gxt.ui.client.widget.VerticalPanel;
+import com.extjs.gxt.ui.client.widget.form.Field;
+import com.google.gwt.event.dom.client.HasClickHandlers;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Label;
+import com.google.inject.Inject;
+
+public class SignInPanel extends SignInAbstractPanel implements SignInView {
+
+ public static final String CANCEL_BUTTON_ID = "k-signinp-cb";
+ public static final String CREATE_ONE = "k-signinp-create";
+ public static final String ERROR_MSG = "k-sigp-errmsg";
+ public static final String SIGN_IN_BUTTON_ID = "k-signinp-sib";
+ public static final String SIGNIN_DIALOG = "k-signinp-dialog";
+ private Label registerLabel;
+ private final SignInForm signInForm;
+
+ @Inject
+ public SignInPanel(final I18nTranslationService i18n, final NotifyLevelImages images) {
+ super(SIGNIN_DIALOG, i18n, i18n.t(CoreMessages.SIGN_IN_TITLE), true, true, true, 360, 360, "",
+ i18n.t(CoreMessages.SIGN_IN_TITLE), SIGN_IN_BUTTON_ID, i18n.tWithNT("Cancel", "used in button"),
+ CANCEL_BUTTON_ID, images, ERROR_MSG, 102);
+
+ // @Override
+ // public void onShow(final Component component) {
+ // KuneUiUtils.focusOnField(getNickname());
+ // }
+
+ final VerticalPanel panel = new VerticalPanel();
+ // panel.setBorder(false);
+ signInForm = new SignInForm(i18n);
+ signInForm.setWidth(310);
+ panel.add(signInForm.getFormPanel());
+ panel.add(createNoAccountRegister());
+ super.getInnerPanel().add(panel);
+ }
+
+ private VerticalPanel createNoAccountRegister() {
+ final VerticalPanel noAccRegisterPanel = new VerticalPanel();
+ // noAccRegisterPanel.setBorder(false);
+ // noAccRegisterPanel.setMargins(0, 20, 0, 0);
+ final HorizontalPanel hpanel = new HorizontalPanel();
+ final Label dontHaveAccount = new Label(i18n.t("Don't you have an account?"));
+ registerLabel = new Label(i18n.t("Create one."));
+ registerLabel.ensureDebugId(CREATE_ONE);
+ registerLabel.addStyleName("kune-Margin-Medium-l");
+ registerLabel.addStyleName("kune-link");
+ hpanel.add(dontHaveAccount);
+ hpanel.add(registerLabel);
+ noAccRegisterPanel.add(hpanel);
+ return noAccRegisterPanel;
+ }
+
+ @Override
+ public void focusOnNickname() {
+ signInForm.focusLogin();
+ }
+
+ @Override
+ public HasClickHandlers getAccountRegister() {
+ return registerLabel;
+ }
+
+ @Override
+ public String getLoginPassword() {
+ return signInForm.getLoginPassword();
+ }
+
+ private Field<String> getNickname() {
+ return signInForm.getNickOrEmailField();
+ }
+
+ @Override
+ public String getNickOrEmail() {
+ return signInForm.getNickOrEmail();
+ }
+
+ @Override
+ public boolean isSignInFormValid() {
+ return signInForm.isValid();
+ }
+
+ @Override
+ public void reset() {
+ signInForm.reset();
+ }
+
+ @Override
+ public void validate() {
+ signInForm.validate();
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java (from rev 1224, trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,171 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.auth;
+
+import cc.kune.common.client.noti.NotifyLevel;
+import cc.kune.core.client.cookies.CookiesManager;
+import cc.kune.core.client.errors.UserAuthException;
+import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.notify.spiner.ProgressHideEvent;
+import cc.kune.core.client.notify.spiner.ProgressShowEvent;
+import cc.kune.core.client.resources.CoreMessages;
+import cc.kune.core.client.rpcservices.UserServiceAsync;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.SiteCommonTokens;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.dto.UserDTO;
+import cc.kune.core.shared.dto.UserInfoDTO;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.logical.shared.CloseEvent;
+import com.google.gwt.event.logical.shared.CloseHandler;
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.PopupPanel;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit;
+import com.gwtplatform.mvp.client.proxy.Proxy;
+import com.gwtplatform.mvp.client.proxy.RevealRootContentEvent;
+
+public class SignInPresenter extends SignInAbstractPresenter<SignInView, SignInPresenter.SignInProxy> implements SignIn {
+
+ @ProxyCodeSplit
+ public interface SignInProxy extends Proxy<SignInPresenter> {
+ }
+
+ private final EventBus eventBus;
+ private final Provider<Register> registerProvider;
+ private final UserServiceAsync userService;
+
+ @Inject
+ public SignInPresenter(final EventBus eventBus, final SignInView view, final SignInProxy proxy,
+ final Session session, final StateManager stateManager, final I18nUITranslationService i18n,
+ final UserServiceAsync userService, final Provider<Register> registerProvider,
+ final CookiesManager cookiesManager) {
+ super(eventBus, view, proxy, session, stateManager, i18n, cookiesManager);
+ this.eventBus = eventBus;
+ this.userService = userService;
+ this.registerProvider = registerProvider;
+ }
+
+ @Override
+ public void doSignIn() {
+ registerProvider.get().hide();
+ if (session.isLogged()) {
+ stateManager.restorePreviousToken();
+ } else {
+ eventBus.fireEvent(new ProgressShowEvent());
+ getView().show();
+ // getView().center();
+ eventBus.fireEvent(new ProgressHideEvent());
+ getView().focusOnNickname();
+ }
+ }
+
+ @Override
+ public SignInView getView() {
+ return (SignInView) super.getView();
+ }
+
+ public void onAccountRegister() {
+ getView().reset();
+ getView().hideMessages();
+ getView().hide();
+ stateManager.gotoToken(SiteCommonTokens.REGISTER);
+ }
+
+ public void onFormSignIn() {
+ getView().validate();
+ if (getView().isSignInFormValid()) {
+ getView().maskProcessing();
+
+ final String nickOrEmail = getView().getNickOrEmail();
+ final String passwd = getView().getLoginPassword();
+
+ final UserDTO user = new UserDTO();
+ user.setShortName(nickOrEmail);
+ user.setPassword(passwd);
+
+ final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
+ @Override
+ public void onFailure(final Throwable caught) {
+ getView().unMask();
+ eventBus.fireEvent(new ProgressHideEvent());
+ if (caught instanceof UserAuthException) {
+ getView().setErrorMessage(i18n.t(CoreMessages.INCORRECT_NICKNAME_EMAIL_OR_PASSWORD),
+ NotifyLevel.error);
+ } else {
+ getView().setErrorMessage("Error in login", NotifyLevel.error);
+ Log.error("Other kind of exception in SignInPresenter/doLogin");
+ }
+ }
+
+ @Override
+ public void onSuccess(final UserInfoDTO userInfoDTO) {
+ onSignIn(userInfoDTO);
+ stateManager.restorePreviousToken();
+ getView().hide();
+ getView().unMask();
+ }
+ };
+ userService.login(user.getShortName(), user.getPassword(), callback);
+ }
+ }
+
+ @Override
+ protected void onReveal() {
+ super.onReveal();
+ getView().getFirstBtn().addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(final ClickEvent event) {
+ onFormSignIn();
+ }
+ });
+ getView().getSecondBtn().addClickHandler(new ClickHandler() {
+
+ @Override
+ public void onClick(final ClickEvent event) {
+ onCancel();
+ }
+ });
+ getView().getClose().addCloseHandler(new CloseHandler<PopupPanel>() {
+
+ @Override
+ public void onClose(final CloseEvent<PopupPanel> event) {
+ SignInPresenter.this.onClose();
+ }
+ });
+ getView().getAccountRegister().addClickHandler(new ClickHandler() {
+
+ @Override
+ public void onClick(final ClickEvent event) {
+ onAccountRegister();
+ }
+ });
+ }
+
+ @Override
+ protected void revealInParent() {
+ RevealRootContentEvent.fire(this, this);
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/client/auth/SignInView.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInView.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInView.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInView.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,38 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.auth;
+
+import com.google.gwt.event.dom.client.HasClickHandlers;
+
+public interface SignInView extends SignInAbstractView {
+
+ void focusOnNickname();
+
+ HasClickHandlers getAccountRegister();
+
+ String getLoginPassword();
+
+ String getNickOrEmail();
+
+ boolean isSignInFormValid();
+
+ void validate();
+
+}
Modified: trunk/src/main/java/cc/kune/core/client/cookies/CookiesManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cookies/CookiesManager.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/cookies/CookiesManager.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -4,4 +4,6 @@
String getCurrentCookie();
void removeCookie();
+
+ void setCookie(String userHash);
}
Modified: trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerImpl.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerImpl.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -4,6 +4,7 @@
import cc.kune.core.client.state.Session;
+import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Cookies;
public class CookiesManagerImpl implements CookiesManager {
@@ -27,4 +28,12 @@
Cookies.setCookie(Session.USERHASH, null, new Date(0), null, "/", false);
}
+ @Override
+ public void setCookie(final String userHash) {
+ // http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ
+ final long duration = Session.SESSION_DURATION;
+ final Date expires = new Date(System.currentTimeMillis() + duration);
+ Cookies.setCookie(Session.USERHASH, userHash, expires, null, "/", false);
+ GWT.log("Received hash: " + userHash, null);
+ }
}
Modified: trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -24,6 +24,8 @@
import cc.kune.core.client.notify.msgs.UserNotifyEvent;
import cc.kune.core.client.notify.spiner.ProgressHideEvent;
import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.SiteCommonTokens;
+import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.allen_sauer.gwt.log.client.Log;
@@ -31,21 +33,20 @@
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException;
import com.google.inject.Inject;
-import com.gwtplatform.mvp.client.proxy.PlaceManager;
public class ErrorHandler {
private final EventBus eventBus;
private final I18nTranslationService i18n;
- private final PlaceManager placeManager;
private final Session session;
+ private final StateManager stateManager;
@Inject
- public ErrorHandler(final Session session, final I18nTranslationService i18n, final PlaceManager placeManager,
+ public ErrorHandler(final Session session, final I18nTranslationService i18n, final StateManager stateManager,
final EventBus eventBus) {
this.session = session;
this.i18n = i18n;
- this.placeManager = placeManager;
+ this.stateManager = stateManager;
this.eventBus = eventBus;
}
@@ -55,7 +56,7 @@
}
private void goHome() {
- placeManager.revealDefaultPlace();
+ stateManager.gotoToken(SiteCommonTokens.HOME);
}
private void logException(final Throwable caught) {
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -38,10 +38,10 @@
import com.google.inject.Inject;
public class I18nUITranslationService extends I18nTranslationService {
- private HashMap<String, String> lexicon;
+ private I18nLanguageDTO currentLang;
private String currentLanguageCode;
- private I18nLanguageDTO currentLang;
private final I18nServiceAsync i18nService;
+ private HashMap<String, String> lexicon;
private final Session session;
@Inject
@@ -85,6 +85,52 @@
}
}
+ /**
+ *
+ * See in:
+ * http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread
+ * /5e4e25050d3be984/7035ec39354d06aa?lnk=gst&q=get+locale&rnum=23
+ *
+ * JSNI method to change the locale of the application - it effectively
+ * parses the existing URL and creates a new one for the chosen locale.
+ *
+ * It additionally launches any JavaScript debugger that might be attached
+ * to the system (Windows only). To disable this functionality just remove
+ * the "debugger" line.
+ *
+ * @param newLocale
+ * String value of the new locale to go to.
+ */
+ private native void changeLocale(String newLocale)
+ /*-{
+ // Uncomment the "debugger;" line to see how to set debug statements in JSNI code
+ // When in web mode, if your browser has a JavaScript debugger attached, it will
+ // launch at this point in the code (when the user changes locale through the menu system).
+ // debugger;
+
+ // Get the current location
+ var currLocation = $wnd.location.toString();
+ // Get rid of any GWT History tokens that might be present
+ var noHistoryCurrLocArray = currLocation.split("#");
+ var noHistoryCurrLoc = noHistoryCurrLocArray[0];
+ var currHistory = noHistoryCurrLocArray[1];
+ // Get rid of any locale string
+ var locArray = noHistoryCurrLoc.split("?");
+ // Build the new href location and then send the browser there.
+ // $wnd.location.href = locArray[0]+"?locale="+newLocale+"#"+currHistory;
+ $wnd.location.href = locArray[0]+"?locale="+newLocale
+
+ // extjs part:
+ // commented because the error: "Ext is not defined"
+ // we have to try other way
+ // var head = document.getElementsByTagName("head")[0];
+ // var script = document.createElement('script');
+ // script.id = 'localScript';
+ // script.type = 'text/javascript';
+ // script.src = "js/ext/locale/ext-lang-"+newLocale+".js";
+ // head.appendChild(script);
+ }-*/;
+
public String formatDateWithLocale(final Date date) {
return formatDateWithLocale(date, false);
}
@@ -174,50 +220,4 @@
return decodeHtml(translation);
}
- /**
- *
- * See in:
- * http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread
- * /5e4e25050d3be984/7035ec39354d06aa?lnk=gst&q=get+locale&rnum=23
- *
- * JSNI method to change the locale of the application - it effectively
- * parses the existing URL and creates a new one for the chosen locale.
- *
- * It additionally launches any JavaScript debugger that might be attached
- * to the system (Windows only). To disable this functionality just remove
- * the "debugger" line.
- *
- * @param newLocale
- * String value of the new locale to go to.
- */
- private native void changeLocale(String newLocale)
- /*-{
- // Uncomment the "debugger;" line to see how to set debug statements in JSNI code
- // When in web mode, if your browser has a JavaScript debugger attached, it will
- // launch at this point in the code (when the user changes locale through the menu system).
- // debugger;
-
- // Get the current location
- var currLocation = $wnd.location.toString();
- // Get rid of any GWT History tokens that might be present
- var noHistoryCurrLocArray = currLocation.split("#");
- var noHistoryCurrLoc = noHistoryCurrLocArray[0];
- var currHistory = noHistoryCurrLocArray[1];
- // Get rid of any locale string
- var locArray = noHistoryCurrLoc.split("?");
- // Build the new href location and then send the browser there.
- // $wnd.location.href = locArray[0]+"?locale="+newLocale+"#"+currHistory;
- $wnd.location.href = locArray[0]+"?locale="+newLocale
-
- // extjs part:
- // commented because the error: "Ext is not defined"
- // we have to try other way
- // var head = document.getElementsByTagName("head")[0];
- // var script = document.createElement('script');
- // script.id = 'localScript';
- // script.type = 'text/javascript';
- // script.src = "js/ext/locale/ext-lang-"+newLocale+".js";
- // head.appendChild(script);
- }-*/;
-
}
Modified: trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/init/AppStarterDefault.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -46,7 +46,7 @@
@Inject
public AppStarterDefault(final Session session, final SiteServiceAsync siteService, final EventBus eventBus,
- PrefetchUtilities prefetchUtilities) {
+ final PrefetchUtilities prefetchUtilities) {
this.session = session;
this.siteService = siteService;
this.eventBus = eventBus;
@@ -95,7 +95,9 @@
@Override
public void execute() {
hideInitialPanels();
- eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.info, "Success", "App Started.", true));
+ // eventBus.fireEvent(new
+ // UserNotifyEvent(NotifyLevel.info, "Success",
+ // "App Started.", true));
}
});
}
Copied: trunk/src/main/java/cc/kune/core/client/logs (from rev 1223, trunk/src/main/java/cc/kune/core/client/actions)
Deleted: trunk/src/main/java/cc/kune/core/client/logs/BeforeActionCollection.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/actions/BeforeActionCollection.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/logs/BeforeActionCollection.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,45 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package cc.kune.core.client.actions;
-
-import java.util.ArrayList;
-
-/**
- * The Class BeforeActionCollection.
- */
-public class BeforeActionCollection extends ArrayList<BeforeActionListener> {
-
- private static final long serialVersionUID = -1508664709628420137L;
-
- /**
- * Check before action listeners.
- *
- * @return true, if all listener returns true
- */
- public boolean checkBeforeAction() {
- for (BeforeActionListener listener : this) {
- if (!listener.beforeAction()) {
- return false;
- }
- }
- return true;
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/core/client/logs/BeforeActionListener.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/actions/BeforeActionListener.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/logs/BeforeActionListener.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,31 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package cc.kune.core.client.actions;
-
-public interface BeforeActionListener {
-
- /**
- * Return false to cancel the action
- *
- * @return
- */
- boolean beforeAction();
-
-}
Added: trunk/src/main/java/cc/kune/core/client/logs/EventsLogger.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/logs/EventsLogger.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/logs/EventsLogger.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,44 @@
+package cc.kune.core.client.logs;
+
+import cc.kune.core.client.i18n.I18nReadyEvent;
+import cc.kune.core.client.init.AppStartEvent;
+import cc.kune.core.client.state.UserSignInEvent;
+import cc.kune.core.client.state.UserSignOutEvent;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+
+public class EventsLogger {
+
+ @Inject
+ public EventsLogger(final EventBus eventBus) {
+ eventBus.addHandler(AppStartEvent.getType(), new AppStartEvent.AppStartHandler() {
+ @Override
+ public void onAppStart(final AppStartEvent event) {
+ GWT.log("App Started");
+ }
+ });
+ eventBus.addHandler(I18nReadyEvent.getType(), new I18nReadyEvent.I18nReadyHandler() {
+
+ @Override
+ public void onI18nReady(final I18nReadyEvent event) {
+ GWT.log("I18n Ready");
+ }
+ });
+ eventBus.addHandler(UserSignOutEvent.getType(), new UserSignOutEvent.UserSignOutHandler() {
+
+ @Override
+ public void onUserSignOut(final UserSignOutEvent event) {
+ GWT.log("User signed out");
+ }
+ });
+ eventBus.addHandler(UserSignInEvent.getType(), new UserSignInEvent.UserSignInHandler() {
+
+ @Override
+ public void onUserSignIn(final UserSignInEvent event) {
+ GWT.log("User signed in");
+ }
+ });
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/logs/EventsLogger.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/core/client/resources/CoreMessages.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/PlatfMessages.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/resources/CoreMessages.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/resources/CoreMessages.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,43 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.resources;
+
+public final class CoreMessages {
+ public final static String BUDDIES_NOT_PUBLIC = "The buddies of this user are not public";
+ public final static String EMAIL_IN_USE = "This email address is being used by another user. Please, try with another one";
+ public final static String ENT_LOGO_SELECTOR_NORMAL_TITLE = "Logo";
+ public final static String ENT_LOGO_SELECTOR_PERSON_TITLE = "Avatar";
+ public final static String FIELD_MUST_BE_BETWEEN_3_AND_15 = "The name must be between 3 and 15 lowercase characters. It can only contain Western characters, numbers, and dashes";
+ public final static String GROUP_OPTIONS_DIALOG_TITLE = "Group options";
+ public final static String INCORRECT_NICKNAME_EMAIL_OR_PASSWORD = "The nickname/email/password is incorrect";
+ public final static String MEMBERS_NOT_PUBLIC = "The members of this group are not public";
+ public final static String NAME_IN_ALREADY_IN_USE = "This name is already in use. Please try with a different name";
+ public final static String NAME_IN_USE = "This name in already in use. Please try with a different name";
+ public final static String REGISTER_A_NEW_GROUP_TITLE = "Register a new Group";
+ public final static String REGISTER_TITLE = "Register";
+ public final static String REGISTER_TO_CREATE_A_GROUP = "Please, sign in or register to create a group";
+ public final static String SIGN_IN_TITLE = "Sign in";
+ public final static String USER_DOESN_T_HAVE_A_HOMEPAGE = "This user does not have a homepage";
+ public final static String USER_OPTIONS_DIALOG_TITLE = "User options";
+ public final static String YOUR_HOMEPAGE = "Your homepage";
+
+ private CoreMessages() {
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/client/resources/CoreResources.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/resources/CoreResources.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/resources/CoreResources.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -9,9 +9,402 @@
String loadingSpiner();
}
+ @Source("accept.png")
+ ImageResource accept();
+
+ @Source("add.png")
+ ImageResource add();
+
+ @Source("add-green.png")
+ ImageResource addGreen();
+
+ @Source("alert.png")
+ ImageResource alert();
+
+ @Source("anybody.png")
+ ImageResource anybody();
+
+ @Source("arrow-down-black.gif")
+ ImageResource arrowDownBlack();
+
+ @Source("arrow-down-green.png")
+ ImageResource arrowDownGreen();
+
+ @Source("arrow-down-white.gif")
+ ImageResource arrowDownWhite();
+
+ @Source("arrow_in.png")
+ ImageResource arrowIn();
+
+ @Source("arrow-left-green.png")
+ ImageResource arrowLeftGreen();
+
+ @Source("arrow_out.png")
+ ImageResource arrowOut();
+
+ @Source("arrow-right-black.gif")
+ ImageResource arrowRightBlack();
+
+ @Source("arrow-right-green.png")
+ ImageResource arrowRightGreen();
+
+ @Source("arrow-right-white.gif")
+ ImageResource arrowRightWhite();
+
+ @Source("arrow-up-green.png")
+ ImageResource arrowUpGreen();
+
+ @Source("bullet_add.png")
+ ImageResource bulletAdd();
+
+ @Source("bullet_black.png")
+ ImageResource bulletBlack();
+
+ @Source("bullet_blue.png")
+ ImageResource bulletBlue();
+
+ @Source("bullet_delete.png")
+ ImageResource bulletDelete();
+
+ @Source("bullet_green.png")
+ ImageResource bulletGreen();
+
+ @Source("bullet_pink.png")
+ ImageResource bulletPink();
+
+ @Source("bullet_purple.png")
+ ImageResource bulletPurple();
+
+ @Source("bullet_red.png")
+ ImageResource bulletRed();
+
+ @Source("bullet_star.png")
+ ImageResource bulletStar();
+
+ @Source("bullet_toggle_minus.png")
+ ImageResource bulletToggleMinus();
+
+ @Source("bullet_toggle_plus.png")
+ ImageResource bulletTogglePlus();
+
+ @Source("bullet_yellow.png")
+ ImageResource bulletYellow();
+
+ @Source("button15cblue.png")
+ ImageResource button15cblue();
+
+ @Source("button15cdark.png")
+ ImageResource button15cdark();
+
+ @Source("button15clight.png")
+ ImageResource button15clight();
+
+ @Source("button15cxlight.png")
+ ImageResource button15cxlight();
+
+ @Source("button15lblue.png")
+ ImageResource button15lblue();
+
+ @Source("button15ldark.png")
+ ImageResource button15ldark();
+
+ @Source("button15llight.png")
+ ImageResource button15llight();
+
+ @Source("button15lxlight.png")
+ ImageResource button15lxlight();
+
+ @Source("button15rblue.png")
+ ImageResource button15rblue();
+
+ @Source("button15rdark.png")
+ ImageResource button15rdark();
+
+ @Source("button15rlight.png")
+ ImageResource button15rlight();
+
+ @Source("button15rxlight.png")
+ ImageResource button15rxlight();
+
+ @Source("button17cblue.png")
+ ImageResource button17cblue();
+
+ @Source("button17cdark.png")
+ ImageResource button17cdark();
+
+ @Source("button17clight.png")
+ ImageResource button17clight();
+
+ @Source("button17cxlight.png")
+ ImageResource button17cxlight();
+
+ @Source("button17lblue.png")
+ ImageResource button17lblue();
+
+ @Source("button17ldark.png")
+ ImageResource button17ldark();
+
+ @Source("button17llight.png")
+ ImageResource button17llight();
+
+ @Source("button17lxlight.png")
+ ImageResource button17lxlight();
+
+ @Source("button17rblue.png")
+ ImageResource button17rblue();
+
+ @Source("button17rdark.png")
+ ImageResource button17rdark();
+
+ @Source("button17rlight.png")
+ ImageResource button17rlight();
+
+ @Source("button17rxlight.png")
+ ImageResource button17rxlight();
+
+ @Source("button20cblue.png")
+ ImageResource button20cblue();
+
+ @Source("button20cdark.png")
+ ImageResource button20cdark();
+
+ @Source("button20clight.png")
+ ImageResource button20clight();
+
+ @Source("button20cxlight.png")
+ ImageResource button20cxlight();
+
+ @Source("button20lblue.png")
+ ImageResource button20lblue();
+
+ @Source("button20ldark.png")
+ ImageResource button20ldark();
+
+ @Source("button20llight.png")
+ ImageResource button20llight();
+
+ @Source("button20lxlight.png")
+ ImageResource button20lxlight();
+
+ @Source("button20rblue.png")
+ ImageResource button20rblue();
+
+ @Source("button20rdark.png")
+ ImageResource button20rdark();
+
+ @Source("button20rlight.png")
+ ImageResource button20rlight();
+
+ @Source("button20rxlight.png")
+ ImageResource button20rxlight();
+
+ @Source("button-arrow-down.png")
+ ImageResource buttonArrowDown();
+
+ @Source("button-help-blue.png")
+ ImageResource buttonHelpBlue();
+
+ @Source("button-help-dark.png")
+ ImageResource buttonHelpDark();
+
+ @Source("button-help-light.png")
+ ImageResource buttonHelpLight();
+
+ @Source("arrowdown.gif")
+ ImageResource buttonSitebarArrowDown();
+
+ @Source("by80x15.png")
+ ImageResource by80x15();
+
+ @Source("bync80x15.png")
+ ImageResource bync80x15();
+
+ @Source("byncnd80x15.png")
+ ImageResource byncnd80x15();
+
+ @Source("byncsa80x15.png")
+ ImageResource byncsa80x15();
+
+ @Source("bynd80x15.png")
+ ImageResource bynd80x15();
+
+ @Source("bysa80x15.png")
+ ImageResource bysa80x15();
+
+ @Source("cancel.png")
+ ImageResource cancel();
+
+ @Source("clear.png")
+ ImageResource clear();
+
+ @Source("copyleft.png")
+ ImageResource copyleft();
+
+ @Source("cross.png")
+ ImageResource cross();
+
+ @Source("cross-dark.png")
+ ImageResource crossDark();
+
+ @Source("core.css")
+ Style css();
+
+ @Source("del.png")
+ ImageResource del();
+
+ @Source("emblem-important.png")
+ ImageResource emblemImportant();
+
+ @Source("emblem-system.png")
+ ImageResource emblemSystem();
+
+ @Source("error.png")
+ ImageResource error();
+
+ @Source("everybody.png")
+ ImageResource everybody();
+
+ @Source("fullscreen.png")
+ ImageResource fullscreen();
+
+ @Source("gnu-fdl.gif")
+ ImageResource gnuFdl();
+
+ @Source("group-def-icon.png")
+ ImageResource groupDefIcon();
+
+ @Source("group-home.png")
+ ImageResource groupHome();
+
+ @Source("important.png")
+ ImageResource important();
+
+ @Source("info.png")
+ ImageResource info();
+
+ @Source("info-light.png")
+ ImageResource infoLight();
+
+ @Source("kune-close.png")
+ ImageResource kuneClose();
+
+ @Source("kune-external-window.png")
+ ImageResource kuneExternalWindow();
+
+ @Source("kune-help-translation-icon.png")
+ ImageResource kuneHelpTranslationIcon();
+
+ @Source("kune-icon16.png")
+ ImageResource kuneIcon16();
+
+ @Source("kune-logo-16px.png")
+ ImageResource kuneLogo16px();
+
+ @Source("kune-preferences.png")
+ ImageResource kunePreferences();
+
+ @Source("kune-search-ico.png")
+ ImageResource kuneSearchIco();
+
+ @Source("kune-search-ico-push.png")
+ ImageResource kuneSearchIcoPush();
+
+ @Source("language.png")
+ ImageResource language();
+
@Source("loading-spiner.gif")
ImageResource loadingSpiner();
- @Source("core.css")
- Style css();
+ @Source("nobody.png")
+ ImageResource nobody();
+
+ @Source("no-copyleft.png")
+ ImageResource noCopyleft();
+
+ @Source("nt.png")
+ ImageResource nt();
+
+ @Source("opentriangle.gif")
+ ImageResource opentriangle();
+
+ @Source("person2-60.png")
+ ImageResource personAvatarDef();
+
+ @Source("person-def.png")
+ ImageResource personDef();
+
+ @Source("remove.png")
+ ImageResource remove();
+
+ @Source("rss-icon.png")
+ ImageResource rssIcon();
+
+ @Source("search-ico.png")
+ ImageResource searchIco();
+
+ @Source("spin-kune-thund-green.gif")
+ ImageResource spinKuneThundGreen();
+
+ @Source("splitter-vert-bar.gif")
+ ImageResource splitterVertBar();
+
+ @Source("star-10.png")
+ ImageResource star10();
+
+ @Source("star-20.png")
+ ImageResource star20();
+
+ @Source("star-30.png")
+ ImageResource star30();
+
+ @Source("star-40.png")
+ ImageResource star40();
+
+ @Source("star-50.png")
+ ImageResource star50();
+
+ @Source("star-60.png")
+ ImageResource star60();
+
+ @Source("star-70.png")
+ ImageResource star70();
+
+ @Source("star-80.png")
+ ImageResource star80();
+
+ @Source("star-90.png")
+ ImageResource star90();
+
+ @Source("star-grey.png")
+ ImageResource starGrey();
+
+ @Source("star-small-yellow.png")
+ ImageResource starSmallYellow();
+
+ @Source("star-vsmall-yellow.png")
+ ImageResource starVsmallYellow();
+
+ @Source("star-yellow.png")
+ ImageResource starYellow();
+
+ @Source("step1.png")
+ ImageResource step1();
+
+ @Source("step2.png")
+ ImageResource step2();
+
+ @Source("step3.png")
+ ImageResource step3();
+
+ @Source("step4.png")
+ ImageResource step4();
+
+ @Source("step5.png")
+ ImageResource step5();
+
+ @Source("theme-choose.png")
+ ImageResource themeChoose();
+
+ @Source("triangle.gif")
+ ImageResource triangle();
}
Added: trunk/src/main/java/cc/kune/core/client/resources/accept.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/accept.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/add-green.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/add-green.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/add.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/add.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/alert.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/alert.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/anybody.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/anybody.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/arrow-down-black.gif
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/arrow-down-black.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/arrow-down-green.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/arrow-down-green.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/arrow-down-white.gif
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/arrow-down-white.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/arrow-left-green.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/arrow-left-green.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/arrow-right-black.gif
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/arrow-right-black.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/arrow-right-green.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/arrow-right-green.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/arrow-right-white.gif
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/arrow-right-white.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/arrow-up-green.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/arrow-up-green.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/arrow_in.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/arrow_in.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/arrow_out.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/arrow_out.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/arrowdown.gif
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/arrowdown.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bullet_add.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bullet_add.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bullet_black.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bullet_black.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bullet_blue.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bullet_blue.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bullet_delete.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bullet_delete.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bullet_green.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bullet_green.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bullet_pink.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bullet_pink.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bullet_purple.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bullet_purple.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bullet_red.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bullet_red.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bullet_star.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bullet_star.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bullet_toggle_minus.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bullet_toggle_minus.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bullet_toggle_plus.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bullet_toggle_plus.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bullet_yellow.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bullet_yellow.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button-arrow-down.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button-arrow-down.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button-help-blue.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button-help-blue.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button-help-dark.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button-help-dark.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button-help-light.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button-help-light.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button15cblue.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button15cblue.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button15cdark.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button15cdark.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button15clight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button15clight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button15cxlight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button15cxlight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button15lblue.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button15lblue.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button15ldark.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button15ldark.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button15llight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button15llight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button15lxlight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button15lxlight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button15rblue.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button15rblue.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button15rdark.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button15rdark.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button15rlight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button15rlight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button15rxlight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button15rxlight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button17cblue.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button17cblue.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button17cdark.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button17cdark.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button17clight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button17clight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button17cxlight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button17cxlight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button17lblue.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button17lblue.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button17ldark.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button17ldark.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button17llight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button17llight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button17lxlight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button17lxlight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button17rblue.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button17rblue.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button17rdark.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button17rdark.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button17rlight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button17rlight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button17rxlight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button17rxlight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button20cblue.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button20cblue.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button20cdark.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button20cdark.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button20clight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button20clight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button20cxlight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button20cxlight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button20lblue.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button20lblue.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button20ldark.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button20ldark.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button20llight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button20llight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button20lxlight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button20lxlight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button20rblue.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button20rblue.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button20rdark.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button20rdark.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button20rlight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button20rlight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/button20rxlight.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/button20rxlight.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/by80x15.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/by80x15.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bync80x15.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bync80x15.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/byncnd80x15.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/byncnd80x15.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/byncsa80x15.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/byncsa80x15.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bynd80x15.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bynd80x15.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/bysa80x15.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/bysa80x15.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/cancel.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/cancel.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/clear.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/clear.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/copyleft.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/copyleft.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/cross-dark.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/cross-dark.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/cross.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/cross.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/del.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/del.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/emblem-important.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/emblem-important.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/emblem-system.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/emblem-system.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/error.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/error.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/everybody.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/everybody.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/fullscreen.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/fullscreen.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/gnu-fdl.gif
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/gnu-fdl.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/group-def-icon.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/group-def-icon.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/group-home.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/group-home.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/important.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/important.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/info-light.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/info-light.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/info.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/info.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/kune-close.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/kune-close.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/kune-external-window.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/kune-external-window.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/kune-help-translation-icon.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/kune-help-translation-icon.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/kune-icon16.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/kune-icon16.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/kune-logo-16px.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/kune-logo-16px.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/kune-preferences.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/kune-preferences.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/kune-search-ico-push.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/kune-search-ico-push.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/kune-search-ico.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/kune-search-ico.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/language.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/language.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/no-copyleft.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/no-copyleft.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/nobody.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/nobody.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/nt.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/nt.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/opentriangle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/opentriangle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/person-def.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/person-def.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/person2-60.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/person2-60.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/remove.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/remove.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/rss-icon.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/rss-icon.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/search-ico.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/search-ico.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/spin-kune-thund-green.gif
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/spin-kune-thund-green.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/splitter-vert-bar.gif
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/splitter-vert-bar.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/star-10.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/star-10.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/star-20.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/star-20.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/star-30.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/star-30.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/star-40.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/star-40.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/star-50.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/star-50.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/star-60.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/star-60.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/star-70.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/star-70.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/star-80.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/star-80.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/star-90.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/star-90.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/star-grey.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/star-grey.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/star-small-yellow.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/star-small-yellow.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/star-vsmall-yellow.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/star-vsmall-yellow.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/star-yellow.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/star-yellow.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/step1.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/step1.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/step2.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/step2.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/step3.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/step3.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/step4.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/step4.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/step5.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/step5.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/theme-choose.png
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/theme-choose.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/client/resources/triangle.gif
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/client/resources/triangle.gif
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -4,6 +4,7 @@
import cc.kune.common.client.actions.Action;
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
+import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.SiteCommonTokens;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.client.state.UserSignInEvent;
@@ -39,11 +40,11 @@
public static final String SITE_SIGN_IN = "kune-ssilp-hy";
@Inject
- public SitebarSignInLink(final SitebarSignInAction action, final EventBus eventBus) {
+ public SitebarSignInLink(final SitebarSignInAction action, final EventBus eventBus, final Session session) {
super(action);
setStyles("k-floatright, k-no-backimage, k-btn-sitebar");
setId(SITE_SIGN_IN);
- setVisible(false);
+ setVisible(!session.isLogged());
eventBus.addHandler(UserSignInEvent.getType(), new UserSignInHandler() {
@Override
public void onUserSignIn(final UserSignInEvent event) {
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -3,9 +3,9 @@
import cc.kune.common.client.actions.AbstractExtendedAction;
import cc.kune.common.client.actions.Action;
import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.BeforeActionCollection;
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.common.client.errors.UIException;
-import cc.kune.core.client.actions.BeforeActionCollection;
import cc.kune.core.client.cookies.CookiesManager;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.errors.SessionExpiredEvent;
@@ -16,6 +16,8 @@
import cc.kune.core.client.notify.spiner.ProgressShowEvent;
import cc.kune.core.client.rpcservices.UserServiceAsync;
import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.UserSignInEvent;
+import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
import cc.kune.core.client.state.UserSignOutEvent;
import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -92,14 +94,14 @@
@Inject
public SitebarSignOutLink(final SitebarSignOutAction action, final EventBus eventBus,
- final ErrorHandler errorHandler) {
+ final ErrorHandler errorHandler, final Session session) {
super(action);
setStyles("k-floatright, k-no-backimage, k-btn-sitebar");
setId(SITE_SIGN_OUT);
- setVisible(false);
- eventBus.addHandler(UserSignOutEvent.getType(), new UserSignOutHandler() {
+ setVisible(session.isLogged());
+ eventBus.addHandler(UserSignInEvent.getType(), new UserSignInHandler() {
@Override
- public void onUserSignOut(final UserSignOutEvent event) {
+ public void onUserSignIn(final UserSignInEvent event) {
SitebarSignOutLink.this.setVisible(true);
}
});
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,7 +1,8 @@
package cc.kune.core.client.sitebar.logo;
import cc.kune.core.client.init.AppStartEvent;
-import cc.kune.core.client.ws.CorePlaceManager;
+import cc.kune.core.client.state.SiteCommonTokens;
+import cc.kune.core.client.state.StateManager;
import com.google.gwt.event.shared.EventBus;
import com.google.inject.Inject;
@@ -24,23 +25,24 @@
void setSiteLogoUrl(String siteLogoUrl);
}
- private final CorePlaceManager placeManager;
+ private final StateManager stateManager;
@Inject
- public SiteLogoPresenter(EventBus eventBus, SiteLogoView view, SiteLogoProxy proxy, CorePlaceManager placeManager) {
+ public SiteLogoPresenter(final EventBus eventBus, final SiteLogoView view, final SiteLogoProxy proxy,
+ final StateManager stateManager) {
super(eventBus, view, proxy);
- this.placeManager = placeManager;
+ this.stateManager = stateManager;
getView().setUiHandlers(this);
}
@ProxyEvent
- public void onAppStart(AppStartEvent event) {
+ public void onAppStart(final AppStartEvent event) {
getView().setSiteLogoUrl(event.getInitData().getSiteLogoUrl());
}
@Override
public void onClick() {
- // placeManager.revealDefaultPlace();
+ stateManager.gotoToken(SiteCommonTokens.HOME);
}
@Override
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoViewImpl.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoViewImpl.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -12,7 +12,6 @@
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import com.gwtplatform.mvp.client.ViewWithUiHandlers;
-import com.gwtplatform.mvp.client.proxy.PlaceManager;
public class SiteLogoViewImpl extends ViewWithUiHandlers<SiteLogoUiHandlers> implements SiteLogoView {
@@ -25,7 +24,7 @@
Image logo;
@Inject
- public SiteLogoViewImpl(WsArmor armor, PlaceManager placeManager) {
+ public SiteLogoViewImpl(final WsArmor armor) {
armor.getSitebar().insert(uiBinder.createAndBindUi(this), 0);
}
@@ -35,14 +34,14 @@
}
@UiHandler("logo")
- void onLogoClick(ClickEvent event) {
+ void onLogoClick(final ClickEvent event) {
if (getUiHandlers() != null) {
getUiHandlers().onClick();
}
}
@Override
- public void setSiteLogoUrl(String siteLogoUrl) {
+ public void setSiteLogoUrl(final String siteLogoUrl) {
logo.setUrl(siteLogoUrl);
}
}
Modified: trunk/src/main/java/cc/kune/core/client/state/SiteCommonTokens.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/SiteCommonTokens.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/state/SiteCommonTokens.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -5,6 +5,7 @@
*
*/
public final class SiteCommonTokens {
+ public final static String HOME = "";
public final static String NEWGROUP = "newgroup";
public final static String REGISTER = "register";
public final static String SIGNIN = "signin";
Added: trunk/src/main/java/cc/kune/core/client/state/SiteTokenListeners.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/SiteTokenListeners.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/state/SiteTokenListeners.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,48 @@
+package cc.kune.core.client.state;
+
+import cc.kune.core.client.auth.Register;
+import cc.kune.core.client.auth.SignIn;
+import cc.kune.core.client.init.AppStartEvent;
+import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+import com.google.inject.Singleton;
+
+@Singleton
+public class SiteTokenListeners {
+ private final Provider<Register> register;
+ private final Provider<SignIn> signIn;
+ private final Provider<StateManager> stateManager;
+
+ @Inject
+ public SiteTokenListeners(final EventBus eventBus, final Provider<StateManager> stateManager,
+ final Provider<SignIn> signIn, final Provider<Register> register) {
+ this.stateManager = stateManager;
+ this.signIn = signIn;
+ this.register = register;
+ init();
+ eventBus.addHandler(AppStartEvent.getType(), new AppStartHandler() {
+ @Override
+ public void onAppStart(final AppStartEvent event) {
+ }
+ });
+
+ }
+
+ private void init() {
+ stateManager.get().addSiteToken(SiteCommonTokens.SIGNIN, new HistoryTokenCallback() {
+ @Override
+ public void onHistoryToken() {
+ signIn.get().doSignIn();
+ }
+ });
+ stateManager.get().addSiteToken(SiteCommonTokens.REGISTER, new HistoryTokenCallback() {
+ @Override
+ public void onHistoryToken() {
+ register.get().doRegister();
+ }
+ });
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/state/SiteTokenListeners.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/core/client/state/StateManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateManager.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/state/StateManager.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -19,7 +19,7 @@
*/
package cc.kune.core.client.state;
-import cc.kune.core.client.actions.BeforeActionListener;
+import cc.kune.common.client.actions.BeforeActionListener;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.SocialNetworkDataDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
Modified: trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -21,8 +21,8 @@
import java.util.HashMap;
-import cc.kune.core.client.actions.BeforeActionCollection;
-import cc.kune.core.client.actions.BeforeActionListener;
+import cc.kune.common.client.actions.BeforeActionCollection;
+import cc.kune.common.client.actions.BeforeActionListener;
import cc.kune.core.client.notify.spiner.ProgressHideEvent;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.shared.domain.utils.StateToken;
Added: trunk/src/main/java/cc/kune/core/client/ui/DefaultForm.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/DefaultForm.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/ui/DefaultForm.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,152 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ \*/
+package cc.kune.core.client.ui;
+
+import java.util.List;
+
+import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
+import com.extjs.gxt.ui.client.event.BaseEvent;
+import com.extjs.gxt.ui.client.event.EventType;
+import com.extjs.gxt.ui.client.event.Listener;
+import com.extjs.gxt.ui.client.widget.Component;
+import com.extjs.gxt.ui.client.widget.Label;
+import com.extjs.gxt.ui.client.widget.button.Button;
+import com.extjs.gxt.ui.client.widget.form.Field;
+import com.extjs.gxt.ui.client.widget.form.FieldSet;
+import com.extjs.gxt.ui.client.widget.form.FormPanel;
+import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
+
+public class DefaultForm {
+
+ public static final int DEF_FIELD_LABEL_WITH = 75;
+ public static final int DEF_FIELD_WIDTH = 200;
+ public static final int DEF_MEDIUM_FIELD_WIDTH = 150;
+ public static final int DEF_SMALL_FIELD_WIDTH = 100;
+ public static final int DEF_XSMALL_FIELD_WIDTH = 50;
+
+ private final FormPanel form;
+
+ public DefaultForm() {
+ this(HorizontalAlignment.RIGHT);
+ }
+
+ public DefaultForm(final HorizontalAlignment buttonAlign) {
+ form = new FormPanel();
+ form.setFrame(true);
+ form.setPadding(10);
+ form.setBorders(false);
+ form.setLabelWidth(DEF_FIELD_LABEL_WITH);
+ form.setLabelAlign(LabelAlign.RIGHT);
+ form.setButtonAlign(buttonAlign);
+ form.setHeaderVisible(false);
+ }
+
+ public DefaultForm(final String title) {
+ this(title, HorizontalAlignment.RIGHT);
+ }
+
+ public DefaultForm(final String title, final HorizontalAlignment buttonAlign) {
+ this(buttonAlign);
+ form.setTitle(title);
+ }
+
+ public void add(final Field<?> field) {
+ form.add(field);
+ }
+
+ public void add(final FieldSet fieldset) {
+ form.add(fieldset);
+ }
+
+ public void add(final Label label) {
+ form.add(label);
+ }
+
+ public void addButton(final Button button) {
+ form.addButton(button);
+ }
+
+ public void addListener(final EventType eventType, final Listener<? extends BaseEvent> listener) {
+ form.addListener(eventType, listener);
+ }
+
+ public void addStyleName(final String cls) {
+ form.addStyleName(cls);
+ }
+
+ public FormPanel getFormPanel() {
+ return form;
+ }
+
+ public void insert(final int index, final Component component) {
+ form.insert(component, index);
+ }
+
+ public boolean isValid() {
+ return form.isValid();
+ }
+
+ public void removeStyleName(final String cls) {
+ form.removeStyleName(cls);
+ }
+
+ public void reset() {
+ form.reset();
+ }
+
+ public void setAutoHeight(final boolean autoHeight) {
+ form.setAutoHeight(autoHeight);
+ }
+
+ public void setAutoWidth(final boolean autoWidth) {
+ form.setAutoWidth(autoWidth);
+ }
+
+ public void setFrame(final boolean frame) {
+ form.setFrame(frame);
+ }
+
+ public void setHeight(final int height) {
+ form.setHeight(height);
+ }
+
+ public void setHideLabels(final boolean hide) {
+ form.setHideLabels(hide);
+ }
+
+ public void setIconCls(final String iconCls) {
+ form.setIconStyle(iconCls);
+ }
+
+ public void setPadding(final int padding) {
+ form.setPadding(padding);
+ }
+
+ public void setWidth(final int width) {
+ form.setWidth(width);
+ }
+
+ public void validate() {
+ final List<Field<?>> fields = form.getFields();
+ for (final Field<?> field : fields) {
+ field.validate();
+ }
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/ui/DefaultForm.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialog.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialog.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,5 +1,8 @@
package cc.kune.core.client.ui.dialogs;
+import cc.kune.common.client.ui.IconLabel;
+import cc.kune.common.client.utils.TextUtils;
+
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.uibinder.client.UiBinder;
@@ -8,57 +11,54 @@
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasDirectionalText;
import com.google.gwt.user.client.ui.HasText;
-import com.google.gwt.user.client.ui.InlineLabel;
import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
public class BasicDialog extends Composite implements BasicDialogView {
+ interface BasicDialogUiBinder extends UiBinder<Widget, BasicDialog> {
+ }
private static BasicDialogUiBinder uiBinder = GWT.create(BasicDialogUiBinder.class);
@UiField
- InlineLabel title;
+ VerticalPanel bottomPanel;
@UiField
Button firstBtn;
@UiField
Button secondBtn;
@UiField
+ IconLabel title;
+ @UiField
VerticalPanel vp;
- interface BasicDialogUiBinder extends UiBinder<Widget, BasicDialog> {
- }
-
public BasicDialog() {
initWidget(uiBinder.createAndBindUi(this));
- title.ensureDebugId("k-ucvi-title");
- firstBtn.ensureDebugId("k-ucvi-accept-btn");
- secondBtn.ensureDebugId("k-ucvi-cancel-btn");
}
- public void setTitleId(String id) {
- title.ensureDebugId(id);
+ public void ensureDebugIdFirstBtn(final String id) {
+ if (id != null && id.length() > 0) {
+ firstBtn.ensureDebugId(id);
+ }
}
- public void setFirstBtnId(String id) {
- firstBtn.ensureDebugId(id);
+ public void ensureDebugIdSecondBtn(final String id) {
+ if (id != null && id.length() > 0) {
+ secondBtn.ensureDebugId(id);
+ }
}
- public void setSecondBtnId(String id) {
- secondBtn.ensureDebugId(id);
- }
-
@Override
- public HasDirectionalText getTitleText() {
- return title;
+ public ForIsWidget getBottomPanel() {
+ return bottomPanel;
}
@Override
- public HasClickHandlers getSecondBtn() {
- return secondBtn;
+ public HasClickHandlers getFirstBtn() {
+ return firstBtn;
}
@Override
- public HasClickHandlers getFirstBtn() {
+ public HasText getFirstBtnText() {
return firstBtn;
}
@@ -68,12 +68,36 @@
}
@Override
- public HasText getFirstBtnText() {
- return firstBtn;
+ public HasClickHandlers getSecondBtn() {
+ return secondBtn;
}
@Override
public HasText getSecondBtnText() {
return secondBtn;
}
+
+ @Override
+ public HasDirectionalText getTitleText() {
+ return title;
+ }
+
+ public void setFirstBtnId(final String id) {
+ firstBtn.ensureDebugId(id);
+ }
+
+ public void setSecondBtnId(final String id) {
+ secondBtn.ensureDebugId(id);
+ }
+
+ public void setTitleIcon(final String icon) {
+ if (TextUtils.notEmpty(icon)) {
+ title.setIcon(icon);
+ }
+ }
+
+ public void setTitleId(final String id) {
+ title.ensureDebugId(id);
+ }
+
}
Modified: trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialog.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialog.ui.xml 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialog.ui.xml 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,19 +1,21 @@
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
- xmlns:g="urn:import:com.google.gwt.user.client.ui">
- <g:VerticalPanel spacing="12"
- addStyleNames="k-dialog-outerp, k-bottom-10corners, k-opacity80 ">
- <g:SimplePanel>
- <g:VerticalPanel ui:field="vp"
- addStyleNames="k-dialog-innerp, k-3corners, k-opacity90" spacing="10">
- <g:InlineLabel ui:field="title" addStyleNames="k-dialog-title" />
- </g:VerticalPanel>
- </g:SimplePanel>
- <g:FlowPanel>
- <g:Button ui:field="firstBtn"
- addStyleNames="k-dialog-btn, k-dialog-firstBtn, k-5corners " />
- <g:Button ui:field="secondBtn"
- addStyleNames="k-dialog-btn,k-dialog-secondBtn, k-5corners" />
- </g:FlowPanel>
- </g:VerticalPanel>
+ xmlns:k="urn:import:cc.kune.common.client.ui" xmlns:g="urn:import:com.google.gwt.user.client.ui">
+ <g:VerticalPanel spacing="12"
+ addStyleNames="k-dialog-outerp, k-bottom-10corners">
+ <g:SimplePanel>
+ <g:VerticalPanel addStyleNames="k-dialog-innerp, k-3corners"
+ spacing="10">
+ <k:IconLabel ui:field="title" addStyleNames="k-dialog-title" />
+ <g:VerticalPanel ui:field="vp" />
+ <g:VerticalPanel ui:field="bottomPanel"></g:VerticalPanel>
+ </g:VerticalPanel>
+ </g:SimplePanel>
+ <g:FlowPanel>
+ <g:Button ui:field="firstBtn"
+ addStyleNames="k-dialog-btn, k-dialog-firstBtn, k-5corners " />
+ <g:Button ui:field="secondBtn"
+ addStyleNames="k-dialog-btn,k-dialog-secondBtn, k-5corners" />
+ </g:FlowPanel>
+ </g:VerticalPanel>
</ui:UiBinder>
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialogView.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialogView.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicDialogView.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -7,16 +7,18 @@
public interface BasicDialogView {
+ ForIsWidget getBottomPanel();
+
+ HasClickHandlers getFirstBtn();
+
HasText getFirstBtnText();
- HasText getSecondBtnText();
+ ForIsWidget getInnerPanel();
HasClickHandlers getSecondBtn();
- HasClickHandlers getFirstBtn();
+ HasText getSecondBtnText();
HasDirectionalText getTitleText();
- ForIsWidget getInnerPanel();
-
}
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,41 @@
+package cc.kune.core.client.ui.dialogs;
+
+import cc.kune.common.client.ui.PopupPanelTopCentered;
+
+import com.google.gwt.event.logical.shared.HasCloseHandlers;
+import com.google.gwt.user.client.ui.PopupPanel;
+
+public class BasicTopDialog extends BasicDialog {
+
+ private final PopupPanelTopCentered popup;
+
+ public BasicTopDialog(final String dialogId, final String title, final boolean autohide, final boolean modal,
+ final boolean autoscroll, final int width, final int height, final String icon,
+ final String firstButtonTitle, final String firstButtonId, final String cancelButtonTitle,
+ final String cancelButtonId, final int tabIndexStart) {
+ popup = new PopupPanelTopCentered(autohide, modal);
+ popup.add(this);
+ popup.ensureDebugId(dialogId);
+ super.getTitleText().setText(title);
+ // super.setAutoscroll(autoscroll);
+ // super.setSize(String.valueOf(width), String.valueOf(height));
+ super.setTitleIcon(icon);
+ super.getFirstBtnText().setText(firstButtonTitle);
+ super.getSecondBtnText().setText(cancelButtonTitle);
+ super.setFirstBtnId(firstButtonId);
+ super.setSecondBtnId(cancelButtonId);
+ }
+
+ public HasCloseHandlers<PopupPanel> getClose() {
+ return popup;
+ }
+
+ public void hide() {
+ popup.hide();
+
+ }
+
+ public void show() {
+ popup.showCentered();
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/ui/dialogs/BasicTopDialog.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/core/client/ui/dialogs/MessageToolbar.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/MessageToolbar.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ui/dialogs/MessageToolbar.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/ui/dialogs/MessageToolbar.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,73 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.ui.dialogs;
+
+import cc.kune.common.client.noti.NotifyLevel;
+import cc.kune.common.client.noti.NotifyLevelImages;
+
+import com.extjs.gxt.ui.client.widget.Label;
+import com.extjs.gxt.ui.client.widget.WidgetComponent;
+import com.extjs.gxt.ui.client.widget.toolbar.LabelToolItem;
+import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
+import com.google.gwt.resources.client.ImageResource;
+import com.google.gwt.user.client.ui.Image;
+
+public class MessageToolbar {
+ private final Image errorIcon;
+ private final Label errorLabel;
+ private final NotifyLevelImages images;
+ private final ToolBar toolbar;
+
+ public MessageToolbar(final NotifyLevelImages images, final String errorLabelId) {
+ this.images = images;
+ toolbar = new ToolBar();
+ errorLabel = new Label("");
+ errorLabel.ensureDebugId(errorLabelId);
+ errorIcon = new Image();
+ errorIcon.setResource(images.getImage(NotifyLevel.error));
+ toolbar.add(new LabelToolItem());
+ toolbar.add(new LabelToolItem());
+ toolbar.add(new WidgetComponent(errorIcon));
+ toolbar.setStyleName("k-error-tb");
+ toolbar.add(new LabelToolItem());
+ toolbar.add(new LabelToolItem());
+ toolbar.add(errorLabel);
+ errorIcon.setVisible(false);
+ toolbar.setVisible(false);
+ }
+
+ public ToolBar getToolbar() {
+ return toolbar;
+ }
+
+ public void hideErrorMessage() {
+ errorIcon.setVisible(false);
+ errorLabel.setText("");
+ toolbar.setVisible(false);
+ }
+
+ public void setErrorMessage(final String message, final NotifyLevel level) {
+ errorLabel.setText(message);
+ final ImageResource icon = images.getImage(level);
+ errorIcon.setResource(icon);
+ errorIcon.setVisible(true);
+ toolbar.setVisible(true);
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/client/ws/CorePlaceManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ws/CorePlaceManager.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/ws/CorePlaceManager.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -3,9 +3,9 @@
import com.google.gwt.event.shared.EventBus;
import com.google.inject.Inject;
import com.gwtplatform.mvp.client.proxy.PlaceManagerImpl;
-import com.gwtplatform.mvp.client.proxy.PlaceRequest;
import com.gwtplatform.mvp.client.proxy.TokenFormatter;
+@Deprecated
public class CorePlaceManager extends PlaceManagerImpl {
@Inject
@@ -15,6 +15,6 @@
@Override
public void revealDefaultPlace() {
- revealPlace(new PlaceRequest(CorePresenter.HOME_TOKEN));
+ // revealPlace(new PlaceRequest(CorePresenter.HOME_TOKEN));
}
}
Modified: trunk/src/main/java/cc/kune/core/client/ws/CorePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ws/CorePresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/client/ws/CorePresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -7,35 +7,32 @@
import com.google.inject.Inject;
import com.gwtplatform.mvp.client.Presenter;
import com.gwtplatform.mvp.client.View;
-import com.gwtplatform.mvp.client.annotations.NameToken;
-import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit;
import com.gwtplatform.mvp.client.annotations.ProxyEvent;
-import com.gwtplatform.mvp.client.proxy.ProxyPlace;
+import com.gwtplatform.mvp.client.annotations.ProxyStandard;
+import com.gwtplatform.mvp.client.proxy.Proxy;
import com.gwtplatform.mvp.client.proxy.RevealRootLayoutContentEvent;
/**
* The Class CorePresenter.
*/
public class CorePresenter extends Presenter<CorePresenter.CoreView, CorePresenter.CoreProxy> {
- @ProxyCodeSplit
- @NameToken(HOME_TOKEN)
- public interface CoreProxy extends ProxyPlace<CorePresenter> {
+ @ProxyStandard
+ public interface CoreProxy extends Proxy<CorePresenter> {
}
public interface CoreView extends View {
}
- public static final String HOME_TOKEN = "";
-
private final AppStarter appStarter;
@Inject
- public CorePresenter(final EventBus eventBus, final CoreView view, final CoreProxy proxy, AppStarter appStarter) {
+ public CorePresenter(final EventBus eventBus, final CoreView view, final CoreProxy proxy,
+ final AppStarter appStarter) {
super(eventBus, view, proxy);
this.appStarter = appStarter;
}
@ProxyEvent
- public void onI18nReady(I18nReadyEvent event) {
+ public void onI18nReady(final I18nReadyEvent event) {
appStarter.start();
}
Modified: trunk/src/main/java/cc/kune/core/public/ws.css
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.css 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/public/ws.css 2011-01-28 00:16:03 UTC (rev 1225)
@@ -3,18 +3,18 @@
body {
background-color: white;
color: black;
- font-family: 'UbuntuRegular', Arial;
+ font-family: 'Ubuntu', Arial;
font-size: small;
margin: 5px;
overflow: hidden;
}
* {
- font-family: 'UbuntuRegular', Arial;
+ font-family: 'Ubuntu', Arial;
}
body.fontface {
- font: 'UbuntuRegular', Arial;
+ font: 'Ubuntu', Arial;
}
a {
@@ -368,17 +368,16 @@
}
.x-btn button {
- font: 18px/27px UbuntuRegular, arial;
+ font: 18px/27px 'Ubuntu', arial;
}
.k-btn-sitebar button {
- font: 13px UbuntuRegular, arial;
+ font: 13px 'Ubuntu', arial;
color:#B3B3B3;
cursor:pointer;
text-decoration:underline;
white-space:nowrap;
margin-top: -5px;
- border-bottom:1px solid #B3B3B3;
}
.k-sitebar {
Modified: trunk/src/main/java/cc/kune/core/public/ws.html
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.html 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/cc/kune/core/public/ws.html 2011-01-28 00:16:03 UTC (rev 1225)
@@ -11,12 +11,11 @@
<script src="//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js"></script>
<script>
WebFont.load({
- custom: {
- families: ['UbuntuRegular', 'UbuntuItalic'],
- urls : ['http://kune.ourproject.org/kothers/ubuntufontface.css']
- }
-});
+ google: {
+ families: [ 'Ubuntu' ]
+ }});
</script>
+<link href='http://fonts.googleapis.com/css?family=Ubuntu:regular,italic,bold,bolditalic' rel='stylesheet' type='text/css'>
<!-- <link href='http://fonts.googleapis.com/css?family=Inconsolata'
rel='stylesheet' type='text/css'> -->
<link type="text/css" rel="stylesheet" href="gxt/css/gxt-all.css">
Modified: trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml 2011-01-28 00:16:03 UTC (rev 1225)
@@ -44,7 +44,7 @@
<inherits name="com.google.gwt.wave.Wave" />
<inherits name="org.ourproject.kune.ws.armor.WsArmor" />
<!-- Specify the app entry point class. -->
- <entry-point class="org.ourproject.kune.app.client.KuneEntryPoint" />
+ <entry-point class="org.ourproject.kune.app.client.OldKuneEntryPoint" />
<!-- excluding test sources for this module workaround for open issue 4454
see http://code.google.com/p/google-web-toolkit/issues/detail?id=4454 -->
<source path='client' excludes="**/*Test.java,**/*Tests.java,**/*MockProvider.java"/>
Deleted: trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,63 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.app.client;
-
-import org.ourproject.kune.platf.client.services.Loader;
-import org.ourproject.kune.platf.client.services.PlatformModule;
-
-import com.allen_sauer.gwt.log.client.Log;
-import com.google.gwt.core.client.EntryPoint;
-import com.google.gwt.core.client.Scheduler;
-import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-
-public class KuneEntryPoint implements EntryPoint {
-
- @Override
- public void onModuleLoad() {
- Log.setUncaughtExceptionHandler();
-
- Scheduler.get().scheduleDeferred(new ScheduledCommand() {
- @Override
- public void execute() {
- onModuleLoadCont();
- }
- });
- }
-
- public void onModuleLoadCont() {
- // At the moment, in runtime:
- Log.setCurrentLogLevel(Log.LOG_LEVEL_DEBUG);
- // final WsArmorResources resources = WsArmorResources.INSTANCE;
- // resources.style().ensureInjected();
- //
- // final Body body = new Body();
- // RootLayoutPanel.get().add(body);
- // Loader.install(new RegistryModule(), new DocumentClientModule(), new
- // BlogClientModule(),
- // new WikiClientModule(), new GalleryClientModule(), new
- // EmiteUIModule(), new ChatClientModule(),
- // new WorkspaceModule(), new PlatformModule());
-
- Loader.install(new PlatformModule());
-
- // We install our HelloWorldModule
- // Loader.install(new HelloWorldModule());
- }
-}
Copied: trunk/src/main/java/org/ourproject/kune/app/client/OldKuneEntryPoint.java (from rev 1223, trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/client/OldKuneEntryPoint.java (rev 0)
+++ trunk/src/main/java/org/ourproject/kune/app/client/OldKuneEntryPoint.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -0,0 +1,63 @@
+/*
+ *
+ * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.app.client;
+
+import org.ourproject.kune.platf.client.services.Loader;
+import org.ourproject.kune.platf.client.services.PlatformModule;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.core.client.EntryPoint;
+import com.google.gwt.core.client.Scheduler;
+import com.google.gwt.core.client.Scheduler.ScheduledCommand;
+
+public class OldKuneEntryPoint implements EntryPoint {
+
+ @Override
+ public void onModuleLoad() {
+ Log.setUncaughtExceptionHandler();
+
+ Scheduler.get().scheduleDeferred(new ScheduledCommand() {
+ @Override
+ public void execute() {
+ onModuleLoadCont();
+ }
+ });
+ }
+
+ public void onModuleLoadCont() {
+ // At the moment, in runtime:
+ Log.setCurrentLogLevel(Log.LOG_LEVEL_DEBUG);
+ // final WsArmorResources resources = WsArmorResources.INSTANCE;
+ // resources.style().ensureInjected();
+ //
+ // final Body body = new Body();
+ // RootLayoutPanel.get().add(body);
+ // Loader.install(new RegistryModule(), new DocumentClientModule(), new
+ // BlogClientModule(),
+ // new WikiClientModule(), new GalleryClientModule(), new
+ // EmiteUIModule(), new ChatClientModule(),
+ // new WorkspaceModule(), new PlatformModule());
+
+ Loader.install(new PlatformModule());
+
+ // We install our HelloWorldModule
+ // Loader.install(new HelloWorldModule());
+ }
+}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/PlatfMessages.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/PlatfMessages.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/PlatfMessages.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,39 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.platf.client;
-
-public final class PlatfMessages {
- public final static String BUDDIES_NOT_PUBLIC = "The buddies of this user are not public";
- public final static String MEMBERS_NOT_PUBLIC = "The members of this group are not public";
- public final static String REGISTER_TITLE = "Register";
- public final static String SIGN_IN_TITLE = "Sign in";
- public final static String EMAIL_IN_USE = "This email address is being used by another user. Please, try with another one";
- public final static String NAME_IN_USE = "This name in already in use. Please try with a different name";
- public final static String INCORRECT_NICKNAME_EMAIL_OR_PASSWORD = "The nickname/email/password is incorrect";
- public final static String YOUR_HOMEPAGE = "Your homepage";
- public final static String USER_DOESN_T_HAVE_A_HOMEPAGE = "This user does not have a homepage";
- public final static String ENT_LOGO_SELECTOR_NORMAL_TITLE = "Logo";
- public final static String ENT_LOGO_SELECTOR_PERSON_TITLE = "Avatar";
- public final static String GROUP_OPTIONS_DIALOG_TITLE = "Group options";
- public final static String USER_OPTIONS_DIALOG_TITLE = "User options";
-
- private PlatfMessages() {
- }
-}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/Images.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/Images.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/Images.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -23,6 +23,10 @@
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.ImageBundle;
+/**
+ * Use {@link #CoreResources} instead
+ **/
+@Deprecated
public interface Images extends ImageBundle {
public static class App {
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -97,6 +97,7 @@
import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.platf.client.utils.TimerWrapper;
+import cc.kune.common.client.noti.NotifyLevelImages;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.state.AccessRightsClientManager;
@@ -304,7 +305,7 @@
public EditHtmlDialog create() {
final EditHtmlDialogPresenter presenter = new EditHtmlDialogPresenter();
final EditHtmlDialogPanel panel = new EditHtmlDialogPanel(presenter, i(I18nTranslationService.class),
- i(RTEImgResources.class), i(Images.class), i(EditHtmlGroup.class));
+ i(RTEImgResources.class), i(NotifyLevelImages.class), i(EditHtmlGroup.class));
presenter.init(panel);
return presenter;
}
@@ -333,7 +334,7 @@
public InsertImageDialog create() {
final InsertImageDialogPresenter presenter = new InsertImageDialogPresenter();
final InsertImageDialogPanel panel = new InsertImageDialogPanel(presenter,
- i(I18nTranslationService.class), i(Images.class), i(InsertImageGroup.class));
+ i(I18nTranslationService.class), i(NotifyLevelImages.class), i(InsertImageGroup.class));
presenter.init(panel);
return presenter;
}
@@ -353,7 +354,7 @@
@Override
public InsertLinkDialog create() {
final InsertLinkDialogPresenter presenter = new InsertLinkDialogPresenter();
- final InsertLinkDialogPanel panel = new InsertLinkDialogPanel(presenter, i(Images.class),
+ final InsertLinkDialogPanel panel = new InsertLinkDialogPanel(presenter, i(NotifyLevelImages.class),
i(I18nTranslationService.class), i(InsertLinkGroup.class));
presenter.init(panel);
return presenter;
@@ -375,7 +376,7 @@
@Override
public InsertSpecialCharDialog create() {
final InsertSpecialCharDialogPresenter presenter = new InsertSpecialCharDialogPresenter();
- final InsertSpecialCharDialogPanel panel = new InsertSpecialCharDialogPanel(presenter, i(Images.class),
+ final InsertSpecialCharDialogPanel panel = new InsertSpecialCharDialogPanel(presenter, i(NotifyLevelImages.class),
i(I18nTranslationService.class), i(InsertSpecialCharGroup.class), i(RTEImgResources.class));
presenter.init(panel);
return presenter;
@@ -426,7 +427,7 @@
@Override
public InsertMediaDialog create() {
final InsertMediaDialogPresenter presenter = new InsertMediaDialogPresenter();
- final InsertMediaDialogPanel panel = new InsertMediaDialogPanel(presenter, i18n, i(Images.class), i(InsertMediaGroup.class));
+ final InsertMediaDialogPanel panel = new InsertMediaDialogPanel(presenter, i18n, i(NotifyLevelImages.class), i(InsertMediaGroup.class));
presenter.init(panel);
return presenter;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/InfoDialog.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/InfoDialog.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/InfoDialog.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -27,6 +27,7 @@
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
+@Deprecated
public class InfoDialog extends BasicDialog {
private final Panel mainPanel;
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/MessageToolbar.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/MessageToolbar.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/MessageToolbar.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,69 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.platf.client.ui.dialogs;
-
-import org.ourproject.kune.platf.client.services.Images;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
-
-import com.google.gwt.user.client.ui.AbstractImagePrototype;
-import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.Label;
-import com.gwtext.client.widgets.Toolbar;
-
-public class MessageToolbar {
- private final Toolbar toolbar;
- private final Image errorIcon;
- private final Label errorLabel;
-
- public MessageToolbar(Images images, String errorLabelId) {
- toolbar = new Toolbar();
- errorLabel = new Label("");
- errorLabel.ensureDebugId(errorLabelId);
- errorIcon = new Image();
- images.error().applyTo(errorIcon);
- toolbar.addSpacer();
- toolbar.addElement(errorIcon.getElement());
- toolbar.setCls("k-error-tb");
- toolbar.addSpacer();
- toolbar.addSpacer();
- toolbar.addElement(errorLabel.getElement());
- errorIcon.setVisible(false);
- toolbar.setVisible(false);
- }
-
- public Toolbar getToolbar() {
- return toolbar;
- }
-
- public void hideErrorMessage() {
- errorIcon.setVisible(false);
- errorLabel.setText("");
- toolbar.setVisible(false);
- }
-
- public void setErrorMessage(final String message, final Level level) {
- errorLabel.setText(message);
- AbstractImagePrototype icon = NotifyUser.getImage(level);
- icon.applyTo(errorIcon);
- errorIcon.setVisible(true);
- toolbar.setVisible(true);
- }
-}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialog.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialog.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialog.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -20,18 +20,19 @@
package org.ourproject.kune.platf.client.ui.dialogs.tabbed;
import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
+import cc.kune.common.client.noti.NotifyLevel;
+
public interface AbstractTabbedDialog {
- public void hideMessages();
-
- public void setErrorMessage(String message, Level level);
-
void activateTab(int index);
void addTab(View view);
+ public void hideMessages();
+
+ public void setErrorMessage(String message, NotifyLevel level);
+
void show();
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -22,12 +22,13 @@
import java.util.ArrayList;
import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.platf.client.ui.dialogs.BasicDialog;
import org.ourproject.kune.platf.client.ui.dialogs.DefaultForm;
-import org.ourproject.kune.platf.client.ui.dialogs.MessageToolbar;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
+import cc.kune.common.client.noti.NotifyLevel;
+import cc.kune.common.client.noti.NotifyLevelImages;
+import cc.kune.core.client.ui.dialogs.MessageToolbar;
+
import com.allen_sauer.gwt.log.client.Log;
import com.calclab.suco.client.events.Listener0;
import com.gwtext.client.widgets.Button;
@@ -37,24 +38,25 @@
import com.gwtext.client.widgets.event.WindowListenerAdapter;
public abstract class AbstractTabbedDialogPanel implements AbstractTabbedDialogView {
+ private final ArrayList<Button> buttons;
private BasicDialog dialog;
private final String dialogId;
- private TabPanel tabPanel;
+ private final String errorLabelId;
+ private final int height;
+ private String iconCls;
+ private final NotifyLevelImages images;
private MessageToolbar messageErrorBar;
- private String title;
- private final int width;
- private final int height;
+ private final int minHeight;
private final int minWidth;
- private final int minHeight;
private final boolean modal;
- private final Images images;
- private final String errorLabelId;
- private String iconCls;
private Listener0 onHideListener;
- private final ArrayList<Button> buttons;
+ private TabPanel tabPanel;
+ private String title;
+ private final int width;
public AbstractTabbedDialogPanel(final String dialogId, final String title, final int width, final int height,
- final int minWidth, final int minHeight, final boolean modal, final Images images, final String errorLabelId) {
+ final int minWidth, final int minHeight, final boolean modal, final NotifyLevelImages images,
+ final String errorLabelId) {
this.dialogId = dialogId;
this.title = title;
this.width = width;
@@ -67,6 +69,7 @@
buttons = new ArrayList<Button>();
}
+ @Override
public void activateTab(final int index) {
createDialogIfNecessary();
tabPanel.activate(index);
@@ -81,6 +84,20 @@
buttons.add(button);
}
+ private void addHideListener() {
+ dialog.addListener(new WindowListenerAdapter() {
+ @Override
+ public void onClose(final Panel panel) {
+ onHideListener.onEvent();
+ }
+
+ @Override
+ public void onHide(final Component component) {
+ onHideListener.onEvent();
+ }
+ });
+ }
+
public void addHideListener(final Listener0 onHideListener) {
this.onHideListener = onHideListener;
if (dialog != null) {
@@ -88,16 +105,62 @@
}
}
+ @Override
public void addTab(final View view) {
addTabPanel(castPanel(view));
doLayoutIfNeeded();
}
+ private void addTabPanel(final Panel newTab) {
+ createDialogIfNecessary();
+ tabPanel.add(newTab);
+ }
+
+ private Panel castPanel(final View view) {
+ Panel panel;
+ if (view instanceof Panel) {
+ panel = (Panel) view;
+ } else if (view instanceof DefaultForm) {
+ panel = ((DefaultForm) view).getFormPanel();
+ } else {
+ panel = null;
+ Log.error("Programatic error: Unexpected element added to GroupOptions");
+ }
+ return panel;
+ }
+
+ @Override
public void createAndShow() {
show();
setFirstTabActive();
}
+ private void createDialog() {
+ dialog = new BasicDialog(dialogId, title, modal, true, width, height, minWidth, minHeight);
+ dialog.setCollapsible(false);
+ messageErrorBar = new MessageToolbar(images, errorLabelId);
+ // FIXME in gxt: dialog.setBottomToolbar(messageErrorBar.getToolbar());
+ tabPanel = new TabPanel();
+ tabPanel.setBorder(false);
+ dialog.add(tabPanel);
+ if (iconCls != null) {
+ dialog.setIconCls(iconCls);
+ }
+ if (onHideListener != null) {
+ addHideListener();
+ }
+ for (final Button button : buttons) {
+ dialog.addButton(button);
+ }
+ }
+
+ private void createDialogIfNecessary() {
+ if (dialog == null) {
+ createDialog();
+ }
+ }
+
+ @Override
public void destroy() {
if (dialog != null) {
dialog.destroy();
@@ -111,6 +174,7 @@
}
}
+ @Override
public void hide() {
if (dialog != null) {
if (dialog.isVisible()) {
@@ -119,23 +183,31 @@
}
}
+ @Override
public void hideMessages() {
if (dialog != null) {
messageErrorBar.hideErrorMessage();
}
}
+ @Override
public void insertTab(final int index, final View view) {
insertTabPanel(index, castPanel(view));
doLayoutIfNeeded();
}
+ private void insertTabPanel(final int index, final Panel newTab) {
+ createDialogIfNecessary();
+ tabPanel.insert(index, newTab);
+ }
+
public boolean isVisible() {
createDialogIfNecessary();
return dialog.isVisible();
}
- public void setErrorMessage(final String message, final Level level) {
+ @Override
+ public void setErrorMessage(final String message, final NotifyLevel level) {
messageErrorBar.setErrorMessage(message, level);
}
@@ -161,66 +233,4 @@
createDialogIfNecessary();
dialog.show();
}
-
- private void addHideListener() {
- dialog.addListener(new WindowListenerAdapter() {
- @Override
- public void onClose(final Panel panel) {
- onHideListener.onEvent();
- }
-
- @Override
- public void onHide(final Component component) {
- onHideListener.onEvent();
- }
- });
- }
-
- private void addTabPanel(final Panel newTab) {
- createDialogIfNecessary();
- tabPanel.add(newTab);
- }
-
- private Panel castPanel(final View view) {
- Panel panel;
- if (view instanceof Panel) {
- panel = (Panel) view;
- } else if (view instanceof DefaultForm) {
- panel = ((DefaultForm) view).getFormPanel();
- } else {
- panel = null;
- Log.error("Programatic error: Unexpected element added to GroupOptions");
- }
- return panel;
- }
-
- private void createDialog() {
- dialog = new BasicDialog(dialogId, title, modal, true, width, height, minWidth, minHeight);
- dialog.setCollapsible(false);
- messageErrorBar = new MessageToolbar(images, errorLabelId);
- dialog.setBottomToolbar(messageErrorBar.getToolbar());
- tabPanel = new TabPanel();
- tabPanel.setBorder(false);
- dialog.add(tabPanel);
- if (iconCls != null) {
- dialog.setIconCls(iconCls);
- }
- if (onHideListener != null) {
- addHideListener();
- }
- for (final Button button : buttons) {
- dialog.addButton(button);
- }
- }
-
- private void createDialogIfNecessary() {
- if (dialog == null) {
- createDialog();
- }
- }
-
- private void insertTabPanel(final int index, final Panel newTab) {
- createDialogIfNecessary();
- tabPanel.insert(index, newTab);
- }
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialogPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialogPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialogPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -20,16 +20,19 @@
package org.ourproject.kune.platf.client.ui.dialogs.tabbed;
import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
+import cc.kune.common.client.noti.NotifyLevel;
+
public abstract class AbstractTabbedDialogPresenter implements AbstractTabbedDialog {
private AbstractTabbedDialogView view;
+ @Override
public void activateTab(final int index) {
view.activateTab(index);
}
+ @Override
public void addTab(final View tab) {
view.addTab(tab);
}
@@ -42,6 +45,7 @@
view.hide();
}
+ @Override
public void hideMessages() {
view.hideMessages();
}
@@ -54,10 +58,11 @@
view.insertTab(index, tab);
}
- public void setErrorMessage(final String message, final Level level) {
+ public void setErrorMessage(final String message, final NotifyLevel level) {
view.setErrorMessage(message, level);
}
+ @Override
public void show() {
hideMessages();
view.createAndShow();
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialogView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialogView.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/tabbed/AbstractTabbedDialogView.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -20,8 +20,9 @@
package org.ourproject.kune.platf.client.ui.dialogs.tabbed;
import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
+import cc.kune.common.client.noti.NotifyLevel;
+
public interface AbstractTabbedDialogView extends View {
void activateTab(int index);
@@ -38,6 +39,6 @@
void insertTab(int index, View tab);
- void setErrorMessage(final String message, final Level level);
+ void setErrorMessage(final String message, final NotifyLevel level);
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/edithtml/EditHtmlDialogPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/edithtml/EditHtmlDialogPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/edithtml/EditHtmlDialogPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,10 +1,10 @@
package org.ourproject.kune.platf.client.ui.rte.edithtml;
-import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.platf.client.ui.dialogs.tabbed.AbstractTabbedDialogPanel;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
import org.ourproject.kune.platf.client.ui.rte.img.RTEImgResources;
+import cc.kune.common.client.noti.NotifyLevel;
+import cc.kune.common.client.noti.NotifyLevelImages;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.gwt.user.client.Window;
@@ -14,15 +14,15 @@
public class EditHtmlDialogPanel extends AbstractTabbedDialogPanel implements EditHtmlDialogView {
+ public static final String EDIG_HTML_DIALOG_ERROR_ID = "ehtml-dialgo-error";
public static final String EDIT_HTML_DIALOG = "ehtml-dialog";
- public static final String EDIG_HTML_DIALOG_ERROR_ID = "ehtml-dialgo-error";
+ private Button cancel;
private final EditHtmlGroup editHtmlGroup;
private final I18nTranslationService i18n;
- private Button cancel;
private final EditHtmlDialogPresenter presenter;
- public EditHtmlDialogPanel(final EditHtmlDialogPresenter presenter, I18nTranslationService i18n, RTEImgResources resources,
- Images images, EditHtmlGroup editHtmlGroup) {
+ public EditHtmlDialogPanel(final EditHtmlDialogPresenter presenter, final I18nTranslationService i18n,
+ final RTEImgResources resources, final NotifyLevelImages images, final EditHtmlGroup editHtmlGroup) {
super(EDIT_HTML_DIALOG, i18n.tWithNT("Edit the HTML",
"Option in a content editor to edit the html internal code (for advance users)"),
Window.getClientWidth() - 100, HEIGHT + 80, Window.getClientWidth() - 100, HEIGHT + 80, true, images,
@@ -38,16 +38,16 @@
public void createAndShow() {
if (cancel == null) {
cancel = new Button(i18n.t("Cancel"));
- Button update = new Button(i18n.t("Update"));
+ final Button update = new Button(i18n.t("Update"));
cancel.addListener(new ButtonListenerAdapter() {
@Override
- public void onClick(Button button, EventObject e) {
+ public void onClick(final Button button, final EventObject e) {
presenter.onCancel();
}
});
update.addListener(new ButtonListenerAdapter() {
@Override
- public void onClick(Button button, EventObject e) {
+ public void onClick(final Button button, final EventObject e) {
presenter.onUpdate();
}
});
@@ -56,6 +56,6 @@
}
editHtmlGroup.createAll();
super.createAndShow();
- super.setErrorMessage(i18n.t("This option is only for advanced users"), Level.info);
+ super.setErrorMessage(i18n.t("This option is only for advanced users"), NotifyLevel.info);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertimg/InsertImageDialogPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertimg/InsertImageDialogPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertimg/InsertImageDialogPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,8 +1,8 @@
package org.ourproject.kune.platf.client.ui.rte.insertimg;
-import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.platf.client.ui.dialogs.tabbed.AbstractTabbedDialogPanel;
+import cc.kune.common.client.noti.NotifyLevelImages;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.calclab.suco.client.events.Listener0;
@@ -17,19 +17,20 @@
private final InsertImageGroup insertImageGroup;
public InsertImageDialogPanel(final InsertImageDialogPresenter presenter, final I18nTranslationService i18n,
- final Images images, final InsertImageGroup insertImageGroup) {
+ final NotifyLevelImages images, final InsertImageGroup insertImageGroup) {
super(INSERT_IMG_DIALOG, i18n.t("Insert Image"), 390, HEIGHT + 100, 390, HEIGHT + 100, true, images,
INSERT_IMG_DIALOG_ERROR_ID);
super.setIconCls("k-picture-icon");
this.insertImageGroup = insertImageGroup;
super.addHideListener(new Listener0() {
+ @Override
public void onEvent() {
insertImageGroup.resetAll();
}
});
- Button insert = new Button(i18n.t("Insert"));
+ final Button insert = new Button(i18n.t("Insert"));
insert.addListener(new ButtonListenerAdapter() {
@Override
public void onClick(final Button button, final EventObject e) {
@@ -37,7 +38,7 @@
}
});
- Button cancel = new Button(i18n.t("Cancel"));
+ final Button cancel = new Button(i18n.t("Cancel"));
cancel.addListener(new ButtonListenerAdapter() {
@Override
public void onClick(final Button button, final EventObject e) {
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertlink/InsertLinkDialogPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertlink/InsertLinkDialogPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertlink/InsertLinkDialogPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -19,9 +19,9 @@
*/
package org.ourproject.kune.platf.client.ui.rte.insertlink;
-import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.platf.client.ui.dialogs.tabbed.AbstractTabbedDialogPanel;
+import cc.kune.common.client.noti.NotifyLevelImages;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.calclab.suco.client.events.Listener0;
@@ -34,31 +34,32 @@
public static final String TEXT_EDT_INSERT_DIALOG_ERROR_ID = "k-ted-iep-dialog-err";
private final InsertLinkGroup textEditorInsertElementGroup;
- public InsertLinkDialogPanel(final InsertLinkDialogPresenter presenter, Images images, I18nTranslationService i18n,
- final InsertLinkGroup textEditorInsertElementGroup) {
+ public InsertLinkDialogPanel(final InsertLinkDialogPresenter presenter, final NotifyLevelImages images,
+ final I18nTranslationService i18n, final InsertLinkGroup textEditorInsertElementGroup) {
super(TEXT_EDT_INSERT_DIALOG, i18n.tWithNT("Insert a link",
"Option in a text editor to insert links and other elements"), 380, HEIGHT + 100, 380, HEIGHT + 100,
true, images, TEXT_EDT_INSERT_DIALOG_ERROR_ID);
super.setIconCls("k-link-icon");
this.textEditorInsertElementGroup = textEditorInsertElementGroup;
super.addHideListener(new Listener0() {
+ @Override
public void onEvent() {
textEditorInsertElementGroup.resetAll();
}
});
- Button insert = new Button(i18n.t("Insert"));
+ final Button insert = new Button(i18n.t("Insert"));
insert.addListener(new ButtonListenerAdapter() {
@Override
- public void onClick(Button button, EventObject e) {
+ public void onClick(final Button button, final EventObject e) {
presenter.onInsert();
}
});
- Button cancel = new Button(i18n.t("Cancel"));
+ final Button cancel = new Button(i18n.t("Cancel"));
cancel.addListener(new ButtonListenerAdapter() {
@Override
- public void onClick(Button button, EventObject e) {
+ public void onClick(final Button button, final EventObject e) {
presenter.onCancel();
}
});
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertmedia/InsertMediaDialogPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertmedia/InsertMediaDialogPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertmedia/InsertMediaDialogPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,8 +1,8 @@
package org.ourproject.kune.platf.client.ui.rte.insertmedia;
-import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.platf.client.ui.dialogs.tabbed.AbstractTabbedDialogPanel;
+import cc.kune.common.client.noti.NotifyLevelImages;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.calclab.suco.client.events.Listener0;
@@ -17,19 +17,20 @@
private final InsertMediaGroup insertMediaGroup;
public InsertMediaDialogPanel(final InsertMediaDialogPresenter presenter, final I18nTranslationService i18n,
- final Images images, final InsertMediaGroup insertMediaGroup) {
+ final NotifyLevelImages images, final InsertMediaGroup insertMediaGroup) {
super(INSERT_MEDIA_DIALOG, i18n.t("Insert Media (audio/video)"), 390, HEIGHT + 100, 390, HEIGHT + 100, true,
images, INSERT_MEDIA_DIALOG_ERROR_ID);
super.setIconCls("k-film-icon");
this.insertMediaGroup = insertMediaGroup;
super.addHideListener(new Listener0() {
+ @Override
public void onEvent() {
insertMediaGroup.resetAll();
}
});
- Button insert = new Button(i18n.t("Insert"));
+ final Button insert = new Button(i18n.t("Insert"));
insert.addListener(new ButtonListenerAdapter() {
@Override
public void onClick(final Button button, final EventObject e) {
@@ -37,7 +38,7 @@
}
});
- Button cancel = new Button(i18n.t("Cancel"));
+ final Button cancel = new Button(i18n.t("Cancel"));
cancel.addListener(new ButtonListenerAdapter() {
@Override
public void onClick(final Button button, final EventObject e) {
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertmedia/ext/InsertMediaExtPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertmedia/ext/InsertMediaExtPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertmedia/ext/InsertMediaExtPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,17 +1,17 @@
package org.ourproject.kune.platf.client.ui.rte.insertmedia.ext;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
import org.ourproject.kune.platf.client.ui.rte.insertmedia.ExternalMediaRegistry;
import org.ourproject.kune.platf.client.ui.rte.insertmedia.InsertMediaDialog;
import org.ourproject.kune.platf.client.ui.rte.insertmedia.abstractmedia.InsertMediaAbstractPresenter;
+import cc.kune.common.client.noti.NotifyLevel;
import cc.kune.core.shared.dto.ExtMediaDescripDTO;
public class InsertMediaExtPresenter extends InsertMediaAbstractPresenter implements InsertMediaExt {
- private InsertMediaExtView view;
private final ExternalMediaRegistry externalMediaRegistry;
private ExtMediaDescripDTO mediaDescriptor;
+ private InsertMediaExtView view;
public InsertMediaExtPresenter(final InsertMediaDialog insertMediaDialog,
final ExternalMediaRegistry externalMediaRegistry) {
@@ -26,10 +26,10 @@
@Override
public boolean isValid() {
- String url = view.getSrc();
+ final String url = view.getSrc();
mediaDescriptor = externalMediaRegistry.get(url);
if (mediaDescriptor.equals(ExternalMediaRegistry.NO_MEDIA)) {
- insertMediaDialog.setErrorMessage("We cannot process this video link", Level.error);
+ insertMediaDialog.setErrorMessage("We cannot process this video link", NotifyLevel.error);
return false;
} else {
return true;
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertspecialchar/InsertSpecialCharDialogPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertspecialchar/InsertSpecialCharDialogPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/insertspecialchar/InsertSpecialCharDialogPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,9 +1,9 @@
package org.ourproject.kune.platf.client.ui.rte.insertspecialchar;
-import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.platf.client.ui.dialogs.tabbed.AbstractTabbedDialogPanel;
import org.ourproject.kune.platf.client.ui.rte.img.RTEImgResources;
+import cc.kune.common.client.noti.NotifyLevelImages;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.gwtext.client.core.EventObject;
@@ -16,14 +16,14 @@
private static final String INSERT_SPECIAL_CHAR_DIALOG_ERROR_ID = "iscdp-err";
private final InsertSpecialCharGroup insertSpecialCharGroup;
- public InsertSpecialCharDialogPanel(final InsertSpecialCharDialogPresenter presenter, final Images images,
- final I18nTranslationService i18n, final InsertSpecialCharGroup insertSpecialCharGroup,
- final RTEImgResources imgResources) {
+ public InsertSpecialCharDialogPanel(final InsertSpecialCharDialogPresenter presenter,
+ final NotifyLevelImages images, final I18nTranslationService i18n,
+ final InsertSpecialCharGroup insertSpecialCharGroup, final RTEImgResources imgResources) {
super(INSERT_SPECIAL_CHAR_DIALOG, i18n.t("Insert Special Character"), 495, HEIGHT + 90, 495, HEIGHT + 90, true,
images, INSERT_SPECIAL_CHAR_DIALOG_ERROR_ID);
super.setIconCls("k-specialchars-icon");
this.insertSpecialCharGroup = insertSpecialCharGroup;
- Button close = new Button(i18n.t("Close"));
+ final Button close = new Button(i18n.t("Close"));
close.addListener(new ButtonListenerAdapter() {
@Override
public void onClick(final Button button, final EventObject e) {
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditor.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditor.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditor.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -2,7 +2,7 @@
import org.ourproject.kune.platf.client.ui.rte.basic.RTEditor;
-import cc.kune.core.client.actions.BeforeActionListener;
+import cc.kune.common.client.actions.BeforeActionListener;
import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -23,7 +23,7 @@
import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.platf.client.utils.TimerWrapper;
-import cc.kune.core.client.actions.BeforeActionListener;
+import cc.kune.common.client.actions.BeforeActionListener;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.i18n.I18nTranslationService;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceMessages.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceMessages.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceMessages.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -20,10 +20,6 @@
package org.ourproject.kune.workspace.client;
public final class WorkspaceMessages {
- public final static String REGISTER_A_NEW_GROUP_TITLE = "Register a new Group";
- public final static String FIELD_MUST_BE_BETWEEN_3_AND_15 = "The name must be between 3 and 15 lowercase characters. It can only contain Western characters, numbers, and dashes";
- public final static String NAME_IN_ALREADY_IN_USE = "This name is already in use. Please try with a different name";
- public final static String REGISTER_TO_CREATE_A_GROUP = "Please, sign in or register to create a group";
private WorkspaceMessages() {
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -155,14 +155,6 @@
import org.ourproject.kune.workspace.client.search.UserLiveSearcher;
import org.ourproject.kune.workspace.client.search.UserLiveSearcherPanel;
import org.ourproject.kune.workspace.client.search.UserLiveSearcherPresenter;
-import org.ourproject.kune.workspace.client.signin.Register;
-import org.ourproject.kune.workspace.client.signin.RegisterPanel;
-import org.ourproject.kune.workspace.client.signin.RegisterPresenter;
-import org.ourproject.kune.workspace.client.signin.RegisterView;
-import org.ourproject.kune.workspace.client.signin.SignIn;
-import org.ourproject.kune.workspace.client.signin.SignInPanel;
-import org.ourproject.kune.workspace.client.signin.SignInPresenter;
-import org.ourproject.kune.workspace.client.signin.SignInView;
import org.ourproject.kune.workspace.client.site.WorkspaceNotifyUser;
import org.ourproject.kune.workspace.client.site.msg.ToastMessage;
import org.ourproject.kune.workspace.client.site.msg.ToastMessagePanel;
@@ -236,6 +228,9 @@
import org.ourproject.kune.workspace.client.wave.WaveInsertPanel;
import org.ourproject.kune.workspace.client.wave.WaveInsertPresenter;
+import cc.kune.common.client.noti.NotifyLevelImages;
+import cc.kune.core.client.auth.Register;
+import cc.kune.core.client.auth.SignIn;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.rpcservices.ContentService;
@@ -633,7 +628,7 @@
final GroupOptionsPresenter presenter = new GroupOptionsPresenter(i(StateManager.class),
i(I18nTranslationService.class), i(ImgResources.class));
final GroupOptionsPanel panel = new GroupOptionsPanel(presenter, i(EntityHeader.class),
- i(I18nTranslationService.class), i(Images.class), i(GroupOptionsCollection.class));
+ i(I18nTranslationService.class), i(NotifyLevelImages.class), i(GroupOptionsCollection.class));
presenter.init(panel);
return presenter;
}
@@ -646,7 +641,7 @@
i(StateManager.class), i(I18nTranslationService.class), i(ImgResources.class),
i(SiteUserOptions.class));
final UserOptionsPanel panel = new UserOptionsPanel(presenter, i(EntityHeader.class),
- i(I18nTranslationService.class), i(Images.class), i(UserOptionsCollection.class));
+ i(I18nTranslationService.class), i(NotifyLevelImages.class), i(UserOptionsCollection.class));
presenter.init(panel);
return presenter;
}
@@ -865,37 +860,44 @@
}
});
- register(Singleton.class, new Factory<SignIn>(SignIn.class) {
- @Override
- public SignIn create() {
- final SignInPresenter presenter = new SignInPresenter(i(Session.class), i(StateManager.class),
- i(I18nUITranslationService.class), p(UserServiceAsync.class), p(Register.class));
- final SignInView panel = new SignInPanel(presenter, i(I18nTranslationService.class),
- i(WorkspaceSkeleton.class), i(Images.class));
- presenter.init(panel);
- return presenter;
- }
- });
+ // register(Singleton.class, new Factory<SignIn>(SignIn.class) {
+ // @Override
+ // public SignIn create() {
+ // final SignInPresenter presenter = new
+ // SignInPresenter(i(Session.class), i(StateManager.class),
+ // i(I18nUITranslationService.class), p(UserServiceAsync.class),
+ // p(Register.class));
+ // final SignInView panel = new SignInPanel(presenter,
+ // i(I18nTranslationService.class),
+ // i(WorkspaceSkeleton.class), i(NotifyLevelImages.class));
+ // presenter.init(panel);
+ // return presenter;
+ // }
+ // });
+ //
+ // register(Singleton.class, new Factory<Register>(Register.class) {
+ // @Override
+ // public Register create() {
+ // final RegisterPresenter presenter = new
+ // RegisterPresenter(i(Session.class), i(StateManager.class),
+ // i(I18nUITranslationService.class), p(UserServiceAsync.class),
+ // p(SignIn.class));
+ // final RegisterView panel = new RegisterPanel(presenter,
+ // i(I18nTranslationService.class),
+ // i(WorkspaceSkeleton.class), i(Session.class),
+ // i(NotifyLevelImages.class));
+ // presenter.init(panel);
+ // return presenter;
+ // }
+ // });
- register(Singleton.class, new Factory<Register>(Register.class) {
- @Override
- public Register create() {
- final RegisterPresenter presenter = new RegisterPresenter(i(Session.class), i(StateManager.class),
- i(I18nUITranslationService.class), p(UserServiceAsync.class), p(SignIn.class));
- final RegisterView panel = new RegisterPanel(presenter, i(I18nTranslationService.class),
- i(WorkspaceSkeleton.class), i(Session.class), i(Images.class));
- presenter.init(panel);
- return presenter;
- }
- });
-
register(Singleton.class, new Factory<NewGroup>(NewGroup.class) {
@Override
public NewGroup create() {
final NewGroupPresenter presenter = new NewGroupPresenter(i(I18nTranslationService.class),
i(Session.class), i(StateManager.class), p(GroupServiceAsync.class));
final NewGroupPanel view = new NewGroupPanel(presenter, i(I18nTranslationService.class),
- p(LicenseWizard.class), i(Images.class));
+ p(LicenseWizard.class), i(NotifyLevelImages.class));
presenter.init(view);
return presenter;
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -19,16 +19,16 @@
*/
package org.ourproject.kune.workspace.client.newgroup;
-import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.platf.client.ui.KuneUiUtils;
import org.ourproject.kune.platf.client.ui.KuneWindowUtils;
import org.ourproject.kune.platf.client.ui.dialogs.DefaultFormUtils;
import org.ourproject.kune.platf.client.ui.dialogs.ExtendedDialog;
-import org.ourproject.kune.platf.client.ui.dialogs.MessageToolbar;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
-import org.ourproject.kune.workspace.client.WorkspaceMessages;
import org.ourproject.kune.workspace.client.licensewizard.LicenseWizard;
+import cc.kune.common.client.noti.NotifyLevel;
+import cc.kune.common.client.noti.NotifyLevelImages;
+import cc.kune.core.client.resources.CoreMessages;
+import cc.kune.core.client.ui.dialogs.MessageToolbar;
import cc.kune.core.shared.dto.LicenseDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -57,45 +57,47 @@
import com.gwtext.client.widgets.layout.HorizontalLayout;
public class NewGroupPanel extends ExtendedDialog implements NewGroupView {
- private static final String MARGIN_LEFT_105PX = "margin-left: 105px";
+ private static final int BIG_FIELD_WIDTH = 280;
+ public static final String CANCEL_BUTTON = "k-ngp-cancel-bt";
+ public static final String COMM_GROUP_TYPE_ID = "k-ngp-type_of_group_comm";
+ public static final String ERROR_MSG_BAR = "k-ngp-error-mb";
private static final int LABEL_WIDTH = 100;
- public static final String SHORTNAME_FIELD = "k-ngp-short_name";
public static final String LONGNAME_FIELD = "k-ngp-long_name";
+ private static final String MARGIN_LEFT_105PX = "margin-left: 105px";
+ public static final String NEWGROUP_WIZARD = "k-ngp-wiz";
+ public static final String ORG_GROUP_TYPE_ID = "k-ngp-type_of_group_org";
+ public static final String PROJ_GROUP_TYPE_ID = "k-ngp-type_of_group_proj";
public static final String PUBLICDESC_FIELD = "k-ngp-public_desc";
+ public static final String REGISTER_BUTTON = "k-ngp-finish-bt";
+ public static final String SHORTNAME_FIELD = "k-ngp-short_name";
+ public static final String TAGS_FIELD = "k-ngp-tags";
public static final String TYPEOFGROUP_FIELD = "k-ngp-type_of_group";
- public static final String PROJ_GROUP_TYPE_ID = "k-ngp-type_of_group_proj";
- public static final String ORG_GROUP_TYPE_ID = "k-ngp-type_of_group_org";
- public static final String COMM_GROUP_TYPE_ID = "k-ngp-type_of_group_comm";
- public static final String TAGS_FIELD = "k-ngp-tags";
- public static final String NEWGROUP_WIZARD = "k-ngp-wiz";
- public static final String REGISTER_BUTTON = "k-ngp-finish-bt";
- public static final String CANCEL_BUTTON = "k-ngp-cancel-bt";
- public static final String ERROR_MSG_BAR = "k-ngp-error-mb";
- private static final int BIG_FIELD_WIDTH = 280;
+ private Radio communityRadio;
private final FormPanel form;
- private Radio projectRadio;
- private Radio orgRadio;
- private Radio communityRadio;
+ private final I18nTranslationService i18n;
+ private LicenseDTO license;
- private TextField shortNameField;
+ private Image licenseImage;
+ private final Provider<LicenseWizard> licenseWizard;
private TextField longNameField;
+ private final MessageToolbar messageErrorBar;
+ private Radio orgRadio;
+ private Radio projectRadio;
private TextArea publicDescField;
+ private TextField shortNameField;
private TextField tags;
- private final MessageToolbar messageErrorBar;
- private final Provider<LicenseWizard> licenseWizard;
- private final I18nTranslationService i18n;
- private Image licenseImage;
- private LicenseDTO license;
public NewGroupPanel(final NewGroupPresenter presenter, final I18nTranslationService i18n,
- final Provider<LicenseWizard> licenseWizard, final Images img) {
- super(NEWGROUP_WIZARD, WorkspaceMessages.REGISTER_A_NEW_GROUP_TITLE, true, true, 450, 430, "k-newgroup-icon",
+ final Provider<LicenseWizard> licenseWizard, final NotifyLevelImages img) {
+ super(NEWGROUP_WIZARD, CoreMessages.REGISTER_A_NEW_GROUP_TITLE, true, true, 450, 430, "k-newgroup-icon",
i18n.t("Cancel"), CANCEL_BUTTON, i18n.t("Register"), REGISTER_BUTTON, new Listener0() {
+ @Override
public void onEvent() {
presenter.onCancel();
}
}, new Listener0() {
+ @Override
public void onEvent() {
presenter.onRegister();
}
@@ -117,68 +119,17 @@
form = createNewGroupInitialDataForm(presenter);
messageErrorBar = new MessageToolbar(img, ERROR_MSG_BAR);
- super.setBottomToolbar(messageErrorBar.getToolbar());
+ // FIXME in gxt super.setBottomToolbar(messageErrorBar.getToolbar());
super.add(form);
}
+ @Override
public void clearData() {
form.getForm().reset();
shortNameField.focus(false);
}
- public LicenseDTO getLicense() {
- return license;
- }
-
- public String getLongName() {
- return longNameField.getValueAsString();
- }
-
- public String getPublicDesc() {
- return publicDescField.getValueAsString();
- }
-
- public String getShortName() {
- return shortNameField.getValueAsString();
- }
-
- public String getTags() {
- return tags.getRawValue();
- }
-
- public void hideMessage() {
- messageErrorBar.hideErrorMessage();
- }
-
- public boolean isCommunity() {
- return communityRadio.getValue();
- }
-
- public boolean isFormValid() {
- return form.getForm().isValid();
- }
-
- public boolean isOrganization() {
- return orgRadio.getValue();
- }
-
- public boolean isProject() {
- return projectRadio.getValue();
- }
-
- public void maskProcessing() {
- mask(i18n.t("Processing"));
- }
-
- public void setLicense(final LicenseDTO license) {
- setLicenseImpl(license);
- }
-
- public void setMessage(final String message, final Level level) {
- messageErrorBar.setErrorMessage(message, level);
- }
-
private FormPanel createNewGroupInitialDataForm(final NewGroupPresenter presenter) {
final FormPanel form = new FormPanel();
form.setFrame(true);
@@ -203,9 +154,9 @@
shortNameField.setMaxLength(15);
shortNameField.setAllowBlank(false);
shortNameField.setRegex("^[a-z0-9_\\-]+$");
- shortNameField.setMinLengthText(i18n.t(WorkspaceMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
- shortNameField.setMaxLengthText(i18n.t(WorkspaceMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
- shortNameField.setRegexText(i18n.t(WorkspaceMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
+ shortNameField.setMinLengthText(i18n.t(CoreMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
+ shortNameField.setMaxLengthText(i18n.t(CoreMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
+ shortNameField.setRegexText(i18n.t(CoreMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
shortNameField.setValidationDelay(1000);
form.add(shortNameField);
@@ -246,6 +197,7 @@
licenseImage = new Image("images/lic/bysa80x15.png");
licenseImage.addClickHandler(new ClickHandler() {
+ @Override
public void onClick(final ClickEvent event) {
KuneWindowUtils.open(license.getUrl());
}
@@ -262,6 +214,7 @@
@Override
public void onClick(final Button button, final EventObject e) {
licenseWizard.get().start(new Listener<LicenseDTO>() {
+ @Override
public void onEvent(final LicenseDTO license) {
setLicenseImpl(license);
}
@@ -314,9 +267,74 @@
return form;
}
+ @Override
+ public LicenseDTO getLicense() {
+ return license;
+ }
+
+ @Override
+ public String getLongName() {
+ return longNameField.getValueAsString();
+ }
+
+ @Override
+ public String getPublicDesc() {
+ return publicDescField.getValueAsString();
+ }
+
+ @Override
+ public String getShortName() {
+ return shortNameField.getValueAsString();
+ }
+
+ @Override
+ public String getTags() {
+ return tags.getRawValue();
+ }
+
+ @Override
+ public void hideMessage() {
+ messageErrorBar.hideErrorMessage();
+ }
+
+ @Override
+ public boolean isCommunity() {
+ return communityRadio.getValue();
+ }
+
+ @Override
+ public boolean isFormValid() {
+ return form.getForm().isValid();
+ }
+
+ @Override
+ public boolean isOrganization() {
+ return orgRadio.getValue();
+ }
+
+ @Override
+ public boolean isProject() {
+ return projectRadio.getValue();
+ }
+
+ @Override
+ public void maskProcessing() {
+ mask(i18n.t("Processing"));
+ }
+
+ @Override
+ public void setLicense(final LicenseDTO license) {
+ setLicenseImpl(license);
+ }
+
private void setLicenseImpl(final LicenseDTO license) {
this.license = license;
licenseImage.setUrl(license.getImageUrl());
KuneUiUtils.setQuickTip(licenseImage, license.getLongName());
}
+
+ @Override
+ public void setMessage(final String message, final NotifyLevel level) {
+ messageErrorBar.setErrorMessage(message, level);
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -21,11 +21,11 @@
import org.ourproject.kune.platf.client.View;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
-import org.ourproject.kune.workspace.client.WorkspaceMessages;
import cc.kune.common.client.errors.UIException;
+import cc.kune.common.client.noti.NotifyLevel;
import cc.kune.core.client.errors.GroupNameInUseException;
+import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
import cc.kune.core.client.state.HistoryTokenCallback;
@@ -79,7 +79,7 @@
NotifyUser.hideProgress();
} else {
stateManager.restorePreviousToken();
- NotifyUser.info(i18n.t(WorkspaceMessages.REGISTER_TO_CREATE_A_GROUP));
+ NotifyUser.info(i18n.t(CoreMessages.REGISTER_TO_CREATE_A_GROUP));
}
}
});
@@ -131,10 +131,10 @@
public void onFailure(final Throwable caught) {
if (caught instanceof GroupNameInUseException) {
view.unMask();
- setMessage(i18n.t(WorkspaceMessages.NAME_IN_ALREADY_IN_USE), Level.error);
+ setMessage(i18n.t(CoreMessages.NAME_IN_ALREADY_IN_USE), NotifyLevel.error);
} else {
view.unMask();
- setMessage(i18n.t("Error creating group"), Level.error);
+ setMessage(i18n.t("Error creating group"), NotifyLevel.error);
throw new UIException("Other kind of exception in group registration", caught);
}
}
@@ -157,7 +157,7 @@
mustGoToPrevious = true;
}
- public void setMessage(final String message, final Level level) {
+ public void setMessage(final String message, final NotifyLevel level) {
view.setMessage(message, level);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupView.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupView.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -20,8 +20,8 @@
package org.ourproject.kune.workspace.client.newgroup;
import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
+import cc.kune.common.client.noti.NotifyLevel;
import cc.kune.core.shared.dto.LicenseDTO;
public interface NewGroupView extends View {
@@ -56,7 +56,7 @@
void setLicense(LicenseDTO license);
- void setMessage(String message, Level level);
+ void setMessage(String message, NotifyLevel level);
void show();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/nohomepage/NoHomePagePanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/nohomepage/NoHomePagePanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/nohomepage/NoHomePagePanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -19,10 +19,10 @@
\*/
package org.ourproject.kune.workspace.client.nohomepage;
-import org.ourproject.kune.platf.client.PlatfMessages;
import org.ourproject.kune.workspace.client.skel.EntityWorkspace;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.gwt.user.client.ui.Label;
@@ -35,7 +35,7 @@
public NoHomePagePanel(final NoHomePagePresenter presenter, final WorkspaceSkeleton ws, I18nTranslationService i18n) {
this.ws = ws;
- noHomepageCtnLabel = new Label(i18n.t(PlatfMessages.USER_DOESN_T_HAVE_A_HOMEPAGE));
+ noHomepageCtnLabel = new Label(i18n.t(CoreMessages.USER_DOESN_T_HAVE_A_HOMEPAGE));
noHomepageCtnLabel.ensureDebugId(NO_HOME_PAGE_LABEL);
noHomepageCtnLabel.setStyleName("kune-Content-Main");
noHomepageCtnLabel.addStyleName("kune-Margin-7-trbl");
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/options/EntityOptions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/options/EntityOptions.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/options/EntityOptions.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -21,18 +21,23 @@
import org.ourproject.kune.platf.client.View;
import org.ourproject.kune.platf.client.ui.dialogs.tabbed.AbstractTabbedDialog;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
+import cc.kune.common.client.noti.NotifyLevel;
+
public interface EntityOptions extends AbstractTabbedDialog {
+ @Override
public void addTab(View tab);
public View getView();
+ @Override
public void hideMessages();
- public void setErrorMessage(String message, Level level);
+ @Override
+ public void setErrorMessage(String message, NotifyLevel level);
+ @Override
public void show();
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/options/GroupOptionsPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/options/GroupOptionsPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/options/GroupOptionsPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -19,13 +19,13 @@
*/
package org.ourproject.kune.workspace.client.options;
-import org.ourproject.kune.platf.client.PlatfMessages;
import org.ourproject.kune.platf.client.actions.ui.GuiActionDescrip;
import org.ourproject.kune.platf.client.app.GroupOptionsCollection;
-import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.platf.client.ui.dialogs.tabbed.AbstractTabbedDialogPanel;
import org.ourproject.kune.workspace.client.entityheader.EntityHeader;
+import cc.kune.common.client.noti.NotifyLevelImages;
+import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.shared.i18n.I18nTranslationService;
public class GroupOptionsPanel extends AbstractTabbedDialogPanel implements GroupOptionsView {
@@ -37,14 +37,16 @@
private final GroupOptionsCollection entityPreferencesGroup;
public GroupOptionsPanel(final EntityOptions presenter, final EntityHeader entityHeader,
- final I18nTranslationService i18n, final Images images, final GroupOptionsCollection entityOptionsGroup) {
+ final I18nTranslationService i18n, final NotifyLevelImages images,
+ final GroupOptionsCollection entityOptionsGroup) {
super(GROUP_OP_PANEL_ID, "", 400, HEIGHT + 80, 400, HEIGHT + 80, false, images, GROUP_OPTIONS_ERROR_ID);
this.entityHeader = entityHeader;
this.entityPreferencesGroup = entityOptionsGroup;
super.setIconCls("k-options-icon");
- super.setTitle(i18n.t(PlatfMessages.GROUP_OPTIONS_DIALOG_TITLE));
+ super.setTitle(i18n.t(CoreMessages.GROUP_OPTIONS_DIALOG_TITLE));
}
+ @Override
public void addAction(final GuiActionDescrip descriptor) {
entityHeader.addAction(descriptor);
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/options/UserOptionsPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/options/UserOptionsPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/options/UserOptionsPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -19,12 +19,12 @@
*/
package org.ourproject.kune.workspace.client.options;
-import org.ourproject.kune.platf.client.PlatfMessages;
import org.ourproject.kune.platf.client.app.UserOptionsCollection;
-import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.platf.client.ui.dialogs.tabbed.AbstractTabbedDialogPanel;
import org.ourproject.kune.workspace.client.entityheader.EntityHeader;
+import cc.kune.common.client.noti.NotifyLevelImages;
+import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.shared.i18n.I18nTranslationService;
public class UserOptionsPanel extends AbstractTabbedDialogPanel implements UserOptionsView {
@@ -35,11 +35,12 @@
private final UserOptionsCollection userPreferencesGroup;
public UserOptionsPanel(final EntityOptions presenter, final EntityHeader entityHeader,
- final I18nTranslationService i18n, final Images images, final UserOptionsCollection userOptionsGroup) {
+ final I18nTranslationService i18n, final NotifyLevelImages images,
+ final UserOptionsCollection userOptionsGroup) {
super(USER_OP_PANEL_ID, "", 400, HEIGHT + 80, 400, HEIGHT + 80, false, images, USER_OPTIONS_ERROR_ID);
this.userPreferencesGroup = userOptionsGroup;
super.setIconCls("k-options-icon");
- super.setTitle(i18n.t(PlatfMessages.USER_OPTIONS_DIALOG_TITLE));
+ super.setTitle(i18n.t(CoreMessages.USER_OPTIONS_DIALOG_TITLE));
}
@Override
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/options/logo/EntityOptionsLogoPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/options/logo/EntityOptionsLogoPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/options/logo/EntityOptionsLogoPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -19,13 +19,13 @@
\*/
package org.ourproject.kune.workspace.client.options.logo;
-import org.ourproject.kune.platf.client.PlatfMessages;
import org.ourproject.kune.platf.client.ui.dialogs.DefaultFormUtils;
import org.ourproject.kune.platf.client.ui.download.FileConstants;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
import org.ourproject.kune.workspace.client.options.EntityOptionsView;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.gwtext.client.core.Connection;
@@ -140,7 +140,7 @@
+ "For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images.",
FileConstants.LOGO_DEF_HEIGHT, FileConstants.LOGO_DEF_HEIGHT)
+ DefaultFormUtils.brbr());
- super.setTitle(PlatfMessages.ENT_LOGO_SELECTOR_NORMAL_TITLE);
+ super.setTitle(CoreMessages.ENT_LOGO_SELECTOR_NORMAL_TITLE);
doLayoutIfNeeded();
}
@@ -149,7 +149,7 @@
+ "For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images.",
FileConstants.LOGO_DEF_HEIGHT, FileConstants.LOGO_DEF_HEIGHT)
+ "<br/><br/>");
- super.setTitle(PlatfMessages.ENT_LOGO_SELECTOR_PERSON_TITLE);
+ super.setTitle(CoreMessages.ENT_LOGO_SELECTOR_PERSON_TITLE);
doLayoutIfNeeded();
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/options/tools/EntityOptionsToolsConfPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/options/tools/EntityOptionsToolsConfPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/options/tools/EntityOptionsToolsConfPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -4,9 +4,9 @@
import java.util.List;
import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
import org.ourproject.kune.workspace.client.options.EntityOptions;
+import cc.kune.common.client.noti.NotifyLevel;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
@@ -19,12 +19,12 @@
public abstract class EntityOptionsToolsConfPresenter {
- private EntityOptionsToolsConfView view;
private final EntityOptions entityOptions;
- protected final Session session;
private final Provider<GroupServiceAsync> groupService;
protected final I18nTranslationService i18n;
+ protected final Session session;
protected final StateManager stateManager;
+ private EntityOptionsToolsConfView view;
public EntityOptionsToolsConfPresenter(final Session session, final StateManager stateManager,
final I18nTranslationService i18n, final EntityOptions entityOptions,
@@ -36,10 +36,24 @@
this.groupService = groupService;
}
+ protected abstract boolean applicable();
+
+ protected abstract Collection<ToolSimpleDTO> getAllTools();
+
+ protected abstract StateToken getDefContentToken();
+
+ protected abstract String getDefContentTooltip();
+
+ protected abstract List<String> getEnabledTools();
+
+ protected abstract StateToken getOperationToken();
+
public View getView() {
return view;
}
+ protected abstract void gotoDifLocationIfNecessary(String toolName);
+
public void init(final EntityOptionsToolsConfView view) {
this.view = view;
setState();
@@ -61,20 +75,6 @@
}
}
- protected abstract boolean applicable();
-
- protected abstract Collection<ToolSimpleDTO> getAllTools();
-
- protected abstract StateToken getDefContentToken();
-
- protected abstract String getDefContentTooltip();
-
- protected abstract List<String> getEnabledTools();
-
- protected abstract StateToken getOperationToken();
-
- protected abstract void gotoDifLocationIfNecessary(String toolName);
-
protected void reset() {
view.clear();
entityOptions.hideMessages();
@@ -104,11 +104,13 @@
protected void setToolCheckedInServer(final boolean checked, final String toolName) {
groupService.get().setToolEnabled(session.getUserHash(), getOperationToken(), toolName, checked,
new AsyncCallback<Void>() {
+ @Override
public void onFailure(final Throwable caught) {
view.setChecked(toolName, !checked);
- entityOptions.setErrorMessage(i18n.t("Error configuring the tool"), Level.error);
+ entityOptions.setErrorMessage(i18n.t("Error configuring the tool"), NotifyLevel.error);
}
+ @Override
public void onSuccess(final Void result) {
stateManager.reload();
}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/Register.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/Register.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/Register.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,29 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.signin;
-
-
-public interface Register {
-
- void doRegister();
-
- void hide();
-
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,284 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- \*/
-package org.ourproject.kune.workspace.client.signin;
-
-import org.ourproject.kune.platf.client.ui.dialogs.DefaultForm;
-import org.ourproject.kune.workspace.client.WorkspaceMessages;
-
-import cc.kune.core.client.state.Session;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.gwtext.client.data.SimpleStore;
-import com.gwtext.client.data.Store;
-import com.gwtext.client.widgets.form.ComboBox;
-import com.gwtext.client.widgets.form.Field;
-import com.gwtext.client.widgets.form.FieldSet;
-import com.gwtext.client.widgets.form.Radio;
-import com.gwtext.client.widgets.form.TextField;
-import com.gwtext.client.widgets.form.VType;
-import com.gwtext.client.widgets.form.ValidationException;
-import com.gwtext.client.widgets.form.Validator;
-
-public class RegisterForm extends DefaultForm {
-
- public static final String NICK_FIELD = "k-urf-nick-f";
- public static final String EMAIL_FIELD = "k-urf-email-f";
- public static final String LONGNAME_FIELD = "k-urf-long_name-f";
- public static final String PASSWORD_FIELD = "k-urf-password-f";
- public static final String PASSWORD_FIELD_DUP = "k-urf-passwordDup-f";
- public static final String LANG_FIELD = "k-urf-lang-f";
- public static final String COUNTRY_FIELD = "k-urf-country-f";
- public static final String TIMEZONE_FIELD = "k-urf-timezone-f";
- public static final String WANNAPERSONALHOMEPAGE_ID = "k-urf-wphp-id";
- public static final String NOPERSONALHOMEPAGE_ID = "k-urf-nphp-id";
- public static final String WANTHOMEPAGE_FIELD = "k-urf-wphp-f";
-
- private final TextField shortNameRegField;
- private final TextField longNameRegField;
- private final TextField passwdRegField;
- private final TextField passwdRegFieldDup;
- private final TextField emailRegField;
- private final ComboBox languageCombo;
- private final ComboBox countryCombo;
- private final ComboBox timezoneCombo;
- private final Radio wantPersonalHomePage;
- private final Radio noPersonalHomePage;
- private final I18nTranslationService i18n;
-
- public RegisterForm(final I18nTranslationService i18n, final Session session) {
- this.i18n = i18n;
- super.addStyleName("kune-Margin-Large-l");
-
- shortNameRegField = new TextField();
- shortNameRegField.setTabIndex(1);
- shortNameRegField.setFieldLabel(i18n.t("Nickname"));
- shortNameRegField.setName(NICK_FIELD);
- shortNameRegField.setWidth(DEF_SMALL_FIELD_WIDTH);
- shortNameRegField.setAllowBlank(false);
- shortNameRegField.setMinLength(3);
- shortNameRegField.setMaxLength(15);
- shortNameRegField.setRegex("^[a-z0-9_\\-]+$");
- shortNameRegField.setMinLengthText(i18n.t(WorkspaceMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
- shortNameRegField.setMaxLengthText(i18n.t(WorkspaceMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
- shortNameRegField.setRegexText(i18n.t(WorkspaceMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
- shortNameRegField.setValidationEvent(false);
- add(shortNameRegField);
-
- longNameRegField = new TextField();
- longNameRegField.setTabIndex(2);
- longNameRegField.setFieldLabel(i18n.t("Full Name"));
- longNameRegField.setName(LONGNAME_FIELD);
- longNameRegField.setWidth(DEF_FIELD_WIDTH);
- longNameRegField.setAllowBlank(false);
- longNameRegField.setMinLength(3);
- longNameRegField.setMaxLength(50);
- longNameRegField.setValidationEvent(false);
- longNameRegField.setId(LONGNAME_FIELD);
- add(longNameRegField);
-
- passwdRegField = new TextField();
- passwdRegField.setTabIndex(3);
- passwdRegField.setFieldLabel(i18n.t("Password"));
- passwdRegField.setName(PASSWORD_FIELD);
- passwdRegField.setPassword(true);
- passwdRegField.setAllowBlank(false);
- passwdRegField.setMaxLength(40);
- passwdRegField.setWidth(DEF_MEDIUM_FIELD_WIDTH);
- passwdRegField.setValidationEvent(false);
- passwdRegField.setId(PASSWORD_FIELD);
- add(passwdRegField);
-
- passwdRegFieldDup = new TextField();
- passwdRegFieldDup.setTabIndex(4);
- passwdRegFieldDup.setFieldLabel(i18n.t("Retype password"));
- passwdRegFieldDup.setName(PASSWORD_FIELD_DUP);
- passwdRegFieldDup.setPassword(true);
- passwdRegFieldDup.setAllowBlank(false);
- passwdRegFieldDup.setMinLength(6);
- passwdRegFieldDup.setMaxLength(40);
- passwdRegFieldDup.setWidth(DEF_MEDIUM_FIELD_WIDTH);
- passwdRegFieldDup.setInvalidText(i18n.t("Passwords do not match"));
- passwdRegFieldDup.setValidator(new Validator() {
- public boolean validate(final String value) throws ValidationException {
- return passwdRegField.getValueAsString().equals(passwdRegFieldDup.getValueAsString());
- }
- });
- passwdRegFieldDup.setValidationEvent(false);
- passwdRegFieldDup.setId(PASSWORD_FIELD_DUP);
- add(passwdRegFieldDup);
-
- emailRegField = new TextField();
- emailRegField.setTabIndex(5);
- emailRegField.setFieldLabel(i18n.t("Email"));
- emailRegField.setName(EMAIL_FIELD);
- emailRegField.setVtype(VType.EMAIL);
- emailRegField.setWidth(DEF_MEDIUM_FIELD_WIDTH);
- emailRegField.setAllowBlank(false);
- emailRegField.setValidationEvent(false);
- emailRegField.setId(EMAIL_FIELD);
- add(emailRegField);
-
- final Store langStore = new SimpleStore(new String[] { "abbr", "language" }, session.getLanguagesArray());
- langStore.load();
-
- languageCombo = new ComboBox();
- languageCombo.setTabIndex(6);
- languageCombo.setLazyRender(true);
- languageCombo.setName(LANG_FIELD);
- languageCombo.setMinChars(1);
- languageCombo.setFieldLabel(i18n.t("Language"));
- languageCombo.setStore(langStore);
- languageCombo.setDisplayField("language");
- languageCombo.setMode(ComboBox.LOCAL);
- languageCombo.setTriggerAction(ComboBox.ALL);
- languageCombo.setEmptyText(i18n.t("Enter language"));
- languageCombo.setLoadingText(i18n.t("Searching..."));
- languageCombo.setTypeAhead(true);
- languageCombo.setTypeAheadDelay(1000);
- languageCombo.setSelectOnFocus(false);
- languageCombo.setWidth(DEF_MEDIUM_FIELD_WIDTH);
- languageCombo.setAllowBlank(false);
- languageCombo.setValueField("abbr");
- languageCombo.setValue(session.getCurrentLanguage().getCode());
- languageCombo.setPageSize(6);
- languageCombo.setForceSelection(true);
- languageCombo.setValidationEvent(false);
- // languageCombo.setId(LANG_FIELD);
- add(languageCombo);
-
- final Store countryStore = new SimpleStore(new String[] { "abbr", "country" }, session.getCountriesArray());
- countryStore.load();
-
- countryCombo = new ComboBox();
- countryCombo.setTabIndex(7);
- countryCombo.setLazyRender(true);
- countryCombo.setName(COUNTRY_FIELD);
- countryCombo.setMinChars(1);
- countryCombo.setFieldLabel(i18n.t("Country"));
- countryCombo.setStore(countryStore);
- countryCombo.setDisplayField("country");
- countryCombo.setMode(ComboBox.LOCAL);
- countryCombo.setTriggerAction(ComboBox.ALL);
- countryCombo.setEmptyText(i18n.t("Enter your country"));
- countryCombo.setLoadingText(i18n.t("Searching..."));
- countryCombo.setTypeAhead(true);
- countryCombo.setTypeAheadDelay(1000);
- countryCombo.setSelectOnFocus(false);
- countryCombo.setWidth(DEF_MEDIUM_FIELD_WIDTH);
- countryCombo.setAllowBlank(false);
- countryCombo.setValueField("abbr");
- countryCombo.setPageSize(7);
- countryCombo.setForceSelection(true);
- countryCombo.setValidationEvent(false);
- // countryCombo.setId(COUNTRY_FIELD);
- add(countryCombo);
-
- final Store timezoneStore = new SimpleStore(new String[] { "id" }, session.getTimezones());
- timezoneStore.load();
-
- timezoneCombo = new ComboBox();
- timezoneCombo.setTabIndex(8);
- timezoneCombo.setLazyRender(true);
- timezoneCombo.setName(TIMEZONE_FIELD);
- timezoneCombo.setMinChars(1);
- timezoneCombo.setFieldLabel(i18n.t("Timezone"));
- timezoneCombo.setStore(timezoneStore);
- timezoneCombo.setDisplayField("id");
- timezoneCombo.setMode(ComboBox.LOCAL);
- timezoneCombo.setTriggerAction(ComboBox.ALL);
- timezoneCombo.setEmptyText(i18n.t("Enter your timezone"));
- timezoneCombo.setLoadingText(i18n.t("Searching..."));
- timezoneCombo.setTypeAhead(true);
- timezoneCombo.setTypeAheadDelay(1000);
- timezoneCombo.setSelectOnFocus(false);
- timezoneCombo.setWidth(DEF_MEDIUM_FIELD_WIDTH);
- timezoneCombo.setAllowBlank(false);
- timezoneCombo.setValueField("id");
- timezoneCombo.setPageSize(7);
- timezoneCombo.setForceSelection(true);
- timezoneCombo.setValidationEvent(false);
- // timezoneCombo.setId(TIMEZONE_FIELD);
- add(timezoneCombo);
-
- final FieldSet personalSpaceFieldSet = new FieldSet(i18n.t("Do you want a personal homepage?"));
- personalSpaceFieldSet.setWidth(DEF_FIELD_WIDTH + DEF_FIELD_LABEL_WITH + 65);
- wantPersonalHomePage = new Radio();
- wantPersonalHomePage.setTabIndex(9);
- noPersonalHomePage = new Radio();
- noPersonalHomePage.setTabIndex(10);
- personalSpaceFieldSet.setCollapsible(false);
- createRadio(personalSpaceFieldSet, wantPersonalHomePage,
- i18n.t("Yes, I want a homepage for publish my contents."), WANNAPERSONALHOMEPAGE_ID);
- wantPersonalHomePage.setChecked(true);
- createRadio(personalSpaceFieldSet, noPersonalHomePage,
- i18n.t("No, I do not want. Maybe in the future i will."), NOPERSONALHOMEPAGE_ID);
- add(personalSpaceFieldSet);
- }
-
- public String getCountry() {
- return countryCombo.getValueAsString();
- }
-
- public String getEmail() {
- return emailRegField.getValueAsString();
- }
-
- public String getLanguage() {
- return languageCombo.getValueAsString();
- }
-
- public String getLongName() {
- return longNameRegField.getValueAsString();
- }
-
- public String getRegisterPassword() {
- return passwdRegField.getValueAsString();
- }
-
- public String getRegisterPasswordDup() {
- return passwdRegFieldDup.getValueAsString();
- }
-
- public String getShortName() {
- return shortNameRegField.getValueAsString();
- }
-
- public Field getShortNameField() {
- return shortNameRegField;
- }
-
- public String getTimezone() {
- return timezoneCombo.getValueAsString();
- }
-
- public boolean wantPersonalHomepage() {
- return wantPersonalHomePage.getValue();
- }
-
- private void createRadio(final FieldSet fieldSet, final Radio radio, final String radioLabel, final String radioId) {
- radio.setName(WANTHOMEPAGE_FIELD);
- radio.setBoxLabel(i18n.t(radioLabel));
- radio.setAutoCreate(true);
- radio.setHideLabel(true);
- radio.setId(radioId);
- fieldSet.add(radio);
- }
-
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,159 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.signin;
-
-import org.ourproject.kune.platf.client.PlatfMessages;
-import org.ourproject.kune.platf.client.services.Images;
-import org.ourproject.kune.platf.client.ui.KuneUiUtils;
-import org.ourproject.kune.platf.client.ui.dialogs.InfoDialog;
-import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
-
-import cc.kune.core.client.state.Session;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.calclab.suco.client.events.Listener0;
-import com.google.gwt.core.client.Scheduler;
-import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.gwtext.client.widgets.Component;
-import com.gwtext.client.widgets.Panel;
-import com.gwtext.client.widgets.event.WindowListenerAdapter;
-
-public class RegisterPanel extends SignInAbstractPanel implements RegisterView {
-
- public static final String ERRMSG = "k-regp-errmsg";
-
- private static RegisterForm registerForm;
-
- public static final String CANCEL_BUTTON_ID = "k-regp-cb";
- public static final String REGISTER_BUTTON_ID = "k-regp-rb";
- public static final String REGISTER_FORM = "k-regp-p";
- public static final String WELCOME_OK_BUTTON = "k-regp-okbt";
- public static final String WELCOME_DIALOG = "k-regp-wdiag";
- public static final String REGISTER_DIALOG = "k-regp-dialog";
-
- public RegisterPanel(final RegisterPresenter presenter, final I18nTranslationService i18n,
- final WorkspaceSkeleton ws, final Session session, final Images images) {
- super(REGISTER_DIALOG, i18n, i18n.t(PlatfMessages.REGISTER_TITLE), true, true, 400, 420, "",
- i18n.t(PlatfMessages.REGISTER_TITLE), REGISTER_BUTTON_ID, i18n.tWithNT("Cancel", "used in button"),
- CANCEL_BUTTON_ID, new Listener0() {
- public void onEvent() {
- registerForm.validate();
- if (registerForm.isValid()) {
- presenter.onFormRegister();
- }
- }
- }, new Listener0() {
- public void onEvent() {
- presenter.onCancel();
- }
- }, images, ERRMSG, 11);
- super.addListener(new WindowListenerAdapter() {
- @Override
- public void onActivate(final Panel panel) {
- KuneUiUtils.focusOnField(registerForm.getShortNameField());
- }
-
- @Override
- public void onHide(final Component component) {
- presenter.onClose();
- }
-
- @Override
- public void onShow(final Component component) {
- KuneUiUtils.focusOnField(registerForm.getShortNameField());
- }
- });
-
- final Panel panel = new Panel();
- panel.setBorder(false);
- registerForm = new RegisterForm(i18n, session);
- registerForm.setWidth(370);
- panel.add(registerForm.getFormPanel());
- add(panel);
- panel.setId(REGISTER_FORM);
- }
-
- public String getCountry() {
- return registerForm.getCountry();
- }
-
- public String getEmail() {
- return registerForm.getEmail();
- }
-
- public String getLanguage() {
- return registerForm.getLanguage();
- }
-
- public String getLongName() {
- return registerForm.getLongName();
- }
-
- public String getRegisterPassword() {
- return registerForm.getRegisterPassword();
- }
-
- public String getRegisterPasswordDup() {
- return registerForm.getRegisterPasswordDup();
- }
-
- public String getShortName() {
- return registerForm.getShortName();
- }
-
- public String getTimezone() {
- return registerForm.getTimezone();
- }
-
- public boolean isRegisterFormValid() {
- return registerForm.isValid();
- }
-
- public void reset() {
- Scheduler.get().scheduleDeferred(new ScheduledCommand() {
- public void execute() {
- registerForm.reset();
- }
- });
- }
-
- public void showWelcolmeDialog() {
- final InfoDialog welcomeDialog = new InfoDialog(WELCOME_DIALOG, i18n.t("Welcome"),
- i18n.t("Thanks for registering"),
- i18n.t("Now you can participate more actively in this site with other people and groups. "
- + "You can also use your personal space to publish contents. "
- + "Your email is not verified, please follow the instructions you will receive by email."),
- i18n.t("Ok"), WELCOME_OK_BUTTON, true, true, 380, 210);
- welcomeDialog.show();
- }
-
- public void showWelcolmeDialogNoHomepage() {
- final InfoDialog welcomeDialog = new InfoDialog(WELCOME_DIALOG, i18n.t("Welcome"),
- i18n.t("Thanks for registering"),
- i18n.t("Now you can participate more actively in this site with other people and groups. "
- + "Your email is not verified, please follow the instructions you will receive by email."),
- i18n.t("Ok"), WELCOME_OK_BUTTON, true, true, 380, 210);
- welcomeDialog.show();
- }
-
- public boolean wantPersonalHomepage() {
- return registerForm.wantPersonalHomepage();
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,125 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.signin;
-
-import org.ourproject.kune.platf.client.PlatfMessages;
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
-
-import cc.kune.common.client.errors.UIException;
-import cc.kune.core.client.errors.EmailAddressInUseException;
-import cc.kune.core.client.errors.GroupNameInUseException;
-import cc.kune.core.client.i18n.I18nUITranslationService;
-import cc.kune.core.client.rpcservices.UserServiceAsync;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.core.shared.dto.I18nCountryDTO;
-import cc.kune.core.shared.dto.I18nLanguageDTO;
-import cc.kune.core.shared.dto.SubscriptionMode;
-import cc.kune.core.shared.dto.TimeZoneDTO;
-import cc.kune.core.shared.dto.UserDTO;
-import cc.kune.core.shared.dto.UserInfoDTO;
-
-import com.calclab.suco.client.ioc.Provider;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-public class RegisterPresenter extends SignInAbstractPresenter implements Register {
-
- private RegisterView view;
- private final Provider<UserServiceAsync> userServiceProvider;
- private final Provider<SignIn> signInProvider;
-
- public RegisterPresenter(final Session session, final StateManager stateManager,
- final I18nUITranslationService i18n, final Provider<UserServiceAsync> userServiceProvider,
- final Provider<SignIn> signInProvider) {
- super(session, stateManager, i18n);
- this.userServiceProvider = userServiceProvider;
- this.signInProvider = signInProvider;
- }
-
- public void doRegister() {
- signInProvider.get().hide();
- if (!session.isLogged()) {
- NotifyUser.showProgressProcessing();
- view.show();
- view.center();
- NotifyUser.hideProgress();
- } else {
- stateManager.restorePreviousToken();
- }
- }
-
- public View getView() {
- return view;
- }
-
- public void init(final RegisterView view) {
- this.view = view;
- super.view = view;
- }
-
- public void onFormRegister() {
- if (view.isRegisterFormValid()) {
- view.maskProcessing();
-
- final I18nLanguageDTO language = new I18nLanguageDTO();
- language.setCode(view.getLanguage());
-
- final I18nCountryDTO country = new I18nCountryDTO();
- country.setCode(view.getCountry());
-
- final TimeZoneDTO timezone = new TimeZoneDTO();
- timezone.setId(view.getTimezone());
-
- final boolean wantHomepage = view.wantPersonalHomepage();
-
- final UserDTO user = new UserDTO(view.getLongName(), view.getShortName(), view.getRegisterPassword(),
- view.getEmail(), language, country, timezone, null, true, SubscriptionMode.manual, "blue");
- final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
- public void onFailure(final Throwable caught) {
- view.unMask();
- if (caught instanceof EmailAddressInUseException) {
- view.setErrorMessage(i18n.t(PlatfMessages.EMAIL_IN_USE), Level.error);
- } else if (caught instanceof GroupNameInUseException) {
- view.setErrorMessage(i18n.t(PlatfMessages.NAME_IN_USE), Level.error);
- } else {
- view.setErrorMessage(i18n.t("Error during registration."), Level.error);
- throw new UIException("Other kind of exception in user registration", caught);
-
- }
- }
-
- public void onSuccess(final UserInfoDTO userInfoDTO) {
- onSignIn(userInfoDTO);
- stateManager.gotoToken(userInfoDTO.getHomePage());
- view.hide();
- view.unMask();
- if (wantHomepage) {
- view.showWelcolmeDialog();
- } else {
- view.showWelcolmeDialogNoHomepage();
- }
- }
- };
- userServiceProvider.get().createUser(user, wantHomepage, callback);
- }
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterView.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterView.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,48 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.signin;
-
-public interface RegisterView extends SignInAbstractView {
-
- String getCountry();
-
- String getEmail();
-
- String getLanguage();
-
- String getLongName();
-
- String getRegisterPassword();
-
- String getRegisterPasswordDup();
-
- String getShortName();
-
- String getTimezone();
-
- boolean isRegisterFormValid();
-
- void showWelcolmeDialog();
-
- void showWelcolmeDialogNoHomepage();
-
- boolean wantPersonalHomepage();
-
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignIn.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignIn.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignIn.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,29 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.signin;
-
-
-public interface SignIn {
-
- void doSignIn();
-
- void hide();
-
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,90 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.signin;
-
-import java.util.Date;
-
-import org.ourproject.kune.platf.client.services.Images;
-import org.ourproject.kune.platf.client.ui.dialogs.ExtendedDialog;
-import org.ourproject.kune.platf.client.ui.dialogs.MessageToolbar;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
-
-import cc.kune.core.client.state.Session;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.calclab.suco.client.events.Listener0;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.user.client.Cookies;
-import com.gwtext.client.core.Ext;
-
-public abstract class SignInAbstractPanel extends ExtendedDialog {
-
- protected final I18nTranslationService i18n;
- private final MessageToolbar messageErrorBar;
-
- public SignInAbstractPanel(String dialogId, I18nTranslationService i18n, String title, boolean modal,
- boolean autoscroll, int width, int heigth, String icon, String firstButtonTitle, String cancelButtonTitle,
- Listener0 onFirstButtonClick, Listener0 onCancelButtonClick, Images images, String errorLabelId,
- int tabIndexStart) {
- this(dialogId, i18n, title, modal, autoscroll, width, heigth, icon, firstButtonTitle, Ext.generateId(),
- cancelButtonTitle, Ext.generateId(), onFirstButtonClick, onCancelButtonClick, images, errorLabelId,
- tabIndexStart);
- }
-
- public SignInAbstractPanel(String dialogId, I18nTranslationService i18n, final String title, final boolean modal,
- final boolean autoscroll, final int width, final int heigth, final String icon,
- final String firstButtonTitle, final String firstButtonId, final String cancelButtonTitle,
- final String cancelButtonId, final Listener0 onFirstButtonClick, final Listener0 onCancelButtonClick,
- Images images, String errorLabelId, int tabIndexStart) {
- super(dialogId, title, modal, autoscroll, width, heigth, icon, firstButtonTitle, firstButtonId,
- cancelButtonTitle, cancelButtonId, onFirstButtonClick, onCancelButtonClick, tabIndexStart);
- this.i18n = i18n;
-
- messageErrorBar = new MessageToolbar(images, errorLabelId);
- super.setBottomToolbar(messageErrorBar.getToolbar());
- }
-
- @Override
- public void hide() {
- if (super.isVisible()) {
- super.hide();
- }
- }
-
- public void hideMessages() {
- messageErrorBar.hideErrorMessage();
- }
-
- public void maskProcessing() {
- mask(i18n.t("Processing"));
- }
-
- public void setCookie(final String userHash) {
- // http://code.google.com/p/google-web-toolkit-incubator/wiki/LoginSecurityFAQ
- final long duration = Session.SESSION_DURATION;
- final Date expires = new Date(System.currentTimeMillis() + duration);
- Cookies.setCookie(Session.USERHASH, userHash, expires, null, "/", false);
- GWT.log("Received hash: " + userHash, null);
- }
-
- public void setErrorMessage(final String message, final Level level) {
- messageErrorBar.setErrorMessage(message, level);
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,73 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.signin;
-
-
-import cc.kune.core.client.i18n.I18nUITranslationService;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.core.shared.dto.I18nLanguageDTO;
-import cc.kune.core.shared.dto.UserInfoDTO;
-
-public class SignInAbstractPresenter {
-
- protected final Session session;
- protected final StateManager stateManager;
- protected final I18nUITranslationService i18n;
- protected SignInAbstractView view;
-
- public SignInAbstractPresenter(Session session, StateManager stateManager, I18nUITranslationService i18n) {
- this.session = session;
- this.stateManager = stateManager;
- this.i18n = i18n;
- }
-
- public void hide() {
- view.hide();
- }
-
- public void onCancel() {
- view.reset();
- view.hideMessages();
- view.hide();
- stateManager.restorePreviousToken();
- }
-
- public void onClose() {
- view.reset();
- view.hideMessages();
- if (!session.isLogged()) {
- stateManager.restorePreviousToken();
- }
- }
-
- protected void onSignIn(final UserInfoDTO userInfoDTO) {
- final String userHash = userInfoDTO.getUserHash();
- view.setCookie(userHash);
- view.reset();
- session.setUserHash(userHash);
- session.setCurrentUserInfo(userInfoDTO);
- final I18nLanguageDTO language = userInfoDTO.getLanguage();
- i18n.changeCurrentLanguage(language.getCode());
- session.setCurrentLanguage(language);
- stateManager.restorePreviousToken();
- }
-
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractView.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInAbstractView.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,47 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.signin;
-
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
-
-public interface SignInAbstractView extends View {
-
- void center();
-
- void hide();
-
- void hideMessages();
-
- void mask(final String message);
-
- void maskProcessing();
-
- void reset();
-
- void setCookie(String userHash);
-
- void setErrorMessage(final String message, final Level level);
-
- void show();
-
- void unMask();
-
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInForm.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInForm.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInForm.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,87 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- \*/
-package org.ourproject.kune.workspace.client.signin;
-
-import org.ourproject.kune.platf.client.ui.dialogs.DefaultForm;
-
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.gwtext.client.core.EventObject;
-import com.gwtext.client.widgets.form.Field;
-import com.gwtext.client.widgets.form.TextField;
-import com.gwtext.client.widgets.form.event.FieldListenerAdapter;
-
-public class SignInForm extends DefaultForm {
- public static final String NICKOREMAIL_FIELD = "kune-sif-nkf";
- public static final String PASSWORD_FIELD = "kune-sif-psf";
-
- private final TextField loginNickOrEmailField;
- private final TextField loginPassField;
-
- public SignInForm(final SignInPresenter presenter, final I18nTranslationService i18n) {
- super.addStyleName("kune-Margin-Large-trbl");
-
- loginNickOrEmailField = new TextField();
- loginNickOrEmailField.setFieldLabel(i18n.t("Nickname or email"));
- loginNickOrEmailField.setName(NICKOREMAIL_FIELD);
- loginNickOrEmailField.setWidth(DEF_SMALL_FIELD_WIDTH);
- loginNickOrEmailField.setAllowBlank(false);
- loginNickOrEmailField.setValidationEvent(false);
- loginNickOrEmailField.setId(NICKOREMAIL_FIELD);
- loginNickOrEmailField.setTabIndex(100);
- super.add(loginNickOrEmailField);
-
- loginPassField = new TextField();
- loginPassField.setFieldLabel(i18n.t("Password"));
- loginPassField.setName(PASSWORD_FIELD);
- loginPassField.setWidth(DEF_MEDIUM_FIELD_WIDTH);
- loginPassField.setPassword(true);
- loginPassField.setAllowBlank(false);
- loginPassField.setValidationEvent(false);
- loginPassField.setId(PASSWORD_FIELD);
- loginPassField.setTabIndex(101);
- loginPassField.addListener(new FieldListenerAdapter() {
- @Override
- public void onSpecialKey(final Field field, final EventObject e) {
- if (e.getKey() == 13) {
- presenter.onFormSignIn();
- }
- }
- });
-
- super.add(loginPassField);
- }
-
- public void focusLogin() {
- loginNickOrEmailField.focus();
- }
-
- public String getLoginPassword() {
- return loginPassField.getValueAsString();
- }
-
- public String getNickOrEmail() {
- return loginNickOrEmailField.getValueAsString();
- }
-
- public Field getNickOrEmailField() {
- return loginNickOrEmailField;
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,134 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.signin;
-
-import org.ourproject.kune.platf.client.PlatfMessages;
-import org.ourproject.kune.platf.client.services.Images;
-import org.ourproject.kune.platf.client.ui.KuneUiUtils;
-import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
-
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.calclab.suco.client.events.Listener0;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Label;
-import com.gwtext.client.widgets.Component;
-import com.gwtext.client.widgets.Panel;
-import com.gwtext.client.widgets.event.WindowListenerAdapter;
-import com.gwtext.client.widgets.form.Field;
-
-public class SignInPanel extends SignInAbstractPanel implements SignInView {
-
- public static final String ERROR_MSG = "k-sigp-errmsg";
- public static final String CANCEL_BUTTON_ID = "k-signinp-cb";
- public static final String SIGN_IN_BUTTON_ID = "k-signinp-sib";
- public static final String CREATE_ONE = "k-signinp-create";
- public static final String SIGNIN_DIALOG = "k-signinp-dialog";
- private final SignInForm signInForm;
- private final SignInPresenter presenter;
-
- public SignInPanel(final SignInPresenter presenter, final I18nTranslationService i18n, final WorkspaceSkeleton ws,
- final Images images) {
- super(SIGNIN_DIALOG, i18n, i18n.t(PlatfMessages.SIGN_IN_TITLE), true, true, 340, 240, "",
- i18n.t(PlatfMessages.SIGN_IN_TITLE), SIGN_IN_BUTTON_ID, i18n.tWithNT("Cancel", "used in button"),
- CANCEL_BUTTON_ID, new Listener0() {
- public void onEvent() {
- presenter.onFormSignIn();
- }
- }, new Listener0() {
- public void onEvent() {
- presenter.onCancel();
- }
- }, images, ERROR_MSG, 102);
- this.presenter = presenter;
-
- super.addListener(new WindowListenerAdapter() {
- @Override
- public void onHide(final Component component) {
- presenter.onClose();
- }
-
- @Override
- public void onShow(final Component component) {
- KuneUiUtils.focusOnField(getNickname());
- }
- });
-
- final Panel panel = new Panel();
- panel.setBorder(false);
- signInForm = new SignInForm(presenter, i18n);
- signInForm.setWidth(310);
- panel.add(signInForm.getFormPanel());
- panel.add(createNoAccountRegister());
- add(panel);
- }
-
- public void focusOnNickname() {
- signInForm.focusLogin();
- }
-
- public String getLoginPassword() {
- return signInForm.getLoginPassword();
- }
-
- public String getNickOrEmail() {
- return signInForm.getNickOrEmail();
- }
-
- public boolean isSignInFormValid() {
- return signInForm.isValid();
- }
-
- public void reset() {
- signInForm.reset();
- }
-
- public void validate() {
- signInForm.validate();
- }
-
- private Panel createNoAccountRegister() {
- final Panel noAccRegisterPanel = new Panel();
- noAccRegisterPanel.setBorder(false);
- noAccRegisterPanel.setMargins(0, 20, 0, 0);
- final HorizontalPanel hpanel = new HorizontalPanel();
- final Label dontHaveAccount = new Label(i18n.t("Don't you have an account?"));
- final Label registerLabel = new Label(i18n.t("Create one."));
- registerLabel.ensureDebugId(CREATE_ONE);
- registerLabel.addClickHandler(new ClickHandler() {
- public void onClick(final ClickEvent event) {
- presenter.onAccountRegister();
- }
- });
- registerLabel.addStyleName("kune-Margin-Medium-l");
- registerLabel.addStyleName("kune-link");
- hpanel.add(dontHaveAccount);
- hpanel.add(registerLabel);
- noAccRegisterPanel.add(hpanel);
- return noAccRegisterPanel;
- }
-
- private Field getNickname() {
- return signInForm.getNickOrEmailField();
- }
-
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,119 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.signin;
-
-import org.ourproject.kune.platf.client.PlatfMessages;
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
-
-import cc.kune.core.client.errors.UserAuthException;
-import cc.kune.core.client.i18n.I18nUITranslationService;
-import cc.kune.core.client.rpcservices.UserServiceAsync;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.SiteCommonTokens;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.core.shared.dto.UserDTO;
-import cc.kune.core.shared.dto.UserInfoDTO;
-
-import com.allen_sauer.gwt.log.client.Log;
-import com.calclab.suco.client.ioc.Provider;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-
-public class SignInPresenter extends SignInAbstractPresenter implements SignIn {
-
- private final Provider<Register> registerProvider;
- private final Provider<UserServiceAsync> userService;
- private SignInView view;
-
- public SignInPresenter(final Session session, final StateManager stateManager, final I18nUITranslationService i18n,
- final Provider<UserServiceAsync> userService, final Provider<Register> registerProvider) {
- super(session, stateManager, i18n);
- this.userService = userService;
- this.registerProvider = registerProvider;
- }
-
- @Override
- public void doSignIn() {
- registerProvider.get().hide();
- if (session.isLogged()) {
- stateManager.restorePreviousToken();
- } else {
- NotifyUser.showProgressProcessing();
- view.show();
- view.center();
- NotifyUser.hideProgress();
- view.focusOnNickname();
- }
- }
-
- public View getView() {
- return view;
- }
-
- public void init(final SignInView view) {
- this.view = view;
- super.view = view;
- }
-
- public void onAccountRegister() {
- view.reset();
- view.hideMessages();
- view.hide();
- stateManager.gotoToken(SiteCommonTokens.REGISTER);
- }
-
- public void onFormSignIn() {
- view.validate();
- if (view.isSignInFormValid()) {
- view.maskProcessing();
-
- final String nickOrEmail = view.getNickOrEmail();
- final String passwd = view.getLoginPassword();
-
- final UserDTO user = new UserDTO();
- user.setShortName(nickOrEmail);
- user.setPassword(passwd);
-
- final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
- @Override
- public void onFailure(final Throwable caught) {
- view.unMask();
- NotifyUser.hideProgress();
- if (caught instanceof UserAuthException) {
- view.setErrorMessage(i18n.t(PlatfMessages.INCORRECT_NICKNAME_EMAIL_OR_PASSWORD), Level.error);
- } else {
- view.setErrorMessage("Error in login", Level.error);
- Log.error("Other kind of exception in SignInPresenter/doLogin");
- }
- }
-
- @Override
- public void onSuccess(final UserInfoDTO userInfoDTO) {
- onSignIn(userInfoDTO);
- stateManager.restorePreviousToken();
- view.hide();
- view.unMask();
- }
- };
- userService.get().login(user.getShortName(), user.getPassword(), callback);
- }
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInView.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInView.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -1,56 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.workspace.client.signin;
-
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
-
-public interface SignInView extends SignInAbstractView {
-
- void center();
-
- void focusOnNickname();
-
- String getLoginPassword();
-
- String getNickOrEmail();
-
- void hide();
-
- void hideMessages();
-
- boolean isSignInFormValid();
-
- void mask(final String message);
-
- void maskProcessing();
-
- void reset();
-
- void setCookie(final String userHash);
-
- void setErrorMessage(final String message, final Level level);
-
- void show();
-
- void unMask();
-
- void validate();
-
-}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignOutLink.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignOutLink.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignOutLink.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -19,7 +19,7 @@
\*/
package org.ourproject.kune.workspace.client.sitebar.sitesign;
-import cc.kune.core.client.actions.BeforeActionListener;
+import cc.kune.common.client.actions.BeforeActionListener;
public interface SiteSignOutLink {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignOutLinkPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignOutLinkPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignOutLinkPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -24,9 +24,9 @@
import org.ourproject.kune.platf.client.View;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
+import cc.kune.common.client.actions.BeforeActionCollection;
+import cc.kune.common.client.actions.BeforeActionListener;
import cc.kune.common.client.errors.UIException;
-import cc.kune.core.client.actions.BeforeActionCollection;
-import cc.kune.core.client.actions.BeforeActionListener;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.errors.SessionExpiredException;
import cc.kune.core.client.errors.UserMustBeLoggedException;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteusermenu/SiteUserOptionsPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteusermenu/SiteUserOptionsPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteusermenu/SiteUserOptionsPresenter.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -21,7 +21,6 @@
import java.util.List;
-import org.ourproject.kune.platf.client.PlatfMessages;
import org.ourproject.kune.platf.client.View;
import org.ourproject.kune.platf.client.actions.AbstractExtendedAction;
import org.ourproject.kune.platf.client.actions.Action;
@@ -34,6 +33,7 @@
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.img.ImgResources;
+import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.dto.GroupDTO;
@@ -116,7 +116,7 @@
goUserHome();
}
};
- userHomeAction.putValue(Action.NAME, i18n.t(PlatfMessages.YOUR_HOMEPAGE));
+ userHomeAction.putValue(Action.NAME, i18n.t(CoreMessages.YOUR_HOMEPAGE));
userHomeAction.putValue(Action.SMALL_ICON, img.groupHome());
final MenuItemDescriptor item = new MenuItemDescriptor(userHomeAction);
item.setPosition(0);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -19,7 +19,6 @@
\*/
package org.ourproject.kune.workspace.client.socialnet;
-import org.ourproject.kune.platf.client.PlatfMessages;
import org.ourproject.kune.platf.client.actions.ActionItem;
import org.ourproject.kune.platf.client.actions.ActionItemCollection;
import org.ourproject.kune.platf.client.actions.ActionManager;
@@ -31,6 +30,7 @@
import org.ourproject.kune.workspace.client.skel.SummaryPanel;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.shared.dto.UserSimpleDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -72,7 +72,7 @@
vp.add((Widget) toolbar);
super.add(vp);
addInSummary();
- noBuddiesPublic = new Label(i18n.t(PlatfMessages.BUDDIES_NOT_PUBLIC));
+ noBuddiesPublic = new Label(i18n.t(CoreMessages.BUDDIES_NOT_PUBLIC));
noBuddiesPublic.addStyleName("kune-Margin-7-trbl");
noBuddiesPublic.addStyleName("k-text-gray");
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -19,7 +19,6 @@
\*/
package org.ourproject.kune.workspace.client.socialnet;
-import org.ourproject.kune.platf.client.PlatfMessages;
import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbarPanel;
import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbarView;
import org.ourproject.kune.platf.client.ui.AbstractToolbar;
@@ -30,6 +29,7 @@
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.resources.CoreMessages;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.GroupDTO;
@@ -72,7 +72,7 @@
gridMenuPanel.getBottomBar().setCls("k-blank-toolbar");
super.add(gridMenuPanel);
- noMembersPublic = new Label(i18n.t(PlatfMessages.MEMBERS_NOT_PUBLIC));
+ noMembersPublic = new Label(i18n.t(CoreMessages.MEMBERS_NOT_PUBLIC));
noMembersPublic.addStyleName("kune-Margin-7-trbl");
noMembersPublic.addStyleName("k-text-gray");
noMembersPublic.setVisible(false);
Modified: trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java 2011-01-26 21:18:00 UTC (rev 1224)
+++ trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java 2011-01-28 00:16:03 UTC (rev 1225)
@@ -6,7 +6,7 @@
import org.junit.Test;
import org.mockito.Mockito;
-import cc.kune.core.client.actions.BeforeActionListener;
+import cc.kune.common.client.actions.BeforeActionListener;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.StateAbstractDTO;
1
0
Author: vjrj_
Date: 2011-01-26 22:18:00 +0100 (Wed, 26 Jan 2011)
New Revision: 1224
Added:
trunk/script/genProxy.sh
trunk/src/main/java/cc/kune/common/client/SampleGinModule.java
trunk/src/main/java/cc/kune/common/client/utils/SimpleCallback.java
trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerImpl.java
trunk/src/main/java/cc/kune/core/client/errors/SessionExpiredEvent.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java
trunk/src/main/java/cc/kune/core/client/sitebar/sign/
trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignPresenter.java
trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignViewImpl.java
trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignViewImpl.ui.xml
trunk/src/main/java/cc/kune/core/client/state/HistoryTokenCallback.java
trunk/src/main/java/cc/kune/core/client/state/SiteCommonTokens.java
trunk/src/main/java/cc/kune/core/public/fontface/
trunk/src/main/java/cc/kune/core/public/fontface/SIL Open Font License 1.1.txt
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-B-webfont.eot
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-B-webfont.svg
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-B-webfont.ttf
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-B-webfont.woff
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-BI-webfont.eot
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-BI-webfont.svg
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-BI-webfont.ttf
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-BI-webfont.woff
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-I-webfont.eot
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-I-webfont.svg
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-I-webfont.ttf
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-I-webfont.woff
trunk/src/main/java/cc/kune/core/public/fontface/ubuntufontface.css
Removed:
trunk/src/main/java/cc/kune/common/client/CommonGinModule.java
trunk/src/main/java/cc/kune/common/client/noti/SimpleCallback.java
trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerViewImpl.java
trunk/src/main/java/cc/kune/core/public/fontface/stylesheet.css
trunk/src/main/java/cc/kune/core/public/fontface/ubuntu-fontfacekit.zip
trunk/src/main/java/cc/kune/wave/server/CustomServerRpcControllerImpl.java
trunk/src/main/java/cc/kune/wave/server/CustomServerRpcProviderSamePort.java
trunk/src/main/java/cc/kune/wave/server/Trio.java
trunk/src/main/java/cc/kune/wave/server/WaveModule.java
trunk/src/main/java/cc/kune/wspace/public/fontface/
trunk/src/main/java/org/ourproject/kune/workspace/client/site/SiteToken.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitenewgroup/
Modified:
trunk/
trunk/.classpath
trunk/DEV-GUIDE
trunk/img/webtemplate/web_template-2011.svg
trunk/pom.xml
trunk/script/css-update.sh
trunk/src/main/java/cc/kune/common/client/SampleGinjector.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuGui.java
trunk/src/main/java/cc/kune/common/client/noti/AlertEvent.java
trunk/src/main/java/cc/kune/common/client/noti/ConfirmAskEvent.java
trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java
trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java
trunk/src/main/java/cc/kune/core/client/cookies/CookiesManager.java
trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
trunk/src/main/java/cc/kune/core/client/notify/spiner/ProgressShowEvent.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsViewImpl.java
trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoViewImpl.ui.xml
trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java
trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.java
trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.ui.xml
trunk/src/main/java/cc/kune/core/client/state/StateManager.java
trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
trunk/src/main/java/cc/kune/core/client/state/UserSignInEvent.java
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-R-webfont.eot
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-R-webfont.svg
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-R-webfont.ttf
trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-R-webfont.woff
trunk/src/main/java/cc/kune/core/public/ws.css
trunk/src/main/java/cc/kune/core/public/ws.html
trunk/src/main/java/cc/kune/domain/Properties.java
trunk/src/main/java/cc/kune/domain/PropertyGroup.java
trunk/src/main/java/cc/kune/wave/client/WebClient.java
trunk/src/main/java/cc/kune/wave/client/WebClient.ui.xml
trunk/src/main/java/cc/kune/wave/server/WaveStarter.java
trunk/src/main/java/cc/kune/wspace/client/resources/wsArmor.css
trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/noti/NotifyUser.java
trunk/src/main/java/org/ourproject/kune/rack/RackServletFilter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java
trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignInLinkPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignOutLinkPresenter.java
trunk/src/main/resources/wave-server.properties
trunk/src/main/webapp/WEB-INF/web.xml
trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java
trunk/src/test/java/org/ourproject/kune/platf/client/ui/TextUtilsTest.java
Log:
NEW - # 9: Roo partial use/integration
http://kune.ourproject.org/issues/ticket/9
NEW - # 14: Site bar update
http://kune.ourproject.org/issues/ticket/14
Property changes on: trunk
___________________________________________________________________
Name: svn:ignore
- pmd-eclipse.log
.pmd
www-test
screenlog.0
bin
client
public
target
Main-compile
bin
.settings
.gwt-cache
repository
derby.log
star-yellow-grey.png
run.sh
tomcat
gwt-out
synccss.sh
.externalToolBuilders
.wtpmodules
www
testRepository
kune-OLD-jcr
KuneApp.launch
KuneApp NOSERVER.launch
old_src
org.ourproject.kune.app.Kune
org.ourproject.kune.iml
org.ourproject.kune.ipr
org.ourproject.kune.iws
nbproject
hibernate.reveng.xml
.gwt-tmp
target-eclipse
.checkstyle
.classpath-bien
pom.xml.*
.gwt
.jdee_sources
.jdee_classpath
prj.el
.factorypath
+ pmd-eclipse.log
.pmd
www-test
screenlog.0
bin
client
public
target
target-local
Main-compile
bin
.settings
.gwt-cache
repository
derby.log
star-yellow-grey.png
run.sh
tomcat
gwt-out
synccss.sh
.externalToolBuilders
.wtpmodules
www
testRepository
kune-OLD-jcr
KuneApp.launch
KuneApp NOSERVER.launch
old_src
org.ourproject.kune.app.Kune
org.ourproject.kune.iml
org.ourproject.kune.ipr
org.ourproject.kune.iws
nbproject
hibernate.reveng.xml
.gwt-tmp
target-eclipse
.checkstyle
.classpath-bien
pom.xml.*
.gwt
.jdee_sources
.jdee_classpath
prj.el
.factorypath
.apt_generated
Modified: trunk/.classpath
===================================================================
--- trunk/.classpath 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/.classpath 2011-01-26 21:18:00 UTC (rev 1224)
@@ -1,113 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
- <classpathentry kind="src" path="src/main/java" including="**/*.java"/>
- <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
- <classpathentry kind="output" path="target/kune-0.0.7/WEB-INF/classes"/>
- <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar" sourcepath="M2_REPO/javax/activation/activation/1.1/activation-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar" sourcepath="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.1/jta-1.1.jar" sourcepath="M2_REPO/javax/transaction/jta/1.1/jta-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar" sourcepath="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar" sourcepath="M2_REPO/javax/servlet/servlet-api/2.4/servlet-api-2.4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar" sourcepath="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA.jar" sourcepath="M2_REPO/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar" sourcepath="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/box-src/0.3.0/box-src-0.3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"/>
- <classpathentry kind="var" path="M2_REPO/c3p0/c3p0/0.9.1.2/c3p0-0.9.1.2.jar" sourcepath="M2_REPO/c3p0/c3p0/0.9.1.2/c3p0-0.9.1.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3.jar" sourcepath="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-common-src/0.3.0/client-common-src-0.3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-scheduler-src/0.3.0/client-scheduler-src-0.3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/client-src/0.3.0/client-src-0.3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/cobogw/gwt/cobogw/1.3.1/cobogw-1.3.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/common-src/0.3.0/common-src-0.3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2.jar" sourcepath="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar" sourcepath="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.1.1/commons-fileupload-1.1.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.2/commons-io-1.2.jar" sourcepath="M2_REPO/commons-io/commons-io/1.2/commons-io-1.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5.jar" sourcepath="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar" sourcepath="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/concurrencycontrol-src/0.3.0/concurrencycontrol-src-0.3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0.jar" sourcepath="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar" sourcepath="M2_REPO/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar" sourcepath="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/calclab/emite/emite/0.4.7/emite-0.4.7.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3.jar" sourcepath="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/freemarker/freemarker/2.3.8/freemarker-2.3.8.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/googlecode/gwt/inject/gin/r137/gin-r137.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/guava/guava-gwt/r07/guava-gwt-r07.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/code/guice/guice/2.1-SNAPSHOT-r1160/guice-2.1-SNAPSHOT-r1160.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/code/guice/guice-servlet/2.0.1/guice-servlet-2.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/adamtacy/gwt-fx/r464/gwt-fx-r464.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/log/gwt-log/gwt-log/3.0.1/gwt-log-3.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.0/gwt-util-src-0.3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/voices/gwt-voices/gwt-voices/1.6.0/gwt-voices-1.6.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtext/gwtext/2.0.5/gwtext-2.0.5.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtextux/gwtextux/0.4.0.924/gwtextux-0.4.0.924.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp/0.5-SNAPSHOT/gwtp-0.5-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/extjs/gxt/2.2.1/gxt-2.2.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.20070617/h2-1.0.20070617.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate/3.2.1.ga/hibernate-3.2.1.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate/3.2.1.ga/hibernate-3.2.1.ga-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-tools/3.2.3.GA/hibernate-tools-3.2.3.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-validator/4.0.2.GA/hibernate-validator-4.0.2.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-validator/4.0.2.GA/hibernate-validator-4.0.2.GA-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.3/jaxb-impl-2.1.3.jar" sourcepath="M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.3/jaxb-impl-2.1.3-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2.jar" sourcepath="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/jmagick/jmagick/6.2.6-0/jmagick-6.2.6-0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jruby/jruby-complete/1.5.1/jruby-complete-1.5.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jruby/rack/jruby-rack/1.0.3/jruby-rack-1.0.3.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15.jar" sourcepath="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47.jar" sourcepath="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/hibernate/jtidy/r8-20060801/jtidy-r8-20060801.jar"/>
- <classpathentry kind="var" path="M2_REPO/junit/junit/4.8.1/junit-4.8.1.jar" sourcepath="M2_REPO/junit/junit/4.8.1/junit-4.8.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-core/1.7.0/liquibase-core-1.7.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-plugin/1.7.0.0/liquibase-plugin-1.7.0.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16.jar" sourcepath="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1.jar" sourcepath="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0.jar" sourcepath="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/media-src/0.3.0/media-src-0.3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-all/1.6/mockito-all-1.6.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/model-src/0.3.0/model-src-0.3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/mysql/mysql-connector-java/5.1.13/mysql-connector-java-5.1.13.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-gwt/0.3.1/proto-gwt-0.3.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smack/smack/3.0.4/smack-3.0.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smackx/smackx/3.0.4/smackx-3.0.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smackx/debugger/smackx-debugger/3.0.4/smackx-debugger-3.0.4.jar"/>
- <classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/calclab/suco/0.6.5/suco-0.6.5.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/util-src/0.3.0/util-src-0.3.0.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5.jar" sourcepath="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/wideplay/warp-persist/2.0-SNAPSHOT/warp-persist-2.0-SNAPSHOT.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/waveprotocol/waveinabox-server/0.3.5/waveinabox-server-0.3.5.jar"/>
- <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
- <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar" sourcepath="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2-sources.jar"/>
- <classpathentry kind="var" path="M2_REPO/org/xwiki/platform/xwiki-web-gwt-dom/2.3-rc-1/xwiki-web-gwt-dom-2.3-rc-1.jar" sourcepath="M2_REPO/org/xwiki/platform/xwiki-web-gwt-dom/2.3-rc-1/xwiki-web-gwt-dom-2.3-rc-1-sources.jar"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="src" path="target/generated-sources/apt" including="**/*.java"/> <classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
-</classpath>
\ No newline at end of file
+ <classpathentry including="**/*.java" kind="src" output="target/test-classes" path="src/test/java"/>
+ <classpathentry including="**/*.java" kind="src" path="src/main/java"/>
+ <classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
+ <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar" sourcepath="M2_REPO/javax/activation/activation/1.1/activation-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar" sourcepath="M2_REPO/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/transaction/jta/1.1/jta-1.1.jar" sourcepath="M2_REPO/javax/transaction/jta/1.1/jta-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0.jar" sourcepath="M2_REPO/javax/persistence/persistence-api/1.0/persistence-api-1.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar" sourcepath="M2_REPO/javax/servlet/servlet-api/2.4/servlet-api-2.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar" sourcepath="M2_REPO/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA.jar" sourcepath="M2_REPO/javax/validation/validation-api/1.0.0.GA/validation-api-1.0.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6.jar" sourcepath="M2_REPO/antlr/antlr/2.7.6/antlr-2.7.6-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/asm/asm/1.5.3/asm-1.5.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/asm/asm-attrs/1.5.3/asm-attrs-1.5.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/avalon-framework/avalon-framework/4.1.3/avalon-framework-4.1.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/beanshell/bsh/2.0b4/bsh-2.0b4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/c3p0/c3p0/0.9.1.2/c3p0-0.9.1.2.jar" sourcepath="M2_REPO/c3p0/c3p0/0.9.1.2/c3p0-0.9.1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3.jar" sourcepath="M2_REPO/cglib/cglib/2.1_3/cglib-2.1_3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/classworlds/classworlds/1.1-alpha-2/classworlds-1.1-alpha-2.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/cobogw/gwt/cobogw/1.3.1/cobogw-1.3.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2.jar" sourcepath="M2_REPO/commons-cli/commons-cli/1.2/commons-cli-1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar" sourcepath="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.1.1/commons-fileupload-1.1.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.2/commons-io-1.2.jar" sourcepath="M2_REPO/commons-io/commons-io/1.2/commons-io-1.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5.jar" sourcepath="M2_REPO/commons-lang/commons-lang/2.5/commons-lang-2.5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1.jar" sourcepath="M2_REPO/commons-logging/commons-logging/1.1/commons-logging-1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0.jar" sourcepath="M2_REPO/net/sf/dozer/dozer/4.0/dozer-4.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3.jar" sourcepath="M2_REPO/net/sf/ehcache/ehcache/1.2.3/ehcache-1.2.3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA.jar" sourcepath="M2_REPO/org/hibernate/ejb3-persistence/1.0.2.GA/ejb3-persistence-1.0.2.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/calclab/emite/emite/0.4.7/emite-0.4.7.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3.jar" sourcepath="M2_REPO/net/sf/ezmorph/ezmorph/1.0.3/ezmorph-1.0.3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/freemarker/freemarker/2.3.8/freemarker-2.3.8.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/googlecode/gwt/inject/gin/r137/gin-r137.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/guava/guava-gwt/r07/guava-gwt-r07.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/code/guice/guice/2.1-SNAPSHOT-r1160/guice-2.1-SNAPSHOT-r1160.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/code/guice/guice-servlet/2.0.1/guice-servlet-2.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/adamtacy/gwt-fx/r464/gwt-fx-r464.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/log/gwt-log/gwt-log/3.0.1/gwt-log-3.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-servlet/2.1.1/gwt-servlet-2.1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1.jar" sourcepath="M2_REPO/com/google/gwt/gwt-user/2.1.1/gwt-user-2.1.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/gwt-util-src/0.3.0/gwt-util-src-0.3.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/allen_sauer/gwt/voices/gwt-voices/gwt-voices/1.6.0/gwt-voices-1.6.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtext/gwtext/2.0.5/gwtext-2.0.5.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtextux/gwtextux/0.4.0.924/gwtextux-0.4.0.924.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/gwtplatform/gwtp/0.5-SNAPSHOT/gwtp-0.5-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/extjs/gxt/2.2.1/gxt-2.2.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/h2database/h2/1.0.20070617/h2-1.0.20070617.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate/3.2.1.ga/hibernate-3.2.1.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate/3.2.1.ga/hibernate-3.2.1.ga-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-annotations/3.4.0.GA/hibernate-annotations-3.4.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga.jar" sourcepath="M2_REPO/org/hibernate/hibernate-commons-annotations/3.3.0.ga/hibernate-commons-annotations-3.3.0.ga-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-core/3.3.1.GA/hibernate-core-3.3.1.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-entitymanager/3.4.0.GA/hibernate-entitymanager-3.4.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-search/3.1.0.GA/hibernate-search-3.1.0.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-tools/3.2.3.GA/hibernate-tools-3.2.3.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/hibernate-validator/4.0.2.GA/hibernate-validator-4.0.2.GA.jar" sourcepath="M2_REPO/org/hibernate/hibernate-validator/4.0.2.GA/hibernate-validator-4.0.2.GA-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.4.GA/javassist-3.4.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.3/jaxb-impl-2.1.3.jar" sourcepath="M2_REPO/com/sun/xml/bind/jaxb-impl/2.1.3/jaxb-impl-2.1.3-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/jcl-over-slf4j/1.6.1/jcl-over-slf4j-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2.jar" sourcepath="M2_REPO/org/codehaus/jettison/jettison/1.0-RC2/jettison-1.0-RC2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/jmagick/jmagick/6.2.6-0/jmagick-6.2.6-0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jruby/jruby-complete/1.5.1/jruby-complete-1.5.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jruby/rack/jruby-rack/1.0.3/jruby-rack-1.0.3.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15.jar" sourcepath="M2_REPO/net/sf/json-lib/json-lib/2.1/json-lib-2.1-jdk15-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47.jar" sourcepath="M2_REPO/net/sourceforge/findbugs/jsr-305/v0r47/jsr-305-v0r47-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/hibernate/jtidy/r8-20060801/jtidy-r8-20060801.jar"/>
+ <classpathentry kind="var" path="M2_REPO/junit/junit/4.8.1/junit-4.8.1.jar" sourcepath="M2_REPO/junit/junit/4.8.1/junit-4.8.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-core/1.7.0/liquibase-core-1.7.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/liquibase/liquibase-plugin/1.7.0.0/liquibase-plugin-1.7.0.0.jar"/>
+ <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16.jar" sourcepath="M2_REPO/log4j/log4j/1.2.16/log4j-1.2.16-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1.jar" sourcepath="M2_REPO/logkit/logkit/1.0.1/logkit-1.0.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0.jar" sourcepath="M2_REPO/org/apache/lucene/lucene-core/2.4.0/lucene-core-2.4.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact/2.0/maven-artifact-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-artifact-manager/2.0/maven-artifact-manager-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-model/2.0/maven-model-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-plugin-api/2.0/maven-plugin-api-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-profile/2.0/maven-profile-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-project/2.0/maven-project-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0.jar" sourcepath="M2_REPO/org/apache/maven/maven-repository-metadata/2.0/maven-repository-metadata-2.0-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/mockito/mockito-all/1.6/mockito-all-1.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/mysql/mysql-connector-java/5.1.13/mysql-connector-java-5.1.13.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-container-default/1.0-alpha-8/plexus-container-default-1.0-alpha-8-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4.jar" sourcepath="M2_REPO/org/codehaus/plexus/plexus-utils/1.0.4/plexus-utils-1.0.4-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/proto-gwt/0.3.1/proto-gwt-0.3.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-api/1.6.1/slf4j-api-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1.jar" sourcepath="M2_REPO/org/slf4j/slf4j-log4j12/1.6.1/slf4j-log4j12-1.6.1-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smack/smack/3.0.4/smack-3.0.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smackx/smackx/3.0.4/smackx-3.0.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/jivesoftware/smackx/debugger/smackx-debugger/3.0.4/smackx-debugger-3.0.4.jar"/>
+ <classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0.1/stax-api-1.0.1.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/calclab/suco/0.6.5/suco-0.6.5.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5.jar" sourcepath="M2_REPO/org/apache/maven/wagon/wagon-provider-api/1.0-alpha-5/wagon-provider-api-1.0-alpha-5-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/wideplay/warp-persist/2.0-SNAPSHOT/warp-persist-2.0-SNAPSHOT.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/waveprotocol/waveinabox-server-custom/0.3.6/waveinabox-server-custom-0.3.6.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2.jar" sourcepath="M2_REPO/xml-apis/xml-apis/1.0.b2/xml-apis-1.0.b2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/xpp3/xpp3_min/1.1.3.4.O/xpp3_min-1.1.3.4.O.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2.jar" sourcepath="M2_REPO/com/thoughtworks/xstream/xstream/1.2.2/xstream-1.2.2-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/xwiki/platform/xwiki-web-gwt-dom/2.3-rc-1/xwiki-web-gwt-dom-2.3-rc-1.jar" sourcepath="M2_REPO/org/xwiki/platform/xwiki-web-gwt-dom/2.3-rc-1/xwiki-web-gwt-dom-2.3-rc-1-sources.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry including="**/*.java" kind="src" path="target/generated-sources/apt"/>
+ <classpathentry kind="con" path="com.google.gwt.eclipse.core.GWT_CONTAINER"/>
+ <classpathentry kind="src" path=".apt_generated">
+ <attributes>
+ <attribute name="optional" value="true"/>
+ </attributes>
+ </classpathentry>
+ <classpathentry kind="output" path="target/kune-0.0.7/WEB-INF/classes"/>
+</classpath>
Modified: trunk/DEV-GUIDE
===================================================================
--- trunk/DEV-GUIDE 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/DEV-GUIDE 2011-01-26 21:18:00 UTC (rev 1224)
@@ -266,6 +266,12 @@
Check also trunk/HOWTO_ADD_A_NEW_TOOL to instructions of how to add a new tool in Kune.
+== Google Wave ==
+
+David Hearnden recommendations of Wave code development (read in an informal Wave conversation):
+
+"Being written in Java, we strongly recommend following the principles outlined in Effective Java. On top of that, patterns that aid testability (dependency injection, etc) are quite important. But beyond that, I don't know if there are any other patterns or practices that would be universal across the whole thing. The web client and the server run in very different environments, so the appropriate patterns change (e.g., the client-only code doesn't have to worry about thread safety, but should worry about excessive short-lived object creation)."
+
==Changelog==
Periodically update the Changelog using svn2cl:
Modified: trunk/img/webtemplate/web_template-2011.svg
===================================================================
--- trunk/img/webtemplate/web_template-2011.svg 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/img/webtemplate/web_template-2011.svg 2011-01-26 21:18:00 UTC (rev 1224)
@@ -53,15 +53,15 @@
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="0.78961905"
- inkscape:cx="453.50795"
+ inkscape:cx="493.46544"
inkscape:cy="448.12343"
- inkscape:current-layer="layer3"
+ inkscape:current-layer="layer7"
inkscape:document-units="px"
showgrid="false"
inkscape:window-width="1280"
- inkscape:window-height="747"
+ inkscape:window-height="974"
inkscape:window-x="0"
- inkscape:window-y="1024"
+ inkscape:window-y="21"
inkscape:window-maximized="1"
inkscape:snap-bbox="false"
inkscape:bbox-paths="true"
@@ -124,13 +124,12 @@
id="layer1"
inkscape:label="normal"
inkscape:groupmode="layer"
- style="display:inline"
- sodipodi:insensitive="true">
+ style="display:inline">
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect5037"
width="1013"
- height="26"
+ height="657.95032"
x="7"
y="112"
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
@@ -2631,9 +2630,13 @@
</g>
<g
inkscape:groupmode="layer"
+ id="layer7"
+ inkscape:label="chat" />
+ <g
+ inkscape:groupmode="layer"
id="layer3"
inkscape:label="overlay"
- style="display:inline">
+ style="display:none">
<rect
style="opacity:0.68399999;color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3865"
@@ -2808,7 +2811,7 @@
sodipodi:nodetypes="cccc" />
</g>
<g
- style="display:inline"
+ style="display:none"
inkscape:label="confirmation"
id="g8450"
inkscape:groupmode="layer">
@@ -2820,7 +2823,7 @@
height="205.09827"
width="476.85486"
id="rect8452"
- style="color:#000000;fill:#552200;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.85" />
+ style="opacity:0.85;color:#000000;fill:#552200;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
style="opacity:0.85;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect8454"
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/pom.xml 2011-01-26 21:18:00 UTC (rev 1224)
@@ -296,7 +296,7 @@
<dependency>
<groupId>com.calclab.emite</groupId>
<artifactId>emite</artifactId>
- <version>0.4.7</version>
+ <version>0.6.0-RC1</version>
</dependency>
<dependency>
<groupId>org.jivesoftware.smack</groupId>
@@ -498,70 +498,72 @@
<!-- wave -->
<dependency>
<groupId>org.waveprotocol</groupId>
- <artifactId>waveinabox-server</artifactId>
- <version>0.3.5</version>
+ <artifactId>waveinabox-server-custom</artifactId>
+ <version>0.3.6</version>
</dependency>
<dependency>
<groupId>org.waveprotocol</groupId>
- <artifactId>gwt-util-src</artifactId>
- <version>0.3.0</version>
- </dependency>
- <dependency>
- <groupId>com.google.guava</groupId>
- <artifactId>guava-gwt</artifactId>
- <version>r07</version>
- </dependency>
- <dependency>
- <groupId>org.waveprotocol</groupId>
<artifactId>proto-gwt</artifactId>
<version>0.3.1</version>
</dependency>
<dependency>
<groupId>org.waveprotocol</groupId>
- <artifactId>box-src</artifactId>
+ <artifactId>gwt-util-src</artifactId>
<version>0.3.0</version>
</dependency>
<dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>model-src</artifactId>
- <version>0.3.0</version>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava-gwt</artifactId>
+ <version>r07</version>
</dependency>
+ <!-- From here necessary as .java not included in waveinabox-serve.jar -->
+ <!-- <dependency> -->
+ <!-- <groupId>org.waveprotocol</groupId> -->
+ <!-- <artifactId>box-src</artifactId> -->
+ <!-- <version>0.3.0</version> -->
+ <!-- </dependency> -->
+ <!-- <dependency> -->
+ <!-- <groupId>org.waveprotocol</groupId> -->
+ <!-- <artifactId>model-src</artifactId> -->
+ <!-- <version>0.3.0</version> -->
+ <!-- </dependency> -->
+ <!-- <dependency> -->
+ <!-- <groupId>org.waveprotocol</groupId> -->
+ <!-- <artifactId>client-src</artifactId> -->
+ <!-- <version>0.3.0</version> -->
+ <!-- </dependency> -->
+ <!-- <dependency> -->
+ <!-- <groupId>org.waveprotocol</groupId> -->
+ <!-- <artifactId>client-common-src</artifactId> -->
+ <!-- <version>0.3.0</version> -->
+ <!-- </dependency> -->
+ <!-- <dependency> -->
+ <!-- <groupId>org.waveprotocol</groupId> -->
+ <!-- <artifactId>common-src</artifactId> -->
+ <!-- <version>0.3.0</version> -->
+ <!-- </dependency> -->
+ <!-- <dependency> -->
+ <!-- <groupId>org.waveprotocol</groupId> -->
+ <!-- <artifactId>util-src</artifactId> -->
+ <!-- <version>0.3.0</version> -->
+ <!-- </dependency> -->
+ <!-- <dependency> -->
+ <!-- <groupId>org.waveprotocol</groupId> -->
+ <!-- <artifactId>concurrencycontrol-src</artifactId> -->
+ <!-- <version>0.3.0</version> -->
+ <!-- </dependency> -->
+ <!-- <dependency> -->
+ <!-- <groupId>org.waveprotocol</groupId> -->
+ <!-- <artifactId>client-scheduler-src</artifactId> -->
+ <!-- <version>0.3.0</version> -->
+ <!-- </dependency> -->
+ <!-- <dependency> -->
+ <!-- <groupId>org.waveprotocol</groupId> -->
+ <!-- <artifactId>media-src</artifactId> -->
+ <!-- <version>0.3.0</version> -->
+ <!-- </dependency> -->
+ <!-- to here -->
<dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>client-src</artifactId>
- <version>0.3.0</version>
- </dependency>
- <dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>client-common-src</artifactId>
- <version>0.3.0</version>
- </dependency>
- <dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>common-src</artifactId>
- <version>0.3.0</version>
- </dependency>
- <dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>util-src</artifactId>
- <version>0.3.0</version>
- </dependency>
- <dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>concurrencycontrol-src</artifactId>
- <version>0.3.0</version>
- </dependency>
- <dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>client-scheduler-src</artifactId>
- <version>0.3.0</version>
- </dependency>
- <dependency>
- <groupId>org.waveprotocol</groupId>
- <artifactId>media-src</artifactId>
- <version>0.3.0</version>
- </dependency>
- <dependency>
<groupId>net.sourceforge.findbugs</groupId>
<artifactId>jsr-305</artifactId>
<version>v0r47</version>
Modified: trunk/script/css-update.sh
===================================================================
--- trunk/script/css-update.sh 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/script/css-update.sh 2011-01-26 21:18:00 UTC (rev 1224)
@@ -11,4 +11,5 @@
cp src/main/java/cc/kune/msgs/public/kune-message.css target/kune-0.0.7/ws/
cp src/main/java/cc/kune/common/public/kune-common.css target/kune-0.0.7/ws/
-cp src/main/java/cc/kune/core/public/ws.css target/kune-0.0.7/ws/
\ No newline at end of file
+cp src/main/java/cc/kune/core/public/ws.css target/kune-0.0.7/ws/
+cp src/main/java/cc/kune/core/public/ws.html target/kune-0.0.7/ws/
Added: trunk/script/genProxy.sh
===================================================================
--- trunk/script/genProxy.sh (rev 0)
+++ trunk/script/genProxy.sh 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,16 @@
+cat << EOF
+<servlet>
+<servlet-name>Wiab$1</servlet-name>
+<servlet-class>org.eclipse.jetty.servlets.ProxyServlet\$Transparent</servlet-class>
+<init-param>
+<param-name>ProxyTo</param-name><param-value>http://127.0.0.1/9898</param-value>
+</init-param>
+<init-param>
+<param-name>Prefix</param-name><param-value></param-value>
+</init-param>
+</servlet>
+<servlet-mapping>
+<servlet-name>Wiab$1</servlet-name>
+<url-pattern>$2</url-pattern>
+</servlet-mapping>
+EOF
Property changes on: trunk/script/genProxy.sh
___________________________________________________________________
Name: svn:executable
+ *
Deleted: trunk/src/main/java/cc/kune/common/client/CommonGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/CommonGinModule.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/common/client/CommonGinModule.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -1,22 +0,0 @@
-package cc.kune.common.client;
-
-import cc.kune.common.client.actions.gwtui.GwtGuiProvider;
-import cc.kune.common.client.actions.gxtui.GxtGuiProvider;
-import cc.kune.common.client.actions.ui.bind.DefaultGuiProvider;
-import cc.kune.common.client.actions.ui.bind.GuiProvider;
-import cc.kune.common.client.shortcuts.DefaultGlobalShortcutRegister;
-import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
-
-import com.google.gwt.inject.client.AbstractGinModule;
-import com.google.inject.Singleton;
-
-public class CommonGinModule extends AbstractGinModule {
-
- @Override
- protected void configure() {
- bind(GuiProvider.class).to(DefaultGuiProvider.class).in(Singleton.class);
- bind(GxtGuiProvider.class).in(Singleton.class);
- bind(GwtGuiProvider.class).in(Singleton.class);
- bind(GlobalShortcutRegister.class).to(DefaultGlobalShortcutRegister.class).in(Singleton.class);
- }
-}
Copied: trunk/src/main/java/cc/kune/common/client/SampleGinModule.java (from rev 1184, trunk/src/main/java/cc/kune/common/client/CommonGinModule.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/SampleGinModule.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/SampleGinModule.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,22 @@
+package cc.kune.common.client;
+
+import cc.kune.common.client.actions.gwtui.GwtGuiProvider;
+import cc.kune.common.client.actions.gxtui.GxtGuiProvider;
+import cc.kune.common.client.actions.ui.bind.DefaultGuiProvider;
+import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.common.client.shortcuts.DefaultGlobalShortcutRegister;
+import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
+
+import com.google.gwt.inject.client.AbstractGinModule;
+import com.google.inject.Singleton;
+
+public class SampleGinModule extends AbstractGinModule {
+
+ @Override
+ protected void configure() {
+ bind(GuiProvider.class).to(DefaultGuiProvider.class).in(Singleton.class);
+ bind(GxtGuiProvider.class).in(Singleton.class);
+ bind(GwtGuiProvider.class).in(Singleton.class);
+ bind(GlobalShortcutRegister.class).to(DefaultGlobalShortcutRegister.class).in(Singleton.class);
+ }
+}
Modified: trunk/src/main/java/cc/kune/common/client/SampleGinjector.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/SampleGinjector.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/common/client/SampleGinjector.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -8,7 +8,7 @@
import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;
-(a)GinModules(CommonGinModule.class)
+(a)GinModules(SampleGinModule.class)
public interface SampleGinjector extends Ginjector {
GlobalShortcutRegister getGlobalShortcutRegister();
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuGui.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuGui.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -88,7 +88,7 @@
if (relative instanceof String) {
menu.show(RootPanel.get((String) relative));
} else if (relative instanceof UIObject) {
- menu.show(((UIObject) relative).getElement(), "tl");
+ menu.show(((UIObject) relative).getElement(), "bl");
} else if (relative instanceof Position) {
final Position position = (Position) relative;
menu.showAt(position.getX(), position.getY());
Modified: trunk/src/main/java/cc/kune/common/client/noti/AlertEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/noti/AlertEvent.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/common/client/noti/AlertEvent.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -17,7 +17,7 @@
private static final Type<AlertHandler> TYPE = new Type<AlertHandler>();
- public static void fire(HasHandlers source, java.lang.String title, java.lang.String message, cc.kune.common.client.noti.SimpleCallback onOk) {
+ public static void fire(HasHandlers source, java.lang.String title, java.lang.String message, cc.kune.common.client.utils.SimpleCallback onOk) {
source.fireEvent(new AlertEvent(title, message, onOk));
}
@@ -31,9 +31,9 @@
java.lang.String title;
java.lang.String message;
- cc.kune.common.client.noti.SimpleCallback onOk;
+ cc.kune.common.client.utils.SimpleCallback onOk;
- public AlertEvent(java.lang.String title, java.lang.String message, cc.kune.common.client.noti.SimpleCallback onOk) {
+ public AlertEvent(java.lang.String title, java.lang.String message, cc.kune.common.client.utils.SimpleCallback onOk) {
this.title = title;
this.message = message;
this.onOk = onOk;
@@ -60,7 +60,7 @@
return message;
}
- public cc.kune.common.client.noti.SimpleCallback getOnOk() {
+ public cc.kune.common.client.utils.SimpleCallback getOnOk() {
return onOk;
}
Modified: trunk/src/main/java/cc/kune/common/client/noti/ConfirmAskEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/noti/ConfirmAskEvent.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/common/client/noti/ConfirmAskEvent.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -17,7 +17,7 @@
private static final Type<ConfirmAskHandler> TYPE = new Type<ConfirmAskHandler>();
- public static void fire(HasHandlers source, java.lang.String title, java.lang.String message, java.lang.String acceptBtnMsg, java.lang.String cancelBtnMsg, java.lang.String acceptBtnTooltip, java.lang.String cancelBtnTooltip, cc.kune.common.client.noti.SimpleCallback onAccept, cc.kune.common.client.noti.SimpleCallback onCancel) {
+ public static void fire(HasHandlers source, java.lang.String title, java.lang.String message, java.lang.String acceptBtnMsg, java.lang.String cancelBtnMsg, java.lang.String acceptBtnTooltip, java.lang.String cancelBtnTooltip, cc.kune.common.client.utils.SimpleCallback onAccept, cc.kune.common.client.utils.SimpleCallback onCancel) {
source.fireEvent(new ConfirmAskEvent(title, message, acceptBtnMsg, cancelBtnMsg, acceptBtnTooltip, cancelBtnTooltip, onAccept, onCancel));
}
@@ -35,10 +35,10 @@
java.lang.String cancelBtnMsg;
java.lang.String acceptBtnTooltip;
java.lang.String cancelBtnTooltip;
- cc.kune.common.client.noti.SimpleCallback onAccept;
- cc.kune.common.client.noti.SimpleCallback onCancel;
+ cc.kune.common.client.utils.SimpleCallback onAccept;
+ cc.kune.common.client.utils.SimpleCallback onCancel;
- public ConfirmAskEvent(java.lang.String title, java.lang.String message, java.lang.String acceptBtnMsg, java.lang.String cancelBtnMsg, java.lang.String acceptBtnTooltip, java.lang.String cancelBtnTooltip, cc.kune.common.client.noti.SimpleCallback onAccept, cc.kune.common.client.noti.SimpleCallback onCancel) {
+ public ConfirmAskEvent(java.lang.String title, java.lang.String message, java.lang.String acceptBtnMsg, java.lang.String cancelBtnMsg, java.lang.String acceptBtnTooltip, java.lang.String cancelBtnTooltip, cc.kune.common.client.utils.SimpleCallback onAccept, cc.kune.common.client.utils.SimpleCallback onCancel) {
this.title = title;
this.message = message;
this.acceptBtnMsg = acceptBtnMsg;
@@ -86,11 +86,11 @@
return cancelBtnTooltip;
}
- public cc.kune.common.client.noti.SimpleCallback getOnAccept() {
+ public cc.kune.common.client.utils.SimpleCallback getOnAccept() {
return onAccept;
}
- public cc.kune.common.client.noti.SimpleCallback getOnCancel() {
+ public cc.kune.common.client.utils.SimpleCallback getOnCancel() {
return onCancel;
}
Deleted: trunk/src/main/java/cc/kune/common/client/noti/SimpleCallback.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/noti/SimpleCallback.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/common/client/noti/SimpleCallback.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -1,13 +0,0 @@
-package cc.kune.common.client.noti;
-
-public interface SimpleCallback {
- /**
- * Notifies this callback of an accept response.
- */
- void onSuccess();
-
- /**
- * Notifies this callback of a cancel.
- */
- void onCancel();
-}
Copied: trunk/src/main/java/cc/kune/common/client/utils/SimpleCallback.java (from rev 1182, trunk/src/main/java/cc/kune/common/client/noti/SimpleCallback.java)
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/SimpleCallback.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/utils/SimpleCallback.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,13 @@
+package cc.kune.common.client.utils;
+
+public interface SimpleCallback {
+ /**
+ * Notifies this callback of an accept response.
+ */
+ void onSuccess();
+
+ /**
+ * Notifies this callback of a cancel.
+ */
+ void onCancel();
+}
Property changes on: trunk/src/main/java/cc/kune/common/client/utils/SimpleCallback.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/common/client/utils/TextUtils.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -61,6 +61,10 @@
return "<a href=\"" + href + "\" target=\"_blank\">" + text + "</a>";
}
+ public static String removeLastSlash(final String text) {
+ return text.replaceFirst("/$", "");
+ }
+
public static ArrayList<String> splitTags(final String tagsString) {
final ArrayList<String> tagsList = new ArrayList<String>();
String tagsCopy = tagsString;
Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -6,7 +6,7 @@
import cc.kune.common.client.shortcuts.DefaultGlobalShortcutRegister;
import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
import cc.kune.core.client.cookies.CookiesManager;
-import cc.kune.core.client.cookies.CookiesManagerViewImpl;
+import cc.kune.core.client.cookies.CookiesManagerImpl;
import cc.kune.core.client.errors.ErrorHandler;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.init.AppStarter;
@@ -19,6 +19,10 @@
import cc.kune.core.client.notify.spiner.SpinerViewImpl;
import cc.kune.core.client.sitebar.SitebarActionsPresenter;
import cc.kune.core.client.sitebar.SitebarActionsViewImpl;
+import cc.kune.core.client.sitebar.SitebarNewGroupLink;
+import cc.kune.core.client.sitebar.SitebarSignInLink;
+import cc.kune.core.client.sitebar.SitebarSignOutLink;
+import cc.kune.core.client.sitebar.SitebarSignOutLink.BeforeSignOut;
import cc.kune.core.client.sitebar.logo.SiteLogoPresenter;
import cc.kune.core.client.sitebar.logo.SiteLogoViewImpl;
import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter;
@@ -79,8 +83,7 @@
SpinerPresenter.SpinerProxy.class);
bindPresenter(UserNotifierPresenter.class, UserNotifierPresenter.UserNotifierView.class,
UserNotifierViewImpl.class, UserNotifierProxy.class);
- bindPresenter(CookiesManager.class, CookiesManager.CookiesManagerView.class, CookiesManagerViewImpl.class,
- CookiesManager.CookiesManagerProxy.class);
+
bindPresenter(SpaceSelectorPresenter.class, SpaceSelectorPresenter.SpaceSelectorView.class,
SpaceSelectorViewImpl.class, SpaceSelectorPresenter.SpaceSelectorProxy.class);
bindPresenter(SiteLogoPresenter.class, SiteLogoPresenter.SiteLogoView.class, SiteLogoViewImpl.class,
@@ -92,7 +95,8 @@
bind(UserMessagesPanel.class).in(Singleton.class);
bind(WsArmorImpl.class).in(Singleton.class);
- bind(WsArmor.class).to(WsArmorImpl.class);
+ bind(WsArmor.class).to(WsArmorImpl.class).in(Singleton.class);
+ bind(CookiesManager.class).to(CookiesManagerImpl.class).in(Singleton.class);
bind(Session.class).to(SessionDefault.class).in(Singleton.class);
bind(I18nTranslationService.class).to(I18nUITranslationService.class).in(Singleton.class);
bind(ErrorHandler.class).in(Singleton.class);
@@ -102,5 +106,10 @@
bind(HistoryWrapper.class).to(HistoryWrapperDefault.class).in(Singleton.class);
bind(PrefetchUtilities.class).in(Singleton.class);
bind(AppStarter.class).to(AppStarterDefault.class).in(Singleton.class);
+
+ bind(SitebarNewGroupLink.class).in(Singleton.class);
+ bind(SitebarSignInLink.class).in(Singleton.class);
+ bind(SitebarSignOutLink.class).in(Singleton.class);
+ bind(BeforeSignOut.class).in(Singleton.class);
}
}
Modified: trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/KuneEntryPoint.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -50,5 +50,7 @@
ginjector.getUserNotifierPresenter();
ginjector.getSpinerPresenter();
ginjector.getStateManager();
+ ginjector.getSiteLogoPresenter();
+ ginjector.getSpacesTabPresenter();
}
}
Modified: trunk/src/main/java/cc/kune/core/client/cookies/CookiesManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cookies/CookiesManager.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/cookies/CookiesManager.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -1,33 +1,7 @@
package cc.kune.core.client.cookies;
-import com.google.gwt.event.shared.EventBus;
-import com.google.inject.Inject;
-import com.gwtplatform.mvp.client.Presenter;
-import com.gwtplatform.mvp.client.View;
-import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit;
-import com.gwtplatform.mvp.client.proxy.Proxy;
+public interface CookiesManager {
+ String getCurrentCookie();
-public class CookiesManager extends Presenter<CookiesManager.CookiesManagerView, CookiesManager.CookiesManagerProxy> {
-
- @ProxyCodeSplit
- public interface CookiesManagerProxy extends Proxy<CookiesManager> {
- }
-
- public interface CookiesManagerView extends View {
- String getCurrentCookie();
- }
-
- @Inject
- public CookiesManager(final EventBus eventBus, final CookiesManagerView view, final CookiesManagerProxy proxy) {
- super(eventBus, view, proxy);
- }
-
- public String getCurrentCookie() {
- return getView().getCurrentCookie();
- }
-
- @Override
- protected void revealInParent() {
- }
-
+ void removeCookie();
}
Copied: trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerImpl.java (from rev 1182, trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerViewImpl.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerImpl.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerImpl.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,30 @@
+package cc.kune.core.client.cookies;
+
+import java.util.Date;
+
+import cc.kune.core.client.state.Session;
+
+import com.google.gwt.user.client.Cookies;
+
+public class CookiesManagerImpl implements CookiesManager {
+
+ public CookiesManagerImpl() {
+ }
+
+ @Override
+ public String getCurrentCookie() {
+ return Cookies.getCookie(Session.USERHASH);
+ }
+
+ @Override
+ public void removeCookie() {
+ // FIXME: Remove cookie doesn't works in all browsers, know
+ // issue:
+ // http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/ded8…
+ // http://code.google.com/p/google-web-toolkit/issues/detail?id=1735&q=removeC…
+ Cookies.removeCookie(Session.USERHASH);
+ // Workaround:
+ Cookies.setCookie(Session.USERHASH, null, new Date(0), null, "/", false);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerImpl.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerViewImpl.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/cookies/CookiesManagerViewImpl.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -1,27 +0,0 @@
-package cc.kune.core.client.cookies;
-
-import cc.kune.core.client.cookies.CookiesManager.CookiesManagerView;
-import cc.kune.core.client.state.Session;
-
-import com.google.gwt.user.client.Cookies;
-import com.google.gwt.user.client.ui.Widget;
-import com.google.inject.Inject;
-import com.gwtplatform.mvp.client.ViewImpl;
-
-public class CookiesManagerViewImpl extends ViewImpl implements CookiesManagerView {
-
- @Inject
- public CookiesManagerViewImpl() {
- }
-
- @Override
- public String getCurrentCookie() {
- return Cookies.getCookie(Session.USERHASH);
- }
-
- @Override
- public Widget asWidget() {
- return null;
- }
-
-}
Modified: trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/errors/ErrorHandler.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -27,8 +27,6 @@
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.allen_sauer.gwt.log.client.Log;
-import com.calclab.suco.client.events.Event0;
-import com.calclab.suco.client.events.Listener0;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException;
@@ -37,31 +35,41 @@
public class ErrorHandler {
- private final Session session;
+ private final EventBus eventBus;
private final I18nTranslationService i18n;
- private final Event0 onSessionExpired;
private final PlaceManager placeManager;
- private final EventBus eventBus;
+ private final Session session;
@Inject
public ErrorHandler(final Session session, final I18nTranslationService i18n, final PlaceManager placeManager,
- EventBus eventBus) {
+ final EventBus eventBus) {
this.session = session;
this.i18n = i18n;
this.placeManager = placeManager;
this.eventBus = eventBus;
- this.onSessionExpired = new Event0("onSessionExpired");
}
public void doSessionExpired() {
- onSessionExpired.fire();
+ eventBus.fireEvent(new SessionExpiredEvent());
eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.info, "Your session has expired. Please log in again."));
}
- public void onSessionExpired(final Listener0 listener) {
- onSessionExpired.add(listener);
+ private void goHome() {
+ placeManager.revealDefaultPlace();
}
+ private void logException(final Throwable caught) {
+ logException(caught, false);
+ }
+
+ private void logException(final Throwable caught, final boolean showException) {
+ if (showException) {
+ Log.debug("Exception in KuneErrorHandler", caught);
+ } else {
+ Log.debug("Exception in KuneErrorHandler: " + caught.getMessage());
+ }
+ }
+
public void process(final Throwable caught) {
eventBus.fireEvent(new ProgressHideEvent());
if (caught instanceof AccessViolationException) {
@@ -115,20 +123,4 @@
}
}
- private void goHome() {
- placeManager.revealDefaultPlace();
- }
-
- private void logException(final Throwable caught) {
- logException(caught, false);
- }
-
- private void logException(final Throwable caught, final boolean showException) {
- if (showException) {
- Log.debug("Exception in KuneErrorHandler", caught);
- } else {
- Log.debug("Exception in KuneErrorHandler: " + caught.getMessage());
- }
- }
-
}
Added: trunk/src/main/java/cc/kune/core/client/errors/SessionExpiredEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/errors/SessionExpiredEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/errors/SessionExpiredEvent.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,58 @@
+package cc.kune.core.client.errors;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+
+import com.google.gwt.event.shared.HasHandlers;
+
+public class SessionExpiredEvent extends GwtEvent<SessionExpiredEvent.SessionExpiredHandler> {
+
+ public interface HasSessionExpiredHandlers extends HasHandlers {
+ HandlerRegistration addSessionExpiredHandler(SessionExpiredHandler handler);
+ }
+
+ public interface SessionExpiredHandler extends EventHandler {
+ public void onSessionExpired(SessionExpiredEvent event);
+ }
+
+ private static final Type<SessionExpiredHandler> TYPE = new Type<SessionExpiredHandler>();
+
+ public static void fire(HasHandlers source) {
+ source.fireEvent(new SessionExpiredEvent());
+ }
+
+ public static Type<SessionExpiredHandler> getType() {
+ return TYPE;
+ }
+
+
+ public SessionExpiredEvent() {
+ }
+
+ @Override
+ public Type<SessionExpiredHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ @Override
+ protected void dispatch(SessionExpiredHandler handler) {
+ handler.onSessionExpired(this);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ return super.equals(obj);
+ }
+
+ @Override
+ public int hashCode() {
+ return super.hashCode();
+ }
+
+ @Override
+ public String toString() {
+ return "SessionExpiredEvent["
+ + "]";
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/errors/SessionExpiredEvent.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/core/client/notify/spiner/ProgressShowEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/notify/spiner/ProgressShowEvent.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/notify/spiner/ProgressShowEvent.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -6,70 +6,70 @@
import com.google.gwt.event.shared.HasHandlers;
import com.gwtplatform.mvp.client.HasEventBus;
-public class ProgressShowEvent extends GwtEvent<ProgressShowEvent.ProgressShowHandler> {
+public class ProgressShowEvent extends GwtEvent<ProgressShowEvent.ProgressShowHandler> {
- public interface HasProgressShowHandlers extends HasHandlers {
- HandlerRegistration addProgressShowHandler(ProgressShowHandler handler);
- }
+ public interface HasProgressShowHandlers extends HasHandlers {
+ HandlerRegistration addProgressShowHandler(ProgressShowHandler handler);
+ }
- public interface ProgressShowHandler extends EventHandler {
- public void onProgressShow(ProgressShowEvent event);
- }
+ public interface ProgressShowHandler extends EventHandler {
+ public void onProgressShow(ProgressShowEvent event);
+ }
- private static final Type<ProgressShowHandler> TYPE = new Type<ProgressShowHandler>();
+ private static final Type<ProgressShowHandler> TYPE = new Type<ProgressShowHandler>();
- public static void fire(HasEventBus source, java.lang.String message) {
- source.fireEvent(new ProgressShowEvent(message));
- }
+ public static void fire(final HasEventBus source, final java.lang.String message) {
+ source.fireEvent(new ProgressShowEvent(message));
+ }
- public static Type<ProgressShowHandler> getType() {
- return TYPE;
- }
+ public static Type<ProgressShowHandler> getType() {
+ return TYPE;
+ }
- private final java.lang.String message;
+ private final java.lang.String message;
- public ProgressShowEvent(java.lang.String message) {
- this.message = message;
- }
+ public ProgressShowEvent() {
+ this("");
+ }
- @Override
- public Type<ProgressShowHandler> getAssociatedType() {
- return TYPE;
- }
+ public ProgressShowEvent(final java.lang.String message) {
+ this.message = message;
+ }
- public java.lang.String getMessage() {
- return message;
- }
+ @Override
+ protected void dispatch(final ProgressShowHandler handler) {
+ handler.onProgressShow(this);
+ }
- @Override
- protected void dispatch(ProgressShowHandler handler) {
- handler.onProgressShow(this);
- }
+ @Override
+ public boolean equals(final Object other) {
+ if (other != null && other.getClass().equals(this.getClass())) {
+ final ProgressShowEvent o = (ProgressShowEvent) other;
+ return true && ((o.message == null && this.message == null) || (o.message != null && o.message.equals(this.message)));
+ }
+ return false;
+ }
- @Override
- public boolean equals(Object other) {
- if (other != null && other.getClass().equals(this.getClass())) {
- ProgressShowEvent o = (ProgressShowEvent) other;
- return true
- && ((o.message == null && this.message == null) || (o.message != null && o.message.equals(this.message)))
- ;
+ @Override
+ public Type<ProgressShowHandler> getAssociatedType() {
+ return TYPE;
}
- return false;
- }
- @Override
- public int hashCode() {
- int hashCode = 23;
- hashCode = (hashCode * 37) + getClass().hashCode();
- hashCode = (hashCode * 37) + (message == null ? 1 : message.hashCode());
- return hashCode;
- }
+ public java.lang.String getMessage() {
+ return message;
+ }
- @Override
- public String toString() {
- return "ProgressShowEvent["
- + message
- + "]";
- }
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + getClass().hashCode();
+ hashCode = (hashCode * 37) + (message == null ? 1 : message.hashCode());
+ return hashCode;
+ }
+ @Override
+ public String toString() {
+ return "ProgressShowEvent[" + message + "]";
+ }
+
}
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -1,18 +1,13 @@
package cc.kune.core.client.sitebar;
import cc.kune.common.client.actions.AbstractExtendedAction;
-import cc.kune.common.client.actions.Action;
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.common.client.actions.ui.IsActionExtensible;
import cc.kune.common.client.actions.ui.descrip.AbstractGuiActionDescrip;
-import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
-import cc.kune.common.client.actions.ui.descrip.IconLabelDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.client.actions.ui.descrip.ToolbarDescriptor;
-import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor;
-import cc.kune.common.client.actions.ui.descrip.ToolbarSeparatorDescriptor.Type;
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.notify.msgs.UserNotifyEvent;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -39,28 +34,35 @@
public static final ToolbarDescriptor TOOLBAR = new ToolbarDescriptor();
private final I18nTranslationService i18n;
+ private final SitebarNewGroupLink newGroupLink;
private MenuDescriptor optionsMenu;
+ private final SitebarSignInLink signInLink;
+ private final SitebarSignOutLink signOutLink;
@Inject
- public SitebarActionsPresenter(EventBus eventBus, SitebarActionsView view, SitebarActionsProxy proxy,
- I18nTranslationService i18n) {
+ public SitebarActionsPresenter(final EventBus eventBus, final SitebarActionsView view,
+ final SitebarActionsProxy proxy, final I18nTranslationService i18n, final SitebarNewGroupLink newGroupLink,
+ final SitebarSignOutLink signOutLink, final SitebarSignInLink signInLink) {
super(eventBus, view, proxy);
this.i18n = i18n;
+ this.newGroupLink = newGroupLink;
+ this.signOutLink = signOutLink;
+ this.signInLink = signInLink;
}
@Override
- public void addAction(AbstractGuiActionDescrip action) {
+ public void addAction(final AbstractGuiActionDescrip action) {
getView().addAction(action);
}
@Override
- public void addActions(AbstractGuiActionDescrip... actions) {
+ public void addActions(final AbstractGuiActionDescrip... actions) {
getView().addActions(actions);
}
@Override
- public void addActions(GuiActionDescCollection actions) {
+ public void addActions(final GuiActionDescCollection actions) {
getView().addActions(actions);
}
@@ -71,32 +73,42 @@
public void init() {
optionsMenu = new MenuDescriptor(i18n.t("Options"));
- IconLabelDescriptor icon = new IconLabelDescriptor("test");
- AbstractExtendedAction action = new AbstractExtendedAction() {
+ // final IconLabelDescriptor icon = new IconLabelDescriptor("test");
+ final AbstractExtendedAction action = new AbstractExtendedAction() {
@Override
- public void actionPerformed(ActionEvent event) {
+ public void actionPerformed(final ActionEvent event) {
getEventBus().fireEvent(new UserNotifyEvent("Testing only"));
}
};
- MenuItemDescriptor mItem = new MenuItemDescriptor(optionsMenu, action);
- optionsMenu.setStyles("k-floatright, k-no-backimage");
- action.putValue(Action.NAME, "kk");
- action.putValue(Action.SHORT_DESCRIPTION, "tooltip");
- ButtonDescriptor signIn = new ButtonDescriptor(action);
- ToolbarSeparatorDescriptor fill = new ToolbarSeparatorDescriptor(Type.fill, TOOLBAR);
+ final MenuItemDescriptor mItem = new MenuItemDescriptor(optionsMenu, action);
+ optionsMenu.setStyles("k-floatright, k-no-backimage, k-btn-sitebar");
+ // action.putValue(Action.NAME, "kk");
+ // action.putValue(Action.SHORT_DESCRIPTION, "tooltip");
+ // final ButtonDescriptor signIn = new ButtonDescriptor(action);
+ // final ToolbarSeparatorDescriptor fill = new
+ // ToolbarSeparatorDescriptor(Type.fill, TOOLBAR);
addAction(TOOLBAR);
- addAction(fill);
- addAction(icon);
- addAction(signIn);
- icon.setStyles("k-floatright");
- signIn.setStyles("k-floatright, k-no-backimage");
+ // addAction(fill);
+ // addAction(icon);
+ // addAction(signIn);
+ // icon.setStyles("k-floatright");
+ // signIn.setStyles("k-floatright, k-no-backimage");
addAction(optionsMenu);
addAction(mItem);
+ // addAction(new ToolbarSeparatorDescriptor(Type.separator,
+ // SitebarActionsPresenter.TOOLBAR));
+ addAction(newGroupLink);
+ addAction(signInLink);
+ addAction(signOutLink);
+ // addAction(new ToolbarSeparatorDescriptor(Type.spacer,
+ // SitebarActionsPresenter.TOOLBAR));
+ // addAction(new ToolbarSeparatorDescriptor(Type.spacer,
+ // SitebarActionsPresenter.TOOLBAR));
}
@ProxyEvent
- public void onAppStart(AppStartEvent event) {
+ public void onAppStart(final AppStartEvent event) {
init();
}
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsViewImpl.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsViewImpl.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -15,27 +15,29 @@
private final ActionFlowPanel panel;
@Inject
- public SitebarActionsViewImpl(WsArmor armor, ActionFlowPanel panel) {
+ public SitebarActionsViewImpl(final WsArmor armor, final ActionFlowPanel panel) {
this.panel = panel;
+ panel.addStyleName("k-sitebar");
+ // armor.getDocContainer().add(panel);
armor.getSitebar().add(panel);
// panel.setWidth("100%");
}
@Override
- public void addAction(AbstractGuiActionDescrip action) {
+ public void addAction(final AbstractGuiActionDescrip action) {
panel.addAction(action);
}
@Override
- public void addActions(AbstractGuiActionDescrip... actions) {
- for (AbstractGuiActionDescrip action : actions) {
+ public void addActions(final AbstractGuiActionDescrip... actions) {
+ for (final AbstractGuiActionDescrip action : actions) {
this.addAction(action);
}
}
@Override
- public void addActions(GuiActionDescCollection actions) {
- for (AbstractGuiActionDescrip action : actions) {
+ public void addActions(final GuiActionDescCollection actions) {
+ for (final AbstractGuiActionDescrip action : actions) {
this.addAction(action);
}
}
Added: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,38 @@
+package cc.kune.core.client.sitebar;
+
+import cc.kune.common.client.actions.AbstractExtendedAction;
+import cc.kune.common.client.actions.Action;
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
+import cc.kune.core.client.state.SiteCommonTokens;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.inject.Inject;
+
+public class SitebarNewGroupLink extends ButtonDescriptor {
+
+ public static class SitebarNewGroupAction extends AbstractExtendedAction {
+
+ private final StateManager stateManager;
+
+ @Inject
+ public SitebarNewGroupAction(final StateManager stateManager, final I18nTranslationService i18n) {
+ super();
+ this.stateManager = stateManager;
+ putValue(Action.NAME, i18n.t("Create New Group"));
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ stateManager.gotoToken(SiteCommonTokens.NEWGROUP);
+ }
+
+ }
+
+ @Inject
+ public SitebarNewGroupLink(final SitebarNewGroupAction action) {
+ super(action);
+ setStyles("k-floatright, k-no-backimage, k-btn-sitebar");
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarNewGroupLink.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,60 @@
+package cc.kune.core.client.sitebar;
+
+import cc.kune.common.client.actions.AbstractExtendedAction;
+import cc.kune.common.client.actions.Action;
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
+import cc.kune.core.client.state.SiteCommonTokens;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.client.state.UserSignInEvent;
+import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.client.state.UserSignOutEvent;
+import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+
+public class SitebarSignInLink extends ButtonDescriptor {
+
+ public static class SitebarSignInAction extends AbstractExtendedAction {
+
+ private final StateManager stateManager;
+
+ @Inject
+ public SitebarSignInAction(final StateManager stateManager, final I18nTranslationService i18n) {
+ super();
+ this.stateManager = stateManager;
+
+ putValue(Action.NAME, i18n.t("Sign in to collaborate"));
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ stateManager.gotoToken(SiteCommonTokens.SIGNIN);
+ }
+
+ }
+
+ public static final String SITE_SIGN_IN = "kune-ssilp-hy";
+
+ @Inject
+ public SitebarSignInLink(final SitebarSignInAction action, final EventBus eventBus) {
+ super(action);
+ setStyles("k-floatright, k-no-backimage, k-btn-sitebar");
+ setId(SITE_SIGN_IN);
+ setVisible(false);
+ eventBus.addHandler(UserSignInEvent.getType(), new UserSignInHandler() {
+ @Override
+ public void onUserSignIn(final UserSignInEvent event) {
+ SitebarSignInLink.this.setVisible(false);
+ }
+ });
+ eventBus.addHandler(UserSignOutEvent.getType(), new UserSignOutHandler() {
+ @Override
+ public void onUserSignOut(final UserSignOutEvent event) {
+ SitebarSignInLink.this.setVisible(true);
+ }
+ });
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignInLink.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,119 @@
+package cc.kune.core.client.sitebar;
+
+import cc.kune.common.client.actions.AbstractExtendedAction;
+import cc.kune.common.client.actions.Action;
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
+import cc.kune.common.client.errors.UIException;
+import cc.kune.core.client.actions.BeforeActionCollection;
+import cc.kune.core.client.cookies.CookiesManager;
+import cc.kune.core.client.errors.ErrorHandler;
+import cc.kune.core.client.errors.SessionExpiredEvent;
+import cc.kune.core.client.errors.SessionExpiredEvent.SessionExpiredHandler;
+import cc.kune.core.client.errors.SessionExpiredException;
+import cc.kune.core.client.errors.UserMustBeLoggedException;
+import cc.kune.core.client.notify.spiner.ProgressHideEvent;
+import cc.kune.core.client.notify.spiner.ProgressShowEvent;
+import cc.kune.core.client.rpcservices.UserServiceAsync;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.UserSignOutEvent;
+import cc.kune.core.client.state.UserSignOutEvent.UserSignOutHandler;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class SitebarSignOutLink extends ButtonDescriptor {
+
+ public static class BeforeSignOut extends BeforeActionCollection {
+ private static final long serialVersionUID = 2326033703822323868L;
+ }
+
+ public static class SitebarSignOutAction extends AbstractExtendedAction {
+
+ private final BeforeSignOut beforeSignOut;
+ private final CookiesManager cookiesManager;
+ private final EventBus eventBus;
+ private final Session session;
+ private final Provider<UserServiceAsync> userService;
+
+ @Inject
+ public SitebarSignOutAction(final EventBus eventBus, final I18nTranslationService i18n,
+ final BeforeSignOut beforeSignOut, final Provider<UserServiceAsync> userService, final Session session,
+ final CookiesManager cookiesManager) {
+ super();
+ this.eventBus = eventBus;
+ this.userService = userService;
+ this.session = session;
+ this.cookiesManager = cookiesManager;
+ this.beforeSignOut = beforeSignOut;
+ putValue(Action.NAME, i18n.t("Sign out"));
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ eventBus.fireEvent(new ProgressShowEvent());
+ if (beforeSignOut.checkBeforeAction()) {
+ userService.get().logout(session.getUserHash(), new AsyncCallback<Void>() {
+ @Override
+ public void onFailure(final Throwable caught) {
+ eventBus.fireEvent(new ProgressHideEvent());
+ if (caught instanceof SessionExpiredException) {
+ clientUIsignOut();
+ } else if (caught instanceof UserMustBeLoggedException) {
+ clientUIsignOut();
+ } else {
+ throw new UIException("Other kind of exception in doLogout", caught);
+ }
+ }
+
+ @Override
+ public void onSuccess(final Void arg0) {
+ eventBus.fireEvent(new ProgressHideEvent());
+ clientUIsignOut();
+ }
+
+ });
+ } else {
+ eventBus.fireEvent(new ProgressHideEvent());
+ }
+ }
+
+ public void clientUIsignOut() {
+ cookiesManager.removeCookie();
+ session.setUserHash(null);
+ session.setCurrentUserInfo(null);
+ }
+
+ }
+ public static final String SITE_SIGN_OUT = "k-ssolp-lb";
+
+ @Inject
+ public SitebarSignOutLink(final SitebarSignOutAction action, final EventBus eventBus,
+ final ErrorHandler errorHandler) {
+ super(action);
+ setStyles("k-floatright, k-no-backimage, k-btn-sitebar");
+ setId(SITE_SIGN_OUT);
+ setVisible(false);
+ eventBus.addHandler(UserSignOutEvent.getType(), new UserSignOutHandler() {
+ @Override
+ public void onUserSignOut(final UserSignOutEvent event) {
+ SitebarSignOutLink.this.setVisible(true);
+ }
+ });
+ eventBus.addHandler(UserSignOutEvent.getType(), new UserSignOutHandler() {
+ @Override
+ public void onUserSignOut(final UserSignOutEvent event) {
+ SitebarSignOutLink.this.setVisible(false);
+ }
+ });
+ eventBus.addHandler(SessionExpiredEvent.getType(), new SessionExpiredHandler() {
+ @Override
+ public void onSessionExpired(final SessionExpiredEvent event) {
+ action.clientUIsignOut();
+ }
+ });
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarSignOutLink.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoViewImpl.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoViewImpl.ui.xml 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/logo/SiteLogoViewImpl.ui.xml 2011-01-26 21:18:00 UTC (rev 1224)
@@ -6,5 +6,5 @@
font-weight: bold;
}
</ui:style>
- <g:Image ui:field="logo" addStyleNames="k-floatright k-pointer" />
+ <g:Image ui:field="logo" addStyleNames="k-sitebar-logo k-floatright k-pointer" />
</ui:UiBinder>
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignPresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,30 @@
+package cc.kune.core.client.sitebar.sign;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.gwtplatform.mvp.client.Presenter;
+import com.gwtplatform.mvp.client.View;
+import com.gwtplatform.mvp.client.annotations.NameToken;
+import com.gwtplatform.mvp.client.annotations.ProxyCodeSplit;
+import com.gwtplatform.mvp.client.proxy.ProxyPlace;
+import com.gwtplatform.mvp.client.proxy.RevealRootContentEvent;
+
+public class SignPresenter extends Presenter<SignPresenter.SignView, SignPresenter.SignProxy> {
+
+ @ProxyCodeSplit
+ @NameToken("sign")
+ public interface SignProxy extends ProxyPlace<SignPresenter> {
+ }
+ public interface SignView extends View {
+ }
+
+ @Inject
+ public SignPresenter(final EventBus eventBus, final SignView view, final SignProxy proxy) {
+ super(eventBus, view, proxy);
+ }
+
+ @Override
+ protected void revealInParent() {
+ RevealRootContentEvent.fire(this, this);
+ }
+}
\ No newline at end of file
Property changes on: trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignPresenter.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignViewImpl.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignViewImpl.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,23 @@
+package cc.kune.core.client.sitebar.sign;
+
+import com.google.gwt.core.client.GWT;
+import com.google.gwt.uibinder.client.UiBinder;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.client.ui.SimplePanel;
+import com.extjs.gxt.ui.client.widget.form.FormPanel;
+
+public class SignViewImpl extends Composite {
+
+ interface SignViewImplUiBinder extends UiBinder<Widget, SignViewImpl> {
+ }
+
+ private static SignViewImplUiBinder uiBinder = GWT.create(SignViewImplUiBinder.class);
+ @UiField SimplePanel signInPanel;
+
+ public SignViewImpl() {
+ initWidget(uiBinder.createAndBindUi(this));
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignViewImpl.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignViewImpl.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignViewImpl.ui.xml (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignViewImpl.ui.xml 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,27 @@
+<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
+<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
+ xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:p1="urn:import:com.extjs.gxt.ui.client.widget.form" xmlns:p2="urn:import:com.extjs.gxt.ui.client.widget">
+ <ui:style>
+
+ </ui:style>
+ <g:DockLayoutPanel ui:field="mainpanel" unit="PX">
+ <g:center>
+ <g:TabLayoutPanel width="100%" height="100%"
+ barUnit='PX' barHeight='0' ui:field="tabs">
+ <g:tab>
+ <g:header size='0' />
+ <g:VerticalPanel ui:field="signInPanel" width="100%"
+ height="100%">
+ <p1:TextField allowBlank="false" />
+ <p1:TextField password="true" />
+ </g:VerticalPanel>
+ </g:tab>
+ <g:tab>
+ <g:header size='0' />
+ <g:SimplePanel ui:field="registerPanel" width="100%"
+ height="100%"/>
+ </g:tab>
+ </g:TabLayoutPanel>
+ </g:center>
+ </g:DockLayoutPanel>
+</ui:UiBinder>
\ No newline at end of file
Property changes on: trunk/src/main/java/cc/kune/core/client/sitebar/sign/SignViewImpl.ui.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -17,45 +17,50 @@
Presenter<SpaceSelectorPresenter.SpaceSelectorView, SpaceSelectorPresenter.SpaceSelectorProxy> implements
SpaceSelectorUiHandlers {
- private final WsArmor armor;
+ @ProxyCodeSplit
+ public interface SpaceSelectorProxy extends Proxy<SpaceSelectorPresenter> {
+ }
public interface SpaceSelectorView extends View, HasUiHandlers<SpaceSelectorUiHandlers> {
+ void setGroupBtnDown(boolean down);
+
void setHomeBtnDown(boolean down);
- void setUserBtnDown(boolean down);
-
- void setGroupBtnDown(boolean down);
-
void setPublicBtnDown(boolean down);
- }
- @ProxyCodeSplit
- public interface SpaceSelectorProxy extends Proxy<SpaceSelectorPresenter> {
+ void setUserBtnDown(boolean down);
}
+ private final WsArmor armor;
+
@Inject
- public SpaceSelectorPresenter(EventBus eventBus, SpaceSelectorView view, SpaceSelectorProxy proxy, WsArmor armor) {
+ public SpaceSelectorPresenter(final EventBus eventBus, final SpaceSelectorView view,
+ final SpaceSelectorProxy proxy, final WsArmor armor) {
super(eventBus, view, proxy);
this.armor = armor;
getView().setUiHandlers(this);
}
- @Override
- protected void revealInParent() {
- RevealRootContentEvent.fire(this, this);
- }
-
@ProxyEvent
- public void onAppStart(AppStartEvent event) {
+ public void onAppStart(final AppStartEvent event) {
getView().setHomeBtnDown(false);
getView().setUserBtnDown(false);
getView().setGroupBtnDown(false);
getView().setPublicBtnDown(false);
- onHomeSpaceSelect();
+ onGroupSpaceSelect();
}
@Override
+ public void onGroupSpaceSelect() {
+ armor.selectGroupSpace();
+ getView().setHomeBtnDown(false);
+ getView().setUserBtnDown(false);
+ getView().setGroupBtnDown(true);
+ getView().setPublicBtnDown(false);
+ }
+
+ @Override
public void onHomeSpaceSelect() {
armor.selectHomeSpace();
getView().setHomeBtnDown(true);
@@ -65,29 +70,25 @@
}
@Override
- public void onUserSpaceSelect() {
- armor.selectUserSpace();
+ public void onPublicSpaceClick() {
+ armor.selectPublicSpace();
getView().setHomeBtnDown(false);
- getView().setUserBtnDown(true);
+ getView().setUserBtnDown(false);
getView().setGroupBtnDown(false);
- getView().setPublicBtnDown(false);
+ getView().setPublicBtnDown(true);
}
@Override
- public void onGroupSpaceSelect() {
- armor.selectGroupSpace();
+ public void onUserSpaceSelect() {
+ armor.selectUserSpace();
getView().setHomeBtnDown(false);
- getView().setUserBtnDown(false);
- getView().setGroupBtnDown(true);
+ getView().setUserBtnDown(true);
+ getView().setGroupBtnDown(false);
getView().setPublicBtnDown(false);
}
@Override
- public void onPublicSpaceClick() {
- armor.selectPublicSpace();
- getView().setHomeBtnDown(false);
- getView().setUserBtnDown(false);
- getView().setGroupBtnDown(false);
- getView().setPublicBtnDown(true);
+ protected void revealInParent() {
+ RevealRootContentEvent.fire(this, this);
}
}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -32,11 +32,11 @@
ToggleButton userButton;
@Inject
- public SpaceSelectorViewImpl(WsArmor armor, I18nTranslationService i18n) {
+ public SpaceSelectorViewImpl(final WsArmor armor, final I18nTranslationService i18n) {
armor.getSitebar().insert(uiBinder.createAndBindUi(this), 0);
homeButton.setTitle(i18n.t("Home page of this site"));
userButton.setTitle(i18n.t("User space: Waves (aka docs) in which you participate"));
- groupButton.setTitle(i18n.t("Group & personal space: Where you can create and publish contents"));
+ groupButton.setTitle(i18n.t("Group and personal space: Where you can create and publish contents"));
publicButton.setTitle(i18n.t("Public space: This is how the rest of public see your published works"));
}
@@ -46,42 +46,42 @@
}
@UiHandler("groupButton")
- void onGroupSpaceClick(ClickEvent event) {
+ void onGroupSpaceClick(final ClickEvent event) {
getUiHandlers().onGroupSpaceSelect();
}
@UiHandler("homeButton")
- void onHomeSpaceClick(ClickEvent event) {
+ void onHomeSpaceClick(final ClickEvent event) {
getUiHandlers().onHomeSpaceSelect();
}
@UiHandler("publicButton")
- void onPublicSpaceClick(ClickEvent event) {
+ void onPublicSpaceClick(final ClickEvent event) {
getUiHandlers().onPublicSpaceClick();
}
@UiHandler("userButton")
- void onUserSpaceClick(ClickEvent event) {
+ void onUserSpaceClick(final ClickEvent event) {
getUiHandlers().onUserSpaceSelect();
}
@Override
- public void setGroupBtnDown(boolean down) {
+ public void setGroupBtnDown(final boolean down) {
groupButton.setDown(down);
}
@Override
- public void setHomeBtnDown(boolean down) {
+ public void setHomeBtnDown(final boolean down) {
homeButton.setDown(down);
}
@Override
- public void setPublicBtnDown(boolean down) {
+ public void setPublicBtnDown(final boolean down) {
publicButton.setDown(down);
}
@Override
- public void setUserBtnDown(boolean down) {
+ public void setUserBtnDown(final boolean down) {
userButton.setDown(down);
}
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.ui.xml 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.ui.xml 2011-01-26 21:18:00 UTC (rev 1224)
@@ -3,7 +3,7 @@
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:with field='img'
type='cc.kune.wspace.client.resources.WsArmorResources' />
- <g:HorizontalPanel ui:field="panel" addStyleNames="k-space-sel k-10corners k-floatright k-pointer" >
+ <g:HorizontalPanel ui:field="panel" addStyleNames="k-space-sel k-10corners k-floatleft k-pointer" >
<g:ToggleButton ui:field="homeButton" styleName="k-space-sel-btn">
<g:upFace image='{img.homeSpaceDisabled}' />
<g:downFace image='{img.homeSpaceEnabled}' />
Added: trunk/src/main/java/cc/kune/core/client/state/HistoryTokenCallback.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/HistoryTokenCallback.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/state/HistoryTokenCallback.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,7 @@
+package cc.kune.core.client.state;
+
+public interface HistoryTokenCallback {
+
+ void onHistoryToken();
+
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/state/HistoryTokenCallback.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/core/client/state/SiteCommonTokens.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/SiteCommonTokens.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/state/SiteCommonTokens.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,15 @@
+package cc.kune.core.client.state;
+
+/**
+ * Some common history tokens like {@link #SIGNIN} and {@link #NEWGROUP}
+ *
+ */
+public final class SiteCommonTokens {
+ public final static String NEWGROUP = "newgroup";
+ public final static String REGISTER = "register";
+ public final static String SIGNIN = "signin";
+ public final static String TRANSLATE = "translate";
+
+ private SiteCommonTokens() {
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/state/SiteCommonTokens.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/core/client/state/StateManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateManager.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/state/StateManager.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -25,15 +25,13 @@
import cc.kune.core.shared.dto.StateAbstractDTO;
import com.calclab.suco.client.events.Listener;
-import com.calclab.suco.client.events.Listener0;
import com.calclab.suco.client.events.Listener2;
public interface StateManager {
void addBeforeStateChangeListener(BeforeActionListener listener);
- @Deprecated
- void addSiteToken(String token, Listener0 whenToken);
+ void addSiteToken(String token, HistoryTokenCallback historyTokenCallback);
void gotoToken(StateToken newToken);
Modified: trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/state/StateManagerDefault.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -33,7 +33,6 @@
import com.calclab.suco.client.events.Event;
import com.calclab.suco.client.events.Event2;
import com.calclab.suco.client.events.Listener;
-import com.calclab.suco.client.events.Listener0;
import com.calclab.suco.client.events.Listener2;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
@@ -41,7 +40,14 @@
import com.google.inject.Inject;
public class StateManagerDefault implements StateManager, ValueChangeHandler<String> {
+ private final BeforeActionCollection beforeStateChangeCollection;
private final ContentProvider contentProvider;
+ private final EventBus eventBus;
+ private final HistoryWrapper history;
+ private final Event2<String, String> onGroupChanged;
+ private final Event<StateAbstractDTO> onSocialNetworkChanged;
+ private final Event<StateAbstractDTO> onStateChanged;
+ private final Event2<String, String> onToolChanged;
private StateToken previousToken;
/**
* When a historyChanged is interrupted (for instance because you are
@@ -49,14 +55,7 @@
*/
private StateToken resumedToken;
private final Session session;
- private final HistoryWrapper history;
- private final HashMap<String, Listener0> siteTokens;
- private final Event<StateAbstractDTO> onStateChanged;
- private final Event<StateAbstractDTO> onSocialNetworkChanged;
- private final Event2<String, String> onToolChanged;
- private final Event2<String, String> onGroupChanged;
- private final BeforeActionCollection beforeStateChangeCollection;
- private final EventBus eventBus;
+ private final HashMap<String, HistoryTokenCallback> siteTokens;
@Inject
public StateManagerDefault(final ContentProvider contentProvider, final Session session,
@@ -71,11 +70,11 @@
this.onGroupChanged = new Event2<String, String>("onGroupChanged");
this.onToolChanged = new Event2<String, String>("onToolChanged");
this.onSocialNetworkChanged = new Event<StateAbstractDTO>("onSocialNetworkChanged");
- siteTokens = new HashMap<String, Listener0>();
+ siteTokens = new HashMap<String, HistoryTokenCallback>();
beforeStateChangeCollection = new BeforeActionCollection();
eventBus.addHandler(UserSignInEvent.getType(), new UserSignInEvent.UserSignInHandler() {
@Override
- public void onUserSignIn(UserSignInEvent event) {
+ public void onUserSignIn(final UserSignInEvent event) {
if (previousToken == null) {
// starting up
reload();
@@ -86,7 +85,7 @@
});
eventBus.addHandler(UserSignOutEvent.getType(), new UserSignOutEvent.UserSignOutHandler() {
@Override
- public void onUserSignOut(UserSignOutEvent event) {
+ public void onUserSignOut(final UserSignOutEvent event) {
reload();
}
});
@@ -98,10 +97,30 @@
}
@Override
- public void addSiteToken(final String token, final Listener0 listener) {
- siteTokens.put(token, listener);
+ public void addSiteToken(final String token, final HistoryTokenCallback callback) {
+ siteTokens.put(token.toLowerCase(), callback);
}
+ private void checkGroupAndToolChange(final StateAbstractDTO newState) {
+ final String previousGroup = previousToken == null ? "" : previousToken.getGroup();
+ final String newGroup = newState.getStateToken().getGroup();
+ final String previousTokenTool = previousToken == null ? "" : previousToken.getTool();
+ final String newTokenTool = newState.getStateToken().getTool();
+ final String previousToolName = previousTokenTool == null ? "" : previousTokenTool;
+ final String newToolName = newTokenTool == null ? "" : newTokenTool;
+
+ if (previousToken == null || previousToolName == null || !previousToolName.equals(newToolName)) {
+ onToolChanged.fire(previousToolName, newToolName);
+ }
+ if (previousToken == null || !previousGroup.equals(newGroup)) {
+ onGroupChanged.fire(previousGroup, newGroup);
+ }
+ }
+
+ private void clearResumedToken() {
+ resumedToken = null;
+ }
+
@Override
public void gotoToken(final StateToken newToken) {
Log.debug("StateManager: history goto-token newItem (" + newToken + ")");
@@ -118,6 +137,38 @@
onGroupChanged.add(listener);
}
+ private void onHistoryChanged(final StateToken newState) {
+ contentProvider.getContent(session.getUserHash(), newState, new AsyncCallbackSimple<StateAbstractDTO>() {
+ @Override
+ public void onSuccess(final StateAbstractDTO newState) {
+ setState(newState);
+ }
+ });
+ }
+
+ void onHistoryChanged(final String historyToken) {
+ // http://code.google.com/p/google-web-toolkit-doc-1-5/wiki/DevGuideHistory
+ if (beforeStateChangeCollection.checkBeforeAction()) {
+ final HistoryTokenCallback tokenListener = siteTokens.get(historyToken != null ? historyToken.toLowerCase()
+ : historyToken);
+ Log.debug("StateManager: history token changed (" + historyToken + ")");
+ if (tokenListener == null) {
+ // Ok, normal token change
+ onHistoryChanged(new StateToken(historyToken));
+ } else {
+ // token is one of #newgroup #signin #translate ...
+ if (previousToken == null) {
+ // Starting with some token like "signin": load defContent
+ // also
+ onHistoryChanged("");
+ }
+ tokenListener.onHistoryToken();
+ }
+ } else {
+ resumedToken = new StateToken(historyToken);
+ }
+ }
+
@Override
public void onSocialNetworkChanged(final Listener<StateAbstractDTO> listener) {
onSocialNetworkChanged.add(listener);
@@ -191,28 +242,6 @@
}
}
- void onHistoryChanged(final String historyToken) {
- // http://code.google.com/p/google-web-toolkit-doc-1-5/wiki/DevGuideHistory
- if (beforeStateChangeCollection.checkBeforeAction()) {
- final Listener0 tokenListener = siteTokens.get(historyToken);
- Log.debug("StateManager: history token changed (" + historyToken + ")");
- if (tokenListener == null) {
- // Ok, normal token change
- onHistoryChanged(new StateToken(historyToken));
- } else {
- // token is one of #newgroup #signin #translate ...
- if (previousToken == null) {
- // Starting with some token like "signin": load defContent
- // also
- onHistoryChanged("");
- }
- tokenListener.onEvent();
- }
- } else {
- resumedToken = new StateToken(historyToken);
- }
- }
-
void setState(final StateAbstractDTO newState) {
session.setCurrentState(newState);
onStateChanged.fire(newState);
@@ -221,33 +250,4 @@
previousToken = newState.getStateToken();
}
-
- private void checkGroupAndToolChange(final StateAbstractDTO newState) {
- final String previousGroup = previousToken == null ? "" : previousToken.getGroup();
- final String newGroup = newState.getStateToken().getGroup();
- final String previousTokenTool = previousToken == null ? "" : previousToken.getTool();
- final String newTokenTool = newState.getStateToken().getTool();
- final String previousToolName = previousTokenTool == null ? "" : previousTokenTool;
- final String newToolName = newTokenTool == null ? "" : newTokenTool;
-
- if (previousToken == null || previousToolName == null || !previousToolName.equals(newToolName)) {
- onToolChanged.fire(previousToolName, newToolName);
- }
- if (previousToken == null || !previousGroup.equals(newGroup)) {
- onGroupChanged.fire(previousGroup, newGroup);
- }
- }
-
- private void clearResumedToken() {
- resumedToken = null;
- }
-
- private void onHistoryChanged(final StateToken newState) {
- contentProvider.getContent(session.getUserHash(), newState, new AsyncCallbackSimple<StateAbstractDTO>() {
- @Override
- public void onSuccess(final StateAbstractDTO newState) {
- setState(newState);
- }
- });
- }
}
Modified: trunk/src/main/java/cc/kune/core/client/state/UserSignInEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/state/UserSignInEvent.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/client/state/UserSignInEvent.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -6,70 +6,66 @@
import com.google.gwt.event.shared.HasHandlers;
import com.gwtplatform.mvp.client.HasEventBus;
-public class UserSignInEvent extends GwtEvent<UserSignInEvent.UserSignInHandler> {
+public class UserSignInEvent extends GwtEvent<UserSignInEvent.UserSignInHandler> {
- public interface HasUserSignInHandlers extends HasHandlers {
- HandlerRegistration addUserSignInHandler(UserSignInHandler handler);
- }
+ public interface HasUserSignInHandlers extends HasHandlers {
+ HandlerRegistration addUserSignInHandler(UserSignInHandler handler);
+ }
- public interface UserSignInHandler extends EventHandler {
- public void onUserSignIn(UserSignInEvent event);
- }
+ public interface UserSignInHandler extends EventHandler {
+ public void onUserSignIn(UserSignInEvent event);
+ }
- private static final Type<UserSignInHandler> TYPE = new Type<UserSignInHandler>();
+ private static final Type<UserSignInHandler> TYPE = new Type<UserSignInHandler>();
- public static void fire(HasEventBus source, cc.kune.core.shared.dto.UserInfoDTO userInfo) {
- source.fireEvent(new UserSignInEvent(userInfo));
- }
+ public static void fire(final HasEventBus source, final cc.kune.core.shared.dto.UserInfoDTO userInfo) {
+ source.fireEvent(new UserSignInEvent(userInfo));
+ }
- public static Type<UserSignInHandler> getType() {
- return TYPE;
- }
+ public static Type<UserSignInHandler> getType() {
+ return TYPE;
+ }
- private final cc.kune.core.shared.dto.UserInfoDTO userInfo;
+ private final cc.kune.core.shared.dto.UserInfoDTO userInfo;
- public UserSignInEvent(cc.kune.core.shared.dto.UserInfoDTO userInfo) {
- this.userInfo = userInfo;
- }
+ public UserSignInEvent(final cc.kune.core.shared.dto.UserInfoDTO userInfo) {
+ this.userInfo = userInfo;
+ }
- @Override
- public Type<UserSignInHandler> getAssociatedType() {
- return TYPE;
- }
+ @Override
+ protected void dispatch(final UserSignInHandler handler) {
+ handler.onUserSignIn(this);
+ }
- public cc.kune.core.shared.dto.UserInfoDTO getUserInfo() {
- return userInfo;
- }
+ @Override
+ public boolean equals(final Object other) {
+ if (other != null && other.getClass().equals(this.getClass())) {
+ final UserSignInEvent o = (UserSignInEvent) other;
+ return true && ((o.userInfo == null && this.userInfo == null) || (o.userInfo != null && o.userInfo.equals(this.userInfo)));
+ }
+ return false;
+ }
- @Override
- protected void dispatch(UserSignInHandler handler) {
- handler.onUserSignIn(this);
- }
+ @Override
+ public Type<UserSignInHandler> getAssociatedType() {
+ return TYPE;
+ }
- @Override
- public boolean equals(Object other) {
- if (other != null && other.getClass().equals(this.getClass())) {
- UserSignInEvent o = (UserSignInEvent) other;
- return true
- && ((o.userInfo == null && this.userInfo == null) || (o.userInfo != null && o.userInfo.equals(this.userInfo)))
- ;
+ public cc.kune.core.shared.dto.UserInfoDTO getUserInfo() {
+ return userInfo;
}
- return false;
- }
- @Override
- public int hashCode() {
- int hashCode = 23;
- hashCode = (hashCode * 37) + getClass().hashCode();
- hashCode = (hashCode * 37) + (userInfo == null ? 1 : userInfo.hashCode());
- return hashCode;
- }
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + getClass().hashCode();
+ hashCode = (hashCode * 37) + (userInfo == null ? 1 : userInfo.hashCode());
+ return hashCode;
+ }
- @Override
- public String toString() {
- return "UserSignInEvent["
- + userInfo
- + "]";
- }
+ @Override
+ public String toString() {
+ return "UserSignInEvent[" + userInfo + "]";
+ }
}
Copied: trunk/src/main/java/cc/kune/core/public/fontface (from rev 1182, trunk/src/main/java/cc/kune/wspace/public/fontface)
Added: trunk/src/main/java/cc/kune/core/public/fontface/SIL Open Font License 1.1.txt
===================================================================
--- trunk/src/main/java/cc/kune/core/public/fontface/SIL Open Font License 1.1.txt (rev 0)
+++ trunk/src/main/java/cc/kune/core/public/fontface/SIL Open Font License 1.1.txt 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,91 @@
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
\ No newline at end of file
Property changes on: trunk/src/main/java/cc/kune/core/public/fontface/SIL Open Font License 1.1.txt
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-B-webfont.eot
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-B-webfont.eot
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-B-webfont.svg
===================================================================
--- trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-B-webfont.svg (rev 0)
+++ trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-B-webfont.svg 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,144 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Designer : Dalton Maag Ltd
+Foundry : Dalton Maag Ltd
+Foundry URL : httpwwwdaltonmaagcom
+</metadata>
+<defs>
+<font id="webfontssbCkuz5" horiz-adv-x="568" >
+<font-face units-per-em="1000" ascent="800" descent="-200" />
+<missing-glyph horiz-adv-x="240" />
+<glyph unicode=" " horiz-adv-x="240" />
+<glyph unicode="	" horiz-adv-x="240" />
+<glyph unicode=" " horiz-adv-x="240" />
+<glyph unicode="!" horiz-adv-x="286" d="M223 514q0 -81 -6 -151t-16 -142h-114q-10 72 -16.5 142t-6.5 151v179h159v-179zM236 79q0 -44 -28.5 -68t-64.5 -24t-64.5 24t-28.5 68t28.5 68t64.5 24t64.5 -24t28.5 -68z" />
+<glyph unicode=""" horiz-adv-x="465" d="M197 760v-74q0 -48 -7.5 -105t-16.5 -115h-99q-11 58 -17.5 115t-6.5 106v73h147zM415 760v-74q0 -48 -7.5 -105t-16.5 -115h-99q-11 58 -17.5 115t-6.5 106v73h147z" />
+<glyph unicode="#" horiz-adv-x="699" d="M325 523h116l33 170h130l-33 -170h73v-115h-95l-24 -123h119v-115h-141l-32 -170h-130l32 170h-116l-32 -170h-130l32 170h-72v115h94l24 123h-118v115h140l33 170h130zM279 285h116l24 123h-116z" />
+<glyph unicode="$" d="M221 10q-73 6 -118.5 22.5t-67.5 27.5l43 115q35 -17 83.5 -31t102.5 -14q61 0 83.5 16.5t22.5 46.5q0 19 -9 32.5t-26 24.5t-43 21.5t-60 22.5q-33 12 -64.5 26.5t-57 35.5t-41 51.5t-15.5 73.5q0 33 9.5 63.5t29.5 55.5t52 42.5t76 25.5v108h126v-104q52 -5 89.5 -15 t59.5 -20l-31 -120q-33 14 -76.5 24t-91.5 10t-69 -16t-21 -42q0 -16 6.5 -27.5t20.5 -20.5t34.5 -17.5t49.5 -18.5q44 -16 81.5 -35t65 -43.5t43 -57.5t15.5 -77q0 -30 -9 -59.5t-30 -54.5t-54.5 -43t-82.5 -26v-122h-126v119z" />
+<glyph unicode="%" horiz-adv-x="918" d="M389 515q0 -94 -48 -144t-129 -50t-129 50t-48 144t48 144t129 50t129 -50t48 -144zM276 515q0 51 -18 74t-46 23q-29 0 -46.5 -23t-17.5 -74t17.5 -74.5t46.5 -23.5q28 0 46 23.5t18 74.5zM584 693h139l-391 -693h-139zM883 178q0 -94 -48 -144t-129 -50t-129 50 t-48 144t48 144t129 50t129 -50t48 -144zM770 178q0 51 -18 74t-46 23q-29 0 -46.5 -23t-17.5 -74t17.5 -74.5t46.5 -23.5q28 0 46 23.5t18 74.5z" />
+<glyph unicode="&" horiz-adv-x="705" d="M35 184q0 38 11 69.5t29.5 57t43 45t51.5 34.5q-24 29 -43 62.5t-19 73.5q0 88 53 135.5t146 47.5q47 0 82 -12.5t58.5 -34t35.5 -50t12 -61.5q0 -61 -34.5 -108.5t-87.5 -79.5l112 -112q9 20 17.5 50.5t10.5 53.5l124 -16q-2 -19 -7 -41.5t-12.5 -45.5t-17 -46 t-20.5 -42q32 -36 62.5 -78.5t52.5 -85.5h-153q-8 13 -22 32.5t-28 33.5q-40 -32 -93 -53.5t-119 -21.5q-70 0 -117 17.5t-75.5 45t-40.5 62t-12 68.5zM174 199q0 -15 6 -31t19.5 -29.5t34.5 -22t51 -8.5q42 0 73.5 11t52.5 29l-160 161q-14 -7 -27.5 -17t-24.5 -23.5 t-18 -30.5t-7 -39zM368 544q0 23 -15 41t-50 18q-32 0 -49.5 -19.5t-17.5 -50.5q0 -26 15 -50.5t39 -46.5q32 18 55 43t23 65z" />
+<glyph unicode="'" horiz-adv-x="247" d="M197 760v-74q0 -48 -7.5 -105t-16.5 -115h-99q-11 58 -17.5 115t-6.5 106v73h147z" />
+<glyph unicode="(" horiz-adv-x="356" d="M217 299q0 -117 37.5 -224.5t96.5 -192.5l-104 -67q-84 98 -130.5 222t-46.5 262t46.5 262t130.5 222l104 -67q-59 -85 -96.5 -192.5t-37.5 -224.5z" />
+<glyph unicode=")" horiz-adv-x="356" d="M139 299q0 117 -37.5 224.5t-96.5 192.5l104 67q84 -98 130.5 -222t46.5 -262t-46.5 -262t-130.5 -222l-104 67q59 85 96.5 192.5t37.5 224.5z" />
+<glyph unicode="*" horiz-adv-x="502" d="M283 536q11 9 25.5 19.5t30.5 21t31 19t28 12.5l24 8l40 -124l-24 -8q-13 -4 -30 -6t-36 -3q-13 -1 -25 -1h-12q-18 1 -32 1l27 -19l28 -22q15 -11 28 -23t21 -23l16 -21l-106 -75l-15 20q-8 10 -15.5 26t-14 33.5t-12 34.5t-9.5 31q-4 -14 -9.5 -31t-12 -34.5t-14 -33.5 t-15.5 -26l-15 -20l-106 75l16 21q8 11 21 23t28 23l28 22l27 19q-14 0 -32 -1h-12q-12 0 -25 1q-19 1 -36 3t-30 6l-24 8l40 124l24 -8q13 -4 28 -12.5t31 -19t30.5 -21t25.5 -19.5q-5 13 -10.5 30.5t-10.5 35.5t-8.5 35t-3.5 31v25h130v-25q0 -14 -3.5 -31t-8.5 -35 t-10.5 -35.5t-10.5 -30.5z" />
+<glyph unicode="+" d="M49 357h167v185h136v-185h167v-125h-167v-185h-136v185h-167v125z" />
+<glyph unicode="," horiz-adv-x="246" d="M211 152q2 -24 2.5 -34t0.5 -17q0 -60 -21 -131t-59 -133l-117 29q23 65 32 123.5t9 96.5v16l-2 19q0 10 -0.5 19t-0.5 12h156z" />
+<glyph unicode="-" horiz-adv-x="340" d="M25 355h290v-135h-290v135z" />
+<glyph unicode="." horiz-adv-x="246" d="M216 79q0 -44 -28.5 -68t-64.5 -24t-64.5 24t-28.5 68t28.5 68t64.5 24t64.5 -24t28.5 -68z" />
+<glyph unicode="/" horiz-adv-x="437" d="M128 -185h-153l336 968h151z" />
+<glyph unicode="0" d="M534 348q0 -175 -66.5 -268.5t-183.5 -93.5t-183.5 93.5t-66.5 268.5q0 87 17.5 154t50.5 113t79 70t103 24q117 0 183.5 -93.5t66.5 -267.5zM382 348q0 52 -5 94.5t-16 73.5t-30 48t-47 17t-46.5 -17t-30 -48t-16.5 -73.5t-5 -94.5t5 -95t16.5 -74t30 -48t46.5 -17 t47 17t30 48t16 74t5 95z" />
+<glyph unicode="1" d="M70 549q29 12 60.5 27.5t61.5 34t57.5 39t49.5 43.5h104v-693h-149v499q-30 -20 -67 -36.5t-72 -28.5z" />
+<glyph unicode="2" d="M496 511q0 -38 -15 -73t-39 -67.5t-54 -62.5l-59 -57l-33 -31l-33 -36t-28.5 -33.5t-15.5 -25.5h298v-125h-462q-2 11 -2 28v24q0 48 15.5 88t40.5 74.5t57 64.5l62 60l45 43q21 21 37 40.5t25 39t9 39.5q0 44 -25 62t-62 18q-27 0 -50.5 -8.5t-43 -20t-33.5 -23 t-21 -18.5l-74 104q44 41 102.5 67.5t125.5 26.5q61 0 105 -14t72.5 -39.5t42 -62t13.5 -82.5z" />
+<glyph unicode="3" d="M228 -15q-27 0 -57 3.5t-58 9.5t-51 13t-36 13l29 124q26 -11 66.5 -23.5t100.5 -12.5q69 0 101 26t32 70q0 27 -11.5 45.5t-31.5 30t-47.5 16t-58.5 4.5h-58v120h66q22 0 42.5 4t36.5 13.5t25.5 26t9.5 41.5q0 19 -8 33t-20.5 23t-29 13.5t-33.5 4.5q-43 0 -79.5 -13 t-66.5 -32l-53 109q16 10 37.5 21t47.5 20t55.5 15t62.5 6q61 0 105.5 -14.5t73.5 -41t43 -62t14 -77.5q0 -41 -23 -79.5t-62 -58.5q54 -22 83.5 -65.5t29.5 -104.5q0 -48 -16 -88.5t-50 -70t-86.5 -46t-124.5 -16.5z" />
+<glyph unicode="4" d="M319 511l-83 -111q-44 -60 -74 -123h157v234zM465 693v-416h74v-122h-74v-155h-146v155h-299v109q22 44 55 99.5t73.5 114t85.5 114.5t90 101h141z" />
+<glyph unicode="5" d="M360 204q0 29 -13 51.5t-45 37.5t-86 23t-136 8q11 93 18 189t11 180h375v-125h-250q-2 -36 -4.5 -69.5t-5.5 -58.5q146 -10 215.5 -68.5t69.5 -162.5q0 -48 -17 -89t-51 -71t-85.5 -47t-120.5 -17q-27 0 -56.5 3.5t-57 9t-49.5 11.5t-34 12l27 123q25 -11 66 -21.5 t98 -10.5q69 0 100 27.5t31 64.5z" />
+<glyph unicode="6" d="M274 326q-22 0 -47 -4t-39 -11q0 -4 -0.5 -12t-0.5 -14q0 -36 5 -68t17 -56t32 -37.5t50 -13.5q25 0 42.5 10.5t29 26.5t17 35.5t5.5 37.5q0 51 -25.5 78.5t-85.5 27.5zM293 442q65 0 110.5 -17.5t74.5 -47.5t42 -70t13 -85q0 -40 -14.5 -82t-44 -76t-75 -56t-107.5 -22 q-125 0 -190 79t-65 218q0 100 31 177t88.5 129.5t139 80t183.5 28.5l4 -60l4 -62q-51 -1 -95.5 -9.5t-81 -26.5t-63.5 -46.5t-42 -69.5q22 10 45 14t43 4z" />
+<glyph unicode="7" d="M142 0q6 73 25 152t46.5 155t61.5 143.5t69 116.5h-301v127h485v-108q-32 -35 -70.5 -97t-73 -140.5t-60 -168.5t-31.5 -180h-151z" />
+<glyph unicode="8" d="M530 193q0 -45 -15.5 -82.5t-46.5 -65.5t-77.5 -43.5t-107.5 -15.5q-70 0 -116.5 19.5t-75 48.5t-40.5 63.5t-12 63.5q0 30 8 55t22 45.5t31.5 37.5t37.5 32q-43 35 -63.5 69t-20.5 87q0 40 16.5 77t46.5 64.5t72.5 44t94.5 16.5q61 0 104.5 -17.5t71.5 -44.5t40.5 -60.5 t12.5 -66.5q0 -48 -25.5 -89.5t-63.5 -65.5q57 -37 81.5 -77.5t24.5 -94.5zM184 187q0 -12 5.5 -26.5t17.5 -26.5t31 -20t46 -8q52 0 76 25t24 56q0 23 -10.5 41t-28.5 31.5t-42.5 24t-52.5 19.5q-28 -21 -47 -49t-19 -67zM369 516q0 11 -4.5 23.5t-15 23.5t-26.5 18.5 t-39 7.5q-22 0 -38 -7t-26.5 -18.5t-15.5 -24.5t-5 -25q0 -32 23.5 -60t80.5 -48q32 20 49 46t17 64z" />
+<glyph unicode="9" d="M289 372q23 0 48 4.5t37 12.5v9q0 4 0.5 8t0.5 7q-1 36 -6 67.5t-17 55t-32.5 37t-50.5 13.5q-24 0 -42 -10t-29 -26t-16.5 -35t-5.5 -37q0 -54 26.5 -80t86.5 -26zM362 275q-21 -10 -46.5 -14.5t-43.5 -4.5q-65 0 -111 15.5t-75.5 44t-43.5 68.5t-14 88q0 40 13.5 82 t42.5 76.5t73.5 57t107.5 22.5q129 0 194.5 -79.5t65.5 -228.5q0 -98 -25.5 -173t-79 -126t-136.5 -77.5t-197 -27.5q-1 32 -3 62l-4 62q57 1 103 8.5t81 25t59.5 46.5t38.5 73z" />
+<glyph unicode=":" horiz-adv-x="246" d="M216 434q0 -44 -28.5 -68t-64.5 -24t-64.5 24t-28.5 68t28.5 68t64.5 24t64.5 -24t28.5 -68zM216 79q0 -44 -28.5 -68t-64.5 -24t-64.5 24t-28.5 68t28.5 68t64.5 24t64.5 -24t28.5 -68z" />
+<glyph unicode=";" horiz-adv-x="246" d="M216 434q0 -44 -28.5 -68t-64.5 -24t-64.5 24t-28.5 68t28.5 68t64.5 24t64.5 -24t28.5 -68zM211 152q2 -24 2.5 -34t0.5 -17q0 -60 -21 -131t-59 -133l-117 29q23 65 32 123.5t9 96.5v16l-2 19q0 10 -0.5 19t-0.5 12h156z" />
+<glyph unicode="<" d="M50 357l430 181l39 -121l-314 -122l314 -122l-39 -121l-430 181v124z" />
+<glyph unicode="=" d="M49 247h470v-125h-470v125zM49 466h470v-125h-470v125z" />
+<glyph unicode=">" d="M518 233l-430 -181l-39 121l314 122l-314 122l39 121l430 -181v-124z" />
+<glyph unicode="?" horiz-adv-x="455" d="M201 582q-36 0 -68 -9t-71 -29l-42 113q39 25 92 38.5t104 13.5q64 0 105.5 -17t65.5 -43t33.5 -57t9.5 -59t-8.5 -51.5t-21.5 -43.5t-30 -38l-33 -34l-25 -26q-13 -13 -23.5 -28t-17.5 -31.5t-7 -33.5v-12q0 -8 1 -14h-132q-2 10 -2.5 22.5t-0.5 21.5q0 28 7 50.5 t18.5 42t26.5 36.5t31 33q23 23 42 45.5t19 51.5q0 24 -18.5 41t-54.5 17zM294 79q0 -44 -28.5 -68t-64.5 -24t-64.5 24t-28.5 68t28.5 68t64.5 24t64.5 -24t28.5 -68z" />
+<glyph unicode="@" horiz-adv-x="974" d="M701 28q-29 0 -58 7t-48 25q-44 -31 -111 -31q-50 0 -91.5 15.5t-71 46.5t-46 76.5t-16.5 105.5q0 51 16.5 95t48.5 76.5t78.5 51.5t105.5 19t104.5 -10.5t75.5 -21.5v-314q0 -23 9.5 -31t27.5 -8q16 0 31.5 9t26.5 32.5t18 64t7 102.5t-21.5 113.5t-62 88t-99 57 t-132.5 20.5q-71 0 -130.5 -24t-103 -68.5t-68 -108.5t-24.5 -144q0 -83 24 -145.5t68.5 -104.5t108 -63.5t143.5 -21.5q50 0 94.5 6.5t74.5 12.5l15 -94q-25 -8 -76 -17t-108 -9q-96 0 -180 25t-146.5 78t-98.5 135.5t-36 197.5q0 111 38 194.5t100 139.5t141.5 84 t163.5 28q92 0 171 -25.5t136.5 -74.5t90.5 -121.5t33 -166.5q0 -73 -15.5 -129.5t-45 -94.5t-70.5 -58t-92 -20zM560 147q-2 8 -3 23.5t-1 29.5v204q-20 4 -42 4q-33 0 -56 -10.5t-37 -28.5t-20.5 -42.5t-6.5 -53.5t5 -53.5t17.5 -42.5t33.5 -28.5t52 -10.5q18 0 34 2.5 t24 6.5z" />
+<glyph unicode="A" horiz-adv-x="721" d="M544 0q-11 36 -24 74l-27 76h-270l-27 -76q-13 -38 -24 -74h-162l74 207l68 179l66 160q33 75 68 147h149l67 -147l66 -160l69 -179l74 -207h-167zM357 536q-5 -15 -15 -41l-23 -60l-29 -75l-31 -86h197l-31 86l-29 75l-23 60z" />
+<glyph unicode="B" horiz-adv-x="672" d="M311 -9q-57 0 -113.5 3.5t-117.5 16.5v672q48 9 105 13.5t106 4.5q66 0 121.5 -9.5t95.5 -32.5t62.5 -60.5t22.5 -92.5q0 -83 -80 -131q66 -25 90 -68t24 -97q0 -109 -79.5 -164t-236.5 -55zM232 302v-179q17 -2 37 -3t44 -1q70 0 113 20t43 74q0 48 -36 68.5t-103 20.5 h-98zM232 421h76q72 0 103 18.5t31 59.5q0 42 -32 59t-94 17q-20 0 -43 -0.5t-41 -2.5v-151z" />
+<glyph unicode="C" horiz-adv-x="648" d="M396 -14q-169 0 -257.5 94t-88.5 267q0 86 27 153.5t74 114t112 70.5t141 24q44 0 80 -6.5t63 -15t45 -17.5t26 -14l-45 -126q-32 17 -74.5 29t-96.5 12q-36 0 -70.5 -12t-61 -38.5t-42.5 -68.5t-16 -102q0 -48 10.5 -89.5t34 -71.5t61.5 -47.5t92 -17.5q34 0 61 4 t48 9.5t37 12.5l29 13l43 -125q-33 -20 -93 -36t-139 -16z" />
+<glyph unicode="D" horiz-adv-x="737" d="M236 127q11 -1 25.5 -1.5t34.5 -0.5q117 0 173.5 59t56.5 163q0 109 -54 165t-171 56q-16 0 -33 -0.5t-32 -2.5v-438zM687 347q0 -90 -28 -157t-79.5 -111t-125.5 -66t-166 -22q-42 0 -98 3.5t-110 14.5v675q54 10 112.5 13.5t100.5 3.5q89 0 161.5 -20t124.5 -63 t80 -110t28 -161z" />
+<glyph unicode="E" horiz-adv-x="606" d="M80 0v693h468v-131h-312v-136h277v-128h-277v-167h335v-131h-491z" />
+<glyph unicode="F" horiz-adv-x="574" d="M80 0v693h464v-131h-308v-145h274v-131h-274v-286h-156z" />
+<glyph unicode="G" horiz-adv-x="702" d="M418 573q-109 0 -157.5 -60.5t-48.5 -165.5q0 -51 12 -92.5t36 -71.5t60 -46.5t84 -16.5q26 0 44.5 1t32.5 4v241h156v-343q-28 -11 -90 -23.5t-153 -12.5q-78 0 -141.5 24t-108.5 70t-69.5 113t-24.5 153q0 87 27 154t74 113.5t110.5 70.5t135.5 24q49 0 88.5 -6.5 t68 -15t47 -17.5t26.5 -14l-45 -125q-32 17 -73.5 29.5t-90.5 12.5z" />
+<glyph unicode="H" horiz-adv-x="734" d="M498 693h156v-693h-156v294h-262v-294h-156v693h156v-265h262v265z" />
+<glyph unicode="I" horiz-adv-x="316" d="M80 693h156v-693h-156v693z" />
+<glyph unicode="J" horiz-adv-x="529" d="M459 233q0 -51 -11.5 -96t-40 -78.5t-77 -53t-122.5 -19.5q-68 0 -117 16.5t-81 38.5l52 121q29 -17 62 -30t72 -13q57 0 82 28t25 94v452h156v-460z" />
+<glyph unicode="K" horiz-adv-x="684" d="M489 0q-21 34 -49.5 73.5t-62 79t-69.5 76t-72 64.5v-293h-156v693h156v-262l122 133l115 129h185l-142 -162l-151 -157q83 -69 160.5 -164t148.5 -210h-185z" />
+<glyph unicode="L" horiz-adv-x="563" d="M543 134v-134h-463v693h156v-559h307z" />
+<glyph unicode="M" horiz-adv-x="897" d="M264 693l42 -81l48 -106l51 -115l47 -111l47 111l51 115l48 106l42 81h142q10 -69 18.5 -154.5t15 -178t12 -185.5t9.5 -175h-152q-3 101 -8 220t-15 240l-40 -93l-44 -102l-41 -97l-34 -80h-109l-34 80l-42 97l-43 102l-40 93q-10 -121 -15 -240t-8 -220h-152 q4 82 9.5 175t12 185.5t15 178t18.5 154.5h149z" />
+<glyph unicode="N" horiz-adv-x="756" d="M545 0q-67 119 -145 235t-166 219v-454h-154v693h127q33 -33 73 -81l82 -102l82 -114l77 -112v409h155v-693h-131z" />
+<glyph unicode="O" horiz-adv-x="790" d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -89 -26.5 -156.5t-72.5 -113t-109.5 -68.5t-136.5 -23q-71 0 -134 23 t-110 68.5t-74 113t-27 156.5t28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5z" />
+<glyph unicode="P" horiz-adv-x="644" d="M288 701q155 0 238 -54.5t83 -178.5q0 -125 -84 -180.5t-240 -55.5h-49v-232h-156v683q51 10 108 14t100 4zM298 568q-17 0 -33.5 -1t-28.5 -2v-200h49q81 0 122 22t41 82q0 29 -10.5 48t-30 30.5t-47.5 16t-62 4.5z" />
+<glyph unicode="Q" horiz-adv-x="790" d="M211 347q0 -51 12.5 -92t36 -70.5t57.5 -45.5t78 -16q43 0 77.5 16t58 45.5t36 70.5t12.5 92t-12.5 92.5t-36 71t-58 45.5t-77.5 16q-44 0 -78 -16.5t-57.5 -46t-36 -71t-12.5 -91.5zM740 347q0 -73 -18 -131.5t-50.5 -102.5t-77.5 -73t-99 -42q5 -20 22 -32.5t43 -20.5 t60.5 -12t74.5 -7l-32 -114q-78 3 -133.5 15.5t-94 34.5t-61 54t-34.5 74q-62 8 -115 34.5t-92 71.5t-61 108t-22 143q0 89 28 156.5t75.5 113.5t110 69t131.5 23q71 0 134 -23t110 -69t74 -113.5t27 -156.5z" />
+<glyph unicode="R" horiz-adv-x="667" d="M283 701q156 0 239 -55.5t83 -172.5q0 -73 -33.5 -118.5t-96.5 -71.5q21 -26 44 -59.5t45.5 -70t43.5 -76t39 -77.5h-175l-38 69l-40 68l-41 63q-20 29 -40 53h-77v-253h-156v683q51 10 105.5 14t97.5 4zM292 568q-17 0 -30.5 -1t-25.5 -2v-188h44q88 0 126 22t38 75 q0 51 -38.5 72.5t-113.5 21.5z" />
+<glyph unicode="S" horiz-adv-x="582" d="M269 119q33 0 54.5 5.5t34.5 15t18 22.5t5 29q0 34 -32 56.5t-110 48.5q-34 12 -68 27.5t-61 39t-44 57t-17 81.5t18 86.5t51 65.5t80 41.5t106 14.5q70 0 121 -15t84 -33l-45 -123q-29 15 -64.5 26.5t-85.5 11.5q-56 0 -80.5 -15.5t-24.5 -47.5q0 -19 9 -32t25.5 -23.5 t38 -19t47.5 -17.5q54 -20 94 -39.5t66.5 -45.5t39.5 -61t13 -85q0 -97 -68 -150.5t-205 -53.5q-46 0 -83 5.5t-65.5 13.5t-49 17t-34.5 17l44 124q31 -17 76.5 -30.5t111.5 -13.5z" />
+<glyph unicode="T" horiz-adv-x="614" d="M594 693v-133h-209v-560h-156v560h-209v133h574z" />
+<glyph unicode="U" horiz-adv-x="707" d="M351 -14q-73 0 -126 20.5t-87.5 57t-51 87t-16.5 111.5v431h156v-418q0 -42 9.5 -71.5t26 -48t40 -26.5t51.5 -8q57 0 92.5 35t35.5 119v418h156v-431q0 -61 -17 -112t-52 -87.5t-89 -56.5t-128 -20z" />
+<glyph unicode="V" horiz-adv-x="722" d="M286 0q-41 87 -81 181l-76 186l-67 176l-52 150h172l44 -129l48 -139l47 -132q23 -63 43 -109q19 46 42 109l48 132l48 139l44 129h166l-53 -150l-66 -176l-76 -186q-40 -94 -81 -181h-150z" />
+<glyph unicode="W" horiz-adv-x="948" d="M545 619l27 -93l30 -106l34 -110l33 -102q13 51 26.5 111t25.5 124l23 127l22 123h162q-35 -174 -80.5 -353t-98.5 -340h-143q-35 96 -68 202l-65 211l-64 -211q-32 -106 -67 -202h-143q-53 161 -98.5 340t-80.5 353h169q10 -59 22 -123l25 -127q13 -64 26.5 -124 t27.5 -111q18 49 35 104l33 110l30 106l24 91h133z" />
+<glyph unicode="X" horiz-adv-x="675" d="M478 0q-29 58 -63.5 117.5t-79.5 121.5q-14 -18 -35.5 -50l-43.5 -68l-40 -69q-19 -33 -28 -52h-178q44 81 102.5 170t130.5 189l-223 334h189l135 -216l132 216h178l-220 -336q84 -109 141 -201.5t90 -155.5h-187z" />
+<glyph unicode="Y" horiz-adv-x="661" d="M334 408q42 71 80 142t70 143h172q-57 -112 -118 -217t-129 -211v-265h-156v263q-68 106 -129.5 212t-118.5 218h181q32 -72 69 -143t79 -142z" />
+<glyph unicode="Z" horiz-adv-x="610" d="M569 585q-32 -33 -76 -85.5t-91 -114.5l-93 -128q-46 -66 -82 -126h353v-131h-545v93q28 51 69 113l84 126q44 64 90 124l84 106h-311v131h518v-108z" />
+<glyph unicode="[" horiz-adv-x="371" d="M90 783h271v-119h-129v-730h129v-119h-271v968z" />
+<glyph unicode="\" horiz-adv-x="437" d="M-25 783h151l336 -968h-153z" />
+<glyph unicode="]" horiz-adv-x="371" d="M281 -185h-271v119h129v730h-129v119h271v-968z" />
+<glyph unicode="^" d="M550 346l-125 -61l-141 245l-141 -245l-125 61l207 347h118z" />
+<glyph unicode="_" horiz-adv-x="500" d="M0 -61h500v-124h-500v124z" />
+<glyph unicode="`" horiz-adv-x="286" d="M76 789l198 -131l-51 -79l-211 107z" />
+<glyph unicode="a" horiz-adv-x="553" d="M271 104q22 0 42 1t32 3v113q-9 2 -27 4t-33 2q-21 0 -39.5 -2.5t-32.5 -9.5t-22 -19t-8 -30q0 -35 23.5 -48.5t64.5 -13.5zM259 540q66 0 110 -15t70.5 -43t37.5 -68t11 -89v-310q-32 -7 -89 -16.5t-138 -9.5q-51 0 -92.5 9t-71.5 29.5t-46 53.5t-16 81q0 46 18.5 78 t49.5 51t71 27.5t83 8.5q29 0 51.5 -2.5t36.5 -6.5v14q0 38 -23 61t-80 23q-38 0 -75 -5.5t-64 -15.5l-19 120q13 4 32.5 8.5t42.5 8t48.5 6t51.5 2.5z" />
+<glyph unicode="b" horiz-adv-x="604" d="M407 267q0 144 -106 144q-23 0 -45.5 -6t-36.5 -15v-271q11 -2 28 -3.5t37 -1.5q61 0 92 42t31 111zM559 263q0 -63 -18.5 -114t-53.5 -87t-86 -55.5t-116 -19.5q-27 0 -56.5 2.5t-58 6.5t-54.5 9.5t-46 11.5v735l149 24v-262q25 11 52 17t58 6q56 0 99 -19.5t72 -55.5 t44 -86.5t15 -112.5z" />
+<glyph unicode="c" horiz-adv-x="500" d="M45 263q0 57 18.5 107.5t53.5 88t85 59.5t114 22q42 0 77 -7.5t68 -21.5l-31 -119q-21 8 -46 14t-56 6q-66 0 -98.5 -41t-32.5 -108q0 -71 30.5 -110t106.5 -39q27 0 58 5t57 16l21 -122q-26 -11 -65 -19t-86 -8q-72 0 -124 21.5t-85.5 58.5t-49 87.5t-15.5 109.5z" />
+<glyph unicode="d" horiz-adv-x="604" d="M197 267q0 -69 31 -111t92 -42q20 0 37 1.5t28 3.5v271q-14 9 -36.5 15t-45.5 6q-106 0 -106 -144zM534 17q-20 -6 -46 -11.5t-54.5 -9.5t-58 -6.5t-56.5 -2.5q-65 0 -116 19t-86 54.5t-53.5 86t-18.5 113.5q0 64 16 115.5t46 87.5t73.5 55t99.5 19q31 0 55.5 -6 t49.5 -17v238l149 24v-759z" />
+<glyph unicode="e" horiz-adv-x="584" d="M45 259q0 70 21.5 122.5t56.5 87.5t80.5 53t93.5 18q112 0 177 -68.5t65 -201.5q0 -13 -1 -28.5t-2 -27.5h-338q5 -46 43 -73t102 -27q41 0 80.5 7.5t64.5 18.5l20 -121q-12 -6 -32 -12t-44.5 -10.5t-52.5 -7.5t-56 -3q-71 0 -123.5 21t-87 57.5t-51 86.5t-16.5 108z M395 316q-1 19 -6.5 37t-17 32t-29 23t-43.5 9q-25 0 -43 -8.5t-30 -22.5t-18.5 -32.5t-9.5 -37.5h197z" />
+<glyph unicode="f" horiz-adv-x="422" d="M298 776q42 0 77 -8.5t54 -16.5l-29 -119q-20 9 -43.5 13.5t-43.5 4.5q-27 0 -45.5 -7.5t-29 -20.5t-15 -31t-4.5 -39v-26h184v-124h-184v-402h-149v554q0 102 57.5 162t170.5 60z" />
+<glyph unicode="g" horiz-adv-x="594" d="M197 280q0 -125 101 -125q23 0 43 6t34 14v238q-11 2 -26 3.5t-35 1.5q-59 0 -88 -39t-29 -99zM524 66q0 -129 -65.5 -191.5t-202.5 -62.5q-48 0 -96 8.5t-89 22.5l26 125q35 -14 73.5 -22t87.5 -8q64 0 90.5 28t26.5 72v19q-24 -11 -49.5 -16.5t-55.5 -5.5 q-109 0 -167 64.5t-58 180.5q0 58 18 105.5t52.5 81.5t84.5 52.5t113 18.5q27 0 55.5 -2.5t56.5 -6.5t53.5 -9.5t45.5 -11.5v-442z" />
+<glyph unicode="h" horiz-adv-x="589" d="M70 0v752l149 24v-252q15 5 38.5 9.5t45.5 4.5q64 0 106.5 -17.5t68 -49.5t36 -76t10.5 -98v-297h-149v279q0 72 -18.5 102t-68.5 30q-20 0 -37.5 -3.5t-31.5 -7.5v-400h-149z" />
+<glyph unicode="i" horiz-adv-x="289" d="M219 0h-149v526h149v-526zM233 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+<glyph unicode="j" horiz-adv-x="289" d="M21 -185q-14 0 -41.5 3t-51.5 11l20 121q15 -5 27.5 -7t31.5 -2q35 0 49 21t14 61v503h149v-507q0 -104 -51 -154t-147 -50zM233 678q0 -41 -26.5 -64.5t-62.5 -23.5t-62.5 23.5t-26.5 64.5t26.5 64.5t62.5 23.5t62.5 -23.5t26.5 -64.5z" />
+<glyph unicode="k" horiz-adv-x="579" d="M219 336l45 50l46 52l42 48l33 40h177l-104 -116q-50 -56 -110 -115q30 -27 62 -64.5t62 -77.5t55 -80t42 -73h-171l-36 58l-44 62.5t-48.5 60.5t-50.5 49v-230h-149v752l149 24v-440z" />
+<glyph unicode="l" horiz-adv-x="316" d="M280 -10q-65 1 -105.5 14t-64 36.5t-32 57t-8.5 75.5v579l149 24v-573q0 -20 3 -36t11.5 -27t24.5 -18t43 -9z" />
+<glyph unicode="m" horiz-adv-x="862" d="M359 279q0 72 -18.5 102t-63.5 30q-14 0 -29 -1.5t-29 -3.5v-406h-149v508q19 5 44.5 10.5t54 10t58.5 7t59 2.5q57 0 92.5 -14.5t58.5 -34.5q32 23 73.5 36t76.5 13q63 0 103.5 -17.5t64.5 -49.5t33 -76t9 -98v-297h-149v279q0 72 -18.5 102t-63.5 30q-12 0 -33.5 -6 t-35.5 -15q7 -23 9 -48.5t2 -54.5v-287h-149v279z" />
+<glyph unicode="n" horiz-adv-x="589" d="M70 508q38 11 98 20.5t126 9.5q67 0 111.5 -17.5t70.5 -49.5t37 -76t11 -98v-297h-149v279q0 72 -19 102t-71 30q-16 0 -34 -1.5t-32 -3.5v-406h-149v508z" />
+<glyph unicode="o" horiz-adv-x="607" d="M562 264q0 -62 -18 -113.5t-52 -88t-81.5 -56.5t-106.5 -20q-58 0 -105.5 20t-81.5 56.5t-53 88t-19 113.5t19.5 113t54 87t82 56t103.5 20q57 0 104.5 -20t81.5 -56t53 -87t19 -113zM410 264q0 69 -27.5 108.5t-78.5 39.5t-79 -39.5t-28 -108.5t28 -109.5t79 -40.5 t78.5 40.5t27.5 109.5z" />
+<glyph unicode="p" horiz-adv-x="604" d="M407 259q0 69 -31 110.5t-92 41.5q-20 0 -37 -1.5t-28 -3.5v-269q14 -9 36.5 -15t45.5 -6q106 0 106 143zM559 263q0 -61 -15 -111t-44 -86t-72 -56t-99 -20q-31 0 -58 6t-52 17v-198h-149v693q20 6 46 11.5t54.5 9.5t58 6.5t56.5 2.5q65 0 116 -19.5t86 -55t53.5 -86.5 t18.5 -114z" />
+<glyph unicode="q" horiz-adv-x="604" d="M197 259q0 -143 106 -143q23 0 45.5 6t36.5 15v269q-11 2 -28 3.5t-37 1.5q-61 0 -92 -41.5t-31 -110.5zM45 263q0 61 18.5 111.5t53.5 87t86 56.5t116 20q27 0 56.5 -2.5t58 -6.5t54.5 -9.5t46 -11.5v-693h-149v198q-25 -11 -52 -17t-58 -6q-112 0 -171 73.5t-59 199.5z " />
+<glyph unicode="r" horiz-adv-x="422" d="M387 394q-20 5 -47 10.5t-58 5.5q-14 0 -33.5 -2.5t-29.5 -5.5v-402h-149v498q40 14 94.5 26.5t121.5 12.5q12 0 29 -1.5t34 -4t34 -6t29 -8.5z" />
+<glyph unicode="s" horiz-adv-x="485" d="M221 107q41 0 58 8t17 31q0 18 -22 31.5t-67 30.5q-35 13 -63.5 27t-48.5 33.5t-31 46.5t-11 65q0 74 55 117t151 43q48 0 92 -8.5t70 -18.5l-26 -116q-26 9 -56.5 16t-68.5 7q-70 0 -70 -39q0 -9 3 -16t12 -13.5t24.5 -14t39.5 -16.5q49 -18 81 -35.5t50.5 -38t26 -45.5 t7.5 -58q0 -78 -58.5 -118t-165.5 -40q-70 0 -116.5 12t-64.5 20l25 121q38 -15 78 -23.5t79 -8.5z" />
+<glyph unicode="t" horiz-adv-x="444" d="M65 657l149 24v-155h179v-124h-179v-185q0 -47 16.5 -75t66.5 -28q24 0 49.5 4.5t46.5 12.5l21 -116q-27 -11 -60 -19t-81 -8q-61 0 -101 16.5t-64 46t-33.5 71.5t-9.5 93v442z" />
+<glyph unicode="u" horiz-adv-x="589" d="M519 18q-38 -11 -98 -20.5t-126 -9.5q-67 0 -111.5 18t-70.5 50.5t-37 77.5t-11 99v293h149v-275q0 -72 19 -104t71 -32q16 0 34 1.5t32 3.5v406h149v-508z" />
+<glyph unicode="v" horiz-adv-x="550" d="M213 0q-51 100 -103.5 234t-99.5 292h158q10 -39 24 -84l28 -92l28 -91q15 -44 29 -80l28 80l29 91l28 92q14 45 24 84h154q-47 -158 -99.5 -292t-103.5 -234h-124z" />
+<glyph unicode="w" horiz-adv-x="784" d="M390 302q-20 -76 -42 -151l-48 -151h-116q-18 42 -39 100t-43 126l-46 146l-46 154h157l17 -78l20 -88l22 -90l24 -88l26 90l24 90l22 86l18 78h108l18 -78l21 -86l23 -90q12 -46 25 -90l24 88l23 90l20 88l17 78h155l-46 -154l-46 -146q-22 -68 -43.5 -126t-39.5 -100 h-116l-49 151q-24 75 -44 151z" />
+<glyph unicode="x" horiz-adv-x="554" d="M279 366l104 160h154l-180 -253q60 -75 109 -146t78 -127h-160l-20 38q-12 22 -27 46l-31 50q-17 24 -33 44q-15 -19 -30.5 -42t-29.5 -46l-27 -47q-14 -23 -24 -43h-152q12 25 33 59l45 71l52 72l53 69l-90 127l-89 128h161z" />
+<glyph unicode="y" horiz-adv-x="547" d="M537 526q-45 -152 -94 -285t-107 -258q-21 -45 -42 -76.5t-46 -52t-56.5 -30t-73.5 -9.5q-35 0 -64.5 6.5t-48.5 14.5l26 119q23 -8 41 -11t38 -3q40 0 61.5 21.5t36.5 59.5q-51 100 -102 224.5t-96 279.5h158q10 -39 24 -84l28 -92l30 -91l30 -80q13 36 27 80l27 91 l26 92l23 84h154z" />
+<glyph unicode="z" horiz-adv-x="500" d="M465 426l-49 -54l-65 -75l-71 -86q-35 -45 -64 -87h254v-124h-435v88q21 36 51 78l62 83l64 81l59 72h-224v124h418v-100z" />
+<glyph unicode="{" horiz-adv-x="371" d="M35 358q44 0 64.5 26t20.5 68v151q0 43 11 76.5t36.5 56.5t68 35t105.5 12h20v-119h-25q-45 0 -60.5 -20.5t-15.5 -61.5v-133q0 -52 -14 -88t-56 -62q42 -26 56 -62t14 -88v-133q0 -41 15.5 -61.5t60.5 -20.5h25v-119h-20q-63 0 -105.5 12t-68 35t-36.5 56.5t-11 76.5 v151q0 42 -20.5 68t-64.5 26v118z" />
+<glyph unicode="|" horiz-adv-x="322" d="M90 783h142v-968h-142v968z" />
+<glyph unicode="}" horiz-adv-x="371" d="M336 240q-44 0 -64.5 -26t-20.5 -68v-151q0 -43 -11 -76.5t-36.5 -56.5t-68 -35t-105.5 -12h-20v119h25q45 0 60.5 20.5t15.5 61.5v133q0 52 14 88t56 62q-42 26 -56 62t-14 88v133q0 41 -15.5 61.5t-60.5 20.5h-25v119h20q63 0 105.5 -12t68 -35t36.5 -56.5t11 -76.5 v-151q0 -42 20.5 -68t64.5 -26v-118z" />
+<glyph unicode="~" d="M386 192q-30 0 -56.5 12t-51.5 26l-46 26q-23 12 -45 12q-9 0 -17 -2t-16 -9.5t-15.5 -22t-13.5 -39.5l-102 28q5 28 16 59t29.5 57t46.5 43t67 17q30 0 56.5 -12t51.5 -26l46 -26q23 -12 45 -12q9 0 17 2t16 9.5t15.5 22t13.5 39.5l102 -28q-5 -28 -16 -59t-30 -57 t-46.5 -43t-66.5 -17z" />
+<glyph unicode="¢" d="M224 37q-92 25 -135.5 94t-43.5 162q0 44 12 84.5t35.5 73.5t56.5 57.5t75 37.5v146h142v-135q26 -4 49.5 -10t46.5 -16l-33 -119q-21 8 -45.5 14t-55.5 6q-63 0 -97 -37.5t-34 -101.5q0 -68 32 -103.5t105 -35.5q27 0 58 5t57 16l21 -122q-20 -8 -46 -14.5t-58 -10.5 v-137h-142v146z" />
+<glyph unicode="£" d="M255 394h166v-121h-166q-1 -35 -4.5 -75t-8.5 -73h261v-125h-425q18 80 24 148t8 125h-87v121h87v53q0 75 18 124.5t49.5 79.5t75.5 42.5t96 12.5q40 0 75 -8t68 -22l-37 -117q-23 11 -43.5 16t-49.5 6q-24 0 -43.5 -5t-33.5 -19t-22 -38t-8 -60v-65z" />
+<glyph unicode="¥" d="M209 0v111h-148v99h148v65h-148v99h100l-44 80l-45 84l-42 82q-20 40 -35 73h170l59 -139q29 -69 63 -135q33 66 60 136.5t57 137.5h169l-79 -157q-40 -81 -86 -162h100v-99h-148v-65h148v-99h-148v-111h-151z" />
+<glyph unicode="©" horiz-adv-x="796" d="M746 347q0 -85 -28.5 -152.5t-76.5 -114t-111 -71t-132 -24.5t-132 24.5t-111 71t-76.5 114t-28.5 152.5t28.5 152.5t76.5 114t111 71t132 24.5t132 -24.5t111 -71t76.5 -114t28.5 -152.5zM644 347q0 60 -18 109t-50.5 84t-78 54t-99.5 19t-99.5 -19t-78 -54t-50.5 -84 t-18 -109t18 -109t50.5 -84t78 -54t99.5 -19t99.5 19t78 54t50.5 84t18 109zM414 160q-89 0 -136 49t-47 140q0 90 49.5 139t130.5 49q48 0 77.5 -13t40.5 -19l-32 -88q-14 8 -31.5 13.5t-45.5 5.5q-33 0 -53 -21t-20 -61q0 -18 3 -34.5t11 -29t22 -20.5t37 -8q30 0 50 7 l36 13l28 -91q-13 -7 -44 -19t-76 -12z" />
+<glyph unicode="­" horiz-adv-x="340" d="M25 355h290v-135h-290v135z" />
+<glyph unicode="®" horiz-adv-x="796" d="M746 347q0 -85 -28.5 -152.5t-76.5 -114t-111 -71t-132 -24.5t-132 24.5t-111 71t-76.5 114t-28.5 152.5t28.5 152.5t76.5 114t111 71t132 24.5t132 -24.5t111 -71t76.5 -114t28.5 -152.5zM644 347q0 60 -18 109t-50.5 84t-78 54t-99.5 19t-99.5 -19t-78 -54t-50.5 -84 t-18 -109t18 -109t50.5 -84t78 -54t99.5 -19t99.5 19t78 54t50.5 84t18 109zM459 177l-29 67q-12 28 -27 51h-40v-118h-97v342q34 8 63.5 11.5t51.5 3.5q161 0 161 -121q0 -30 -14 -53.5t-40 -37.5q11 -17 20 -32.5t17 -32l17 -35.5l19 -45h-102zM363 373h18q32 0 48 8.5 t16 32.5q0 20 -14 28t-41 8q-7 0 -14.5 -0.5t-12.5 -1.5v-75z" />
+<glyph unicode="´" horiz-adv-x="286" d="M267 686l-211 -107l-51 79l198 131z" />
+<glyph unicode=" " horiz-adv-x="394" />
+<glyph unicode=" " horiz-adv-x="789" />
+<glyph unicode=" " horiz-adv-x="394" />
+<glyph unicode=" " horiz-adv-x="789" />
+<glyph unicode=" " horiz-adv-x="263" />
+<glyph unicode=" " horiz-adv-x="197" />
+<glyph unicode=" " horiz-adv-x="131" />
+<glyph unicode=" " horiz-adv-x="131" />
+<glyph unicode=" " horiz-adv-x="98" />
+<glyph unicode=" " horiz-adv-x="157" />
+<glyph unicode=" " horiz-adv-x="43" />
+<glyph unicode="‐" horiz-adv-x="340" d="M25 355h290v-135h-290v135z" />
+<glyph unicode="‑" horiz-adv-x="340" d="M25 355h290v-135h-290v135z" />
+<glyph unicode="–" horiz-adv-x="500" d="M0 361h500v-124h-500v124z" />
+<glyph unicode="—" horiz-adv-x="1000" d="M0 361h1000v-124h-1000v124z" />
+<glyph unicode="‘" horiz-adv-x="243" d="M44 495q-2 14 -3 29t-1 22q0 67 24 127.5t59 102.5l105 -24q-19 -43 -30.5 -97t-11.5 -103v-8v-16l2 -17q0 -9 1 -16h-145z" />
+<glyph unicode="’" horiz-adv-x="243" d="M199 767q2 -14 3 -29t1 -22q0 -67 -24 -127.5t-59 -102.5l-105 24q19 43 30.5 97t11.5 103v8q0 7 -1 16v17q-1 9 -2 16h145z" />
+<glyph unicode="“" horiz-adv-x="454" d="M44 495q-2 14 -3 29t-1 22q0 67 24 127.5t59 102.5l101 -23q-19 -43 -30.5 -97.5t-11.5 -103.5v-8v-16l2 -17q0 -9 1 -16h-141zM259 495q-2 14 -3 29t-1 22q0 67 24 127.5t59 102.5l101 -23q-19 -43 -30.5 -97.5t-11.5 -103.5v-8q0 -7 1 -16v-17q1 -9 2 -16h-141z" />
+<glyph unicode="”" horiz-adv-x="454" d="M410 767q2 -14 3 -29t1 -22q0 -67 -24 -127.5t-59 -102.5l-101 23q19 43 30.5 97.5t11.5 103.5v8v16l-2 17q0 9 -1 16h141zM195 767q2 -14 3 -29t1 -22q0 -67 -24 -127.5t-59 -102.5l-101 23q19 43 30.5 97.5t11.5 103.5v8q0 7 -1 16v17q-1 9 -2 16h141z" />
+<glyph unicode="•" horiz-adv-x="364" d="M326 353q0 -29 -10 -54.5t-29 -45t-45.5 -31t-59.5 -11.5t-59.5 11.5t-45.5 31t-29 45t-10 54.5q0 28 10 54t29 45.5t45.5 31t59.5 11.5t59.5 -11.5t45.5 -31t29 -45.5t10 -54z" />
+<glyph unicode="…" horiz-adv-x="1000" d="M246 79q0 -44 -28.5 -68t-64.5 -24t-64.5 24t-28.5 68t28.5 68t64.5 24t64.5 -24t28.5 -68zM593 79q0 -44 -28.5 -68t-64.5 -24t-64.5 24t-28.5 68t28.5 68t64.5 24t64.5 -24t28.5 -68zM940 79q0 -44 -28.5 -68t-64.5 -24t-64.5 24t-28.5 68t28.5 68t64.5 24t64.5 -24 t28.5 -68z" />
+<glyph unicode=" " horiz-adv-x="157" />
+<glyph unicode=" " horiz-adv-x="197" />
+<glyph unicode="€" d="M122 481q26 112 99.5 169t186.5 57q44 0 76.5 -7t64.5 -19l-31 -116q-24 8 -49 13.5t-62 5.5q-60 0 -93.5 -26t-48.5 -77h222l-19 -99h-216q-1 -11 -1 -18v-16v-14q0 -6 1 -17h204l-19 -99h-172q17 -60 51 -83.5t85 -23.5q33 0 67 6t68 20l29 -115q-27 -14 -70 -24.5 t-99 -10.5q-125 0 -191 60.5t-87 170.5h-72v99h63q-1 11 -1 17v14v17q0 9 1 17h-63v99h76z" />
+<glyph unicode="™" horiz-adv-x="854" d="M352 693v-103h-102v-249h-118v249h-102v103h322zM791 693q10 -59 17.5 -143.5t15.5 -208.5h-115l-4 187l-59 -150h-79l-59 149q0 -32 -0.5 -63.5t-1 -57.5t-1 -44t-0.5 -21h-114q7 124 15 208.5t16 143.5h106q21 -45 40 -91l39 -92l41 95l36 88h107z" />
+</font>
+</defs></svg>
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-B-webfont.ttf
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-B-webfont.ttf
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-B-webfont.woff
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-B-webfont.woff
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-BI-webfont.eot
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-BI-webfont.eot
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-BI-webfont.svg
===================================================================
--- trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-BI-webfont.svg (rev 0)
+++ trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-BI-webfont.svg 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,144 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Designer : Dalton Maag Ltd
+Foundry : Dalton Maag Ltd
+Foundry URL : httpwwwdaltonmaagcom
+</metadata>
+<defs>
+<font id="webfont3JT5vc7d" horiz-adv-x="568" >
+<font-face units-per-em="1000" ascent="800" descent="-200" />
+<missing-glyph horiz-adv-x="240" />
+<glyph unicode=" " horiz-adv-x="240" />
+<glyph unicode="	" horiz-adv-x="240" />
+<glyph unicode=" " horiz-adv-x="240" />
+<glyph unicode="!" horiz-adv-x="295" d="M348 514q-20 -81 -42.5 -151t-49.5 -142h-114q8 72 18 142t29 151l43 179h159zM180 171q35 0 58.5 -20t23.5 -61q0 -23 -8.5 -42t-22.5 -32.5t-32 -21t-37 -7.5q-35 0 -58.5 20t-23.5 61q0 23 8.5 42t22.5 32.5t32 21t37 7.5z" />
+<glyph unicode=""" horiz-adv-x="492" d="M374 760l-18 -74q-11 -48 -32 -105l-45 -115h-99q4 58 11 115t18 106l18 73h147zM592 760l-18 -74q-11 -48 -32 -105l-45 -115h-99q4 58 11 115t18 106l18 73h147z" />
+<glyph unicode="#" horiz-adv-x="660" d="M379 170h-111l-71 -170h-128l71 170h-69l28 115h89l51 123h-110l28 115h130l72 170h128l-72 -170h111l72 170h128l-72 -170h70l-28 -115h-90l-51 -123h111l-28 -115h-131l-71 -170h-128zM316 285h111l51 123h-111z" />
+<glyph unicode="$" d="M282 129q21 0 42.5 2.5t38.5 10t27.5 22t10.5 38.5q0 16 -7 28t-19 22t-27 18l-32 17l-26 13q-64 32 -92.5 80t-28.5 100q0 33 12 64.5t36.5 57.5t63 43.5t91.5 23.5l27 107h126l-28 -110q38 -8 69.5 -21.5t51.5 -26.5l-60 -106q-26 20 -63 30.5t-72 10.5q-43 0 -74 -16 t-31 -50q0 -14 4 -25t13.5 -21t25.5 -20.5t41 -22.5q29 -15 55.5 -31.5t47 -38.5t33 -50t12.5 -66q0 -47 -15 -82t-42.5 -60t-66 -39.5t-85.5 -19.5l-29 -120h-126l30 122q-54 8 -92 25t-56 30l61 110q11 -8 27 -16.5t36 -15.5t43 -12t47 -5z" />
+<glyph unicode="%" horiz-adv-x="870" d="M281 417q16 0 31 9.5t26.5 28t18.5 44.5t7 59q0 27 -13.5 41.5t-34.5 14.5q-16 0 -31.5 -10t-27.5 -28t-19.5 -44.5t-7.5 -59.5q0 -27 15 -41t36 -14zM712 693h144l-558 -693h-144zM324 709q33 0 60.5 -9t47.5 -27.5t31 -46t11 -64.5q0 -57 -17 -101.5t-45.5 -75.5 t-65.5 -47.5t-76 -16.5q-33 0 -60.5 9t-47.5 27.5t-31 46t-11 64.5q0 57 17 101.5t45.5 75.5t65.5 47.5t76 16.5zM697 80q16 0 31 9.5t26.5 28t18.5 44.5t7 59q0 27 -13.5 41.5t-34.5 14.5q-16 0 -31.5 -10t-27.5 -28t-19.5 -44.5t-7.5 -59.5q0 -27 15 -41t36 -14zM740 372 q33 0 60.5 -9t47.5 -27.5t31 -46t11 -64.5q0 -57 -17 -101.5t-45.5 -75.5t-65.5 -47.5t-76 -16.5q-33 0 -60.5 9t-47.5 27.5t-31 46t-11 64.5q0 57 17 101.5t45.5 75.5t65.5 47.5t76 16.5z" />
+<glyph unicode="&" horiz-adv-x="663" d="M80 157q0 75 39 129.5t126 93.5l17 8q-20 33 -29.5 65.5t-9.5 63.5q0 40 15.5 75.5t45 61t71 40.5t93.5 15q43 0 76 -11.5t54.5 -30.5t32.5 -44.5t11 -53.5q0 -25 -9 -52t-26.5 -53t-44.5 -49t-63 -39l-37 -17l84 -112q25 41 46 101l131 -17q-43 -109 -101 -184 q26 -37 46.5 -74t37.5 -73h-151l-13 27l-16 29q-95 -65 -217 -65q-53 0 -92.5 14t-65.5 37.5t-38.5 53t-12.5 61.5zM308 107q26 0 60 8.5t72 34.5l-117 154l-15 -7q-42 -19 -61 -50t-19 -61q0 -32 20.5 -55.5t59.5 -23.5zM355 513q0 -28 26 -71l12 5q48 22 74.5 47.5 t26.5 60.5q0 19 -14 33.5t-44 14.5t-55.5 -22.5t-25.5 -67.5z" />
+<glyph unicode="'" horiz-adv-x="274" d="M374 760l-18 -74q-11 -48 -32 -105l-45 -115h-99q4 58 11 115t18 106l18 73h147z" />
+<glyph unicode="(" horiz-adv-x="356" d="M501 716q-57 -62 -104 -130.5t-81 -142.5t-53 -152.5t-19 -159.5q0 -62 12 -124t38 -125l-110 -67q-45 75 -65.5 155.5t-20.5 164.5q0 90 22.5 179t63 172.5t97 159t124.5 137.5z" />
+<glyph unicode=")" horiz-adv-x="356" d="M-24 -117q57 61 104 130t81 143t53 152.5t19 159.5q0 62 -12 124t-38 125l110 67q45 -75 65.5 -155.5t20.5 -164.5q0 -90 -22.5 -179t-63 -172.5t-97 -159t-124.5 -137.5z" />
+<glyph unicode="*" horiz-adv-x="502" d="M373 536q11 9 25.5 19.5t30.5 21t31 19t28 12.5l24 8l40 -124l-24 -8q-13 -4 -30 -6t-36 -3q-13 -1 -25 -1h-12q-18 1 -32 1l27 -19l28 -22q15 -11 28 -23t21 -23l16 -21l-106 -75l-15 20q-8 10 -15.5 26t-14 33.5t-12 34.5t-9.5 31q-4 -14 -9.5 -31t-12 -34.5t-14 -33.5 t-15.5 -26l-15 -20l-106 75l16 21q8 11 21 23t28 23l28 22l27 19q-14 0 -32 -1h-12q-12 0 -25 1q-19 1 -36 3t-30 6l-24 8l40 124l24 -8q13 -4 28 -12.5t31 -19t30.5 -21t25.5 -19.5q-5 13 -10.5 30.5t-10.5 35.5t-8.5 35t-3.5 31v25h130v-25q0 -14 -3.5 -31t-8.5 -35 t-10.5 -35.5t-10.5 -30.5z" />
+<glyph unicode="+" d="M126 357h167l44 185h136l-44 -185h167l-31 -125h-167l-44 -185h-136l44 185h-167z" />
+<glyph unicode="," horiz-adv-x="251" d="M241 152q-3 -87 -43.5 -165t-98.5 -150l-109 29q38 66 64 137t31 149h156z" />
+<glyph unicode="-" horiz-adv-x="343" d="M103 355h290l-33 -135h-290z" />
+<glyph unicode="." horiz-adv-x="252" d="M160 171q35 0 58.5 -20t23.5 -61q0 -23 -8.5 -42t-22.5 -32.5t-32 -21t-37 -7.5q-35 0 -58.5 20t-23.5 61q0 23 8.5 42t22.5 32.5t32 21t37 7.5z" />
+<glyph unicode="/" horiz-adv-x="436" d="M62 -185h-152l560 968h151z" />
+<glyph unicode="0" d="M298 114q32 0 59 19t47.5 50t36 70.5t25.5 80.5t15 80t5 69q0 51 -15.5 75t-47.5 24q-33 0 -60 -19t-48 -50t-36.5 -71t-25.5 -81t-15 -80t-5 -69q0 -52 16 -75t49 -23zM275 -14q-49 0 -83 17.5t-55.5 46.5t-31 65.5t-9.5 75.5q0 114 25.5 209t71 164t109.5 107t142 38 q49 0 83 -17.5t55.5 -46.5t31 -65.5t9.5 -75.5q0 -114 -25.5 -209t-71 -164t-109.5 -107t-142 -38z" />
+<glyph unicode="1" d="M200 549q32 12 67 27.5t69.5 34t67.5 39t60 43.5h104l-167 -693h-149l120 499q-35 -20 -76 -36.5t-78 -28.5z" />
+<glyph unicode="2" d="M435 709q40 0 74.5 -13t60 -35.5t39.5 -52.5t14 -64q0 -38 -8 -68t-27 -58t-50.5 -57t-77.5 -65l-54 -40l-54 -39q-27 -20 -52 -42.5t-47 -50.5h298l-30 -124h-461q9 63 31 109t54.5 83.5t73.5 69.5l89 70l76 60q32 26 51.5 47.5t28.5 40.5t9 40q0 26 -18.5 43.5 t-47.5 17.5q-41 0 -80 -17.5t-85 -52.5l-51 109q60 49 120 69t124 20z" />
+<glyph unicode="3" d="M474 368q42 -20 65 -61.5t23 -90.5q0 -41 -17 -82t-54 -74t-94 -53.5t-137 -20.5q-114 0 -205 47l54 118q29 -20 72 -32.5t88 -12.5q28 0 54.5 6t46.5 20t32 36t12 54q0 41 -33.5 62t-89.5 21h-64l29 118h72q21 0 44 4t42 14.5t31.5 28t12.5 45.5q0 35 -24 51.5t-63 16.5 q-31 0 -68.5 -11t-77.5 -32l-38 112q49 28 101 42.5t108 14.5q53 0 93 -14.5t66.5 -38.5t39.5 -54.5t13 -62.5q0 -26 -8.5 -51.5t-25 -48t-42 -41t-58.5 -30.5z" />
+<glyph unicode="4" d="M455 517l-55 -54l-57 -61l-57 -64l-51 -63h162zM638 693l-101 -418h73l-29 -120h-74l-38 -155h-142l37 155h-297l25 110q32 44 78 99.5t100 113.5t112 114t114 101h142z" />
+<glyph unicode="5" d="M118 154q35 -21 75 -32t77 -11q72 0 110 27t38 84q0 24 -13 43.5t-42 33t-77.5 21t-118.5 7.5q33 93 63 187.5t53 178.5h370l-30 -124h-247q-10 -36 -21.5 -72.5t-20.5 -61.5q60 -5 103.5 -22.5t72 -44.5t42.5 -61.5t14 -73.5q0 -56 -18.5 -102t-55.5 -78t-92 -49.5 t-127 -17.5q-21 0 -48 3t-55.5 8.5t-56 14.5t-50.5 21z" />
+<glyph unicode="6" d="M631 581q-62 -2 -115.5 -9t-98 -26t-78 -51t-55.5 -83q26 14 60.5 20.5t64.5 6.5q37 0 69.5 -11.5t57 -35t38.5 -58.5t14 -81q0 -65 -21 -114.5t-57 -83.5t-84 -51.5t-101 -17.5q-47 0 -87 16t-69.5 46.5t-46.5 76t-17 105.5q0 88 30 172.5t92 150.5t157 106.5t225 40.5 h19q10 0 21 -1zM446 243q0 48 -26 66t-62 18q-25 0 -50.5 -6.5t-47.5 -15.5q-13 -38 -13 -78q0 -48 22 -82.5t68 -34.5q48 0 78.5 35t30.5 98z" />
+<glyph unicode="7" d="M135 0q19 74 55 153.5t81 155t95 142.5t97 116h-301l31 126h485l-26 -108q-38 -32 -90.5 -93t-105.5 -139.5t-99 -169t-71 -183.5h-151z" />
+<glyph unicode="8" d="M93 157q0 30 8.5 57.5t27 53.5t47.5 50.5t70 49.5q-24 23 -40.5 52.5t-16.5 71.5q0 39 14.5 78t45 70t76.5 50t109 19q42 0 78 -12t62 -33.5t41 -52.5t15 -68q0 -22 -5 -46.5t-20 -49t-42.5 -49.5t-72.5 -47q17 -12 32 -26t26 -32t17.5 -40t6.5 -50q0 -45 -17.5 -84.5 t-51 -69t-83.5 -46.5t-114 -17q-37 0 -75 8.5t-68.5 29t-50 53t-19.5 80.5zM428 199q0 20 -7 35.5t-19.5 28.5t-29 23.5t-35.5 20.5q-31 -15 -50.5 -31.5t-31 -33.5t-15.5 -34t-4 -33q0 -35 24.5 -52.5t59.5 -17.5q21 0 40.5 6.5t34.5 18.5t24 29.5t9 39.5zM326 501 q0 -32 20 -54t48 -39q58 27 77.5 56.5t19.5 57.5q0 32 -20 50t-55 18q-41 0 -65.5 -26t-24.5 -63z" />
+<glyph unicode="9" d="M95 115q62 1 115.5 8.5t98 26.5t78 51t55.5 83q-26 -14 -60.5 -20.5t-64.5 -6.5q-37 0 -69.5 11.5t-57 35t-38.5 58t-14 81.5q0 64 21 114t57 84t84 51.5t101 17.5q46 0 86.5 -16t70 -46.5t46.5 -76t17 -105.5q0 -88 -30 -172.5t-92 -150.5t-157 -106.5t-225 -40.5h-19 q-10 0 -21 1zM280 453q0 -48 26 -66t62 -18q25 0 50.5 6.5t47.5 15.5q13 38 13 78q0 48 -22 82.5t-68 34.5q-48 0 -78.5 -35t-30.5 -98z" />
+<glyph unicode=":" horiz-adv-x="252" d="M235 526q35 0 58.5 -20t23.5 -61q0 -23 -8.5 -42t-22.5 -32.5t-32 -21t-37 -7.5q-35 0 -58.5 20t-23.5 61q0 23 8.5 42t22.5 32.5t32 21t37 7.5zM160 171q35 0 58.5 -20t23.5 -61q0 -23 -8.5 -42t-22.5 -32.5t-32 -21t-37 -7.5q-35 0 -58.5 20t-23.5 61q0 23 8.5 42 t22.5 32.5t32 21t37 7.5z" />
+<glyph unicode=";" horiz-adv-x="252" d="M235 526q35 0 58.5 -20t23.5 -61q0 -23 -8.5 -42t-22.5 -32.5t-32 -21t-37 -7.5q-35 0 -58.5 20t-23.5 61q0 23 8.5 42t22.5 32.5t32 21t37 7.5zM245 152q-3 -87 -43.5 -165t-98.5 -150l-109 29q38 66 64 137t31 149h156z" />
+<glyph unicode="<" d="M121 357l474 181l10 -124l-346 -120l284 -131l-63 -111l-386 188z" />
+<glyph unicode="=" d="M104 247h470l-30 -125h-470zM157 466h470l-30 -125h-470z" />
+<glyph unicode=">" d="M552 233l-474 -181l-10 125l346 120l-284 131l63 110l386 -188z" />
+<glyph unicode="?" horiz-adv-x="430" d="M292 407l51 40q21 17 34.5 31.5t20 27.5t6.5 27q0 26 -18.5 38t-46.5 12q-18 0 -38 -3.5t-39 -9t-36 -13t-30 -14.5l-19 117q39 22 89.5 35.5t101.5 13.5q36 0 69 -9t58 -27.5t40 -46t15 -63.5q0 -43 -13.5 -75t-34.5 -57t-48 -45l-52 -41q-38 -29 -67 -58t-32 -66h-132 q0 31 9.5 57t26 48.5t38.5 42t47 38.5zM223 171q35 0 58.5 -20t23.5 -61q0 -23 -8.5 -42t-22.5 -32.5t-32 -21t-37 -7.5q-35 0 -58.5 20t-23.5 61q0 23 8.5 42t22.5 32.5t32 21t37 7.5z" />
+<glyph unicode="@" horiz-adv-x="941" d="M647 -146q-42 -8 -86.5 -13t-82.5 -5q-88 0 -158 24t-119 68.5t-75 108t-26 141.5q0 131 44.5 231.5t118.5 169t169 104t197 35.5q69 0 132 -19.5t111.5 -59.5t77.5 -101t29 -145q0 -67 -16.5 -132.5t-51.5 -117t-89 -83.5t-128 -32q-26 0 -49 10t-38 29 q-35 -20 -68.5 -29.5t-71.5 -9.5q-79 0 -123 52t-44 137q0 49 20 102t59 96.5t97.5 71.5t136.5 28q59 0 98.5 -10.5t66.5 -21.5l-71 -296q-2 -5 -2 -9v-8q0 -17 11 -24.5t28 -7.5q26 0 48 18.5t38 51t25 77t9 96.5q0 63 -19.5 108.5t-53.5 74t-79 42t-97 13.5 q-72 0 -143.5 -27.5t-128 -82t-91.5 -137t-35 -191.5q0 -71 22.5 -118t60.5 -75t88.5 -40t107.5 -12q35 0 78 5t79 12zM572 157q1 8 3 18l5 24l49 206q-19 4 -41 4q-41 0 -70 -17t-48.5 -43.5t-28.5 -58.5t-9 -61q0 -45 16 -68.5t54 -23.5q31 0 70 20z" />
+<glyph unicode="A" horiz-adv-x="714" d="M532 0q-2 39 -4.5 76.5t-5.5 74.5h-260l-42 -75q-22 -37 -42 -76h-163l121 207l110 179l102 160l102 147h139q16 -72 30.5 -159.5t27 -179t23.5 -182.5l19 -172h-157zM486 541l-82 -133l-79 -135h187l-10 130q-6 69 -16 138z" />
+<glyph unicode="B" horiz-adv-x="658" d="M312 -9q-60 0 -123 5t-114 16l160 670q57 11 119.5 15t114.5 4q60 0 103.5 -12.5t71 -33.5t41 -49.5t13.5 -60.5q0 -23 -4.5 -46.5t-18 -46.5t-37 -44.5t-61.5 -38.5q44 -20 65.5 -54.5t21.5 -76.5q0 -48 -19 -92.5t-61 -79t-109 -55t-163 -20.5zM298 303l-43 -180 q16 -3 40.5 -4.5t45.5 -1.5q30 0 59.5 4.5t53 16.5t38.5 33t15 54q0 14 -5.5 28t-17.5 25t-31.5 18t-46.5 7h-108zM327 420h98q60 0 89.5 26t29.5 62q0 20 -8.5 33t-22.5 21t-32 11.5t-37 3.5q-21 0 -45 -1.5t-36 -3.5z" />
+<glyph unicode="C" horiz-adv-x="638" d="M614 30q-41 -20 -91 -32t-122 -12q-62 0 -113.5 20.5t-88 58.5t-56.5 92.5t-20 122.5q0 78 27.5 155t81 137.5t131 98.5t178.5 38q48 0 95 -11t97 -39l-56 -121q-42 22 -75 30t-71 8q-57 0 -102.5 -23t-78 -62.5t-49.5 -91.5t-17 -110q0 -87 38.5 -127.5t110.5 -40.5 q48 0 88.5 10t75.5 26z" />
+<glyph unicode="D" horiz-adv-x="718" d="M257 125q11 -1 22.5 -1.5t31.5 -0.5q65 0 117.5 20t89 57.5t56.5 92t20 122.5q0 35 -9 63.5t-29.5 49t-53 31.5t-78.5 11q-30 0 -61 -3zM754 423q0 -101 -33 -181t-94.5 -135.5t-149.5 -85.5t-199 -30q-42 0 -97 5t-106 16l161 669q57 11 109.5 15.5t94.5 4.5 q74 0 132.5 -20t99 -57t61.5 -88t21 -113z" />
+<glyph unicode="E" horiz-adv-x="594" d="M75 0l166 693h453l-32 -128h-297l-32 -140h262l-31 -126h-262l-40 -170h320l-32 -129h-475z" />
+<glyph unicode="F" horiz-adv-x="575" d="M75 0l166 693h449l-32 -129h-293l-35 -148h259l-31 -129h-259l-69 -287h-155z" />
+<glyph unicode="G" horiz-adv-x="688" d="M429 120q20 0 36 1.5t29 3.5l58 241h156l-84 -347q-28 -11 -81 -21.5t-135 -10.5q-140 0 -212.5 78.5t-72.5 214.5q0 78 27.5 155t81.5 137.5t134 98.5t184 38q48 0 101.5 -14t96.5 -42l-56 -121q-35 22 -74.5 33t-77.5 11q-61 0 -108.5 -23t-80.5 -62.5t-50 -91.5 t-17 -110q0 -87 36.5 -128t108.5 -41z" />
+<glyph unicode="H" horiz-adv-x="714" d="M643 693h156l-167 -693h-156l71 295h-246l-71 -295h-155l166 693h156l-64 -266h246z" />
+<glyph unicode="I" horiz-adv-x="312" d="M241 693h156l-167 -693h-155z" />
+<glyph unicode="J" horiz-adv-x="516" d="M485 210q-12 -51 -32 -92.5t-52 -71t-79 -45t-114 -15.5q-54 0 -102.5 16.5t-85.5 44.5l69 116q24 -17 52.5 -30t67.5 -13q28 0 48.5 6.5t35.5 21t25.5 37.5t18.5 56l108 452h156z" />
+<glyph unicode="K" horiz-adv-x="662" d="M483 0q-14 34 -33.5 73t-43 78t-50.5 75t-55 64l-71 -290h-155l166 693h156l-61 -250l147 129l129 121h185l-181 -168q-90 -84 -188 -163q63 -69 121 -158t104 -204h-170z" />
+<glyph unicode="L" horiz-adv-x="564" d="M569 132l-32 -132h-462l166 693h156l-135 -561h307z" />
+<glyph unicode="M" horiz-adv-x="878" d="M416 693q6 -27 16 -77l20 -108l21 -122l20 -115l73 113l79 118l75 108l60 83h138q-7 -69 -18.5 -154.5t-25.5 -178t-30 -185.5l-33 -175h-152l45 220q23 119 43 240l-58 -92l-64 -101l-62 -99l-52 -80h-114q-5 30 -12 76l-15 98l-18 104q-9 52 -17 94q-39 -121 -71 -240 l-58 -220h-151l51 175l56 185l59 178q29 86 55 155h140z" />
+<glyph unicode="N" horiz-adv-x="742" d="M543 0q-42 118 -94 236.5t-111 222.5l-110 -459h-153l166 693h119q23 -35 50 -82.5t54 -102.5l56 -114l53 -118l99 417h155l-167 -693h-117z" />
+<glyph unicode="O" horiz-adv-x="757" d="M500 575q-46 0 -85.5 -24t-69 -64t-46 -92t-16.5 -107q0 -75 31.5 -121.5t102.5 -46.5q46 0 85.5 24t69 64t46 91.5t16.5 107.5q0 75 -31.5 121.5t-102.5 46.5zM401 -14q-61 0 -112 20t-88 57.5t-57.5 91.5t-20.5 122q0 78 27 155t77.5 138.5t123.5 100t165 38.5 q61 0 112 -20t88 -57.5t57.5 -91.5t20.5 -122q0 -78 -26.5 -155.5t-77 -139t-123.5 -99.5t-166 -38z" />
+<glyph unicode="P" horiz-adv-x="639" d="M432 701q63 0 113.5 -13.5t85.5 -39t54 -62.5t19 -83q0 -75 -29 -127t-80 -84t-120 -46t-150 -14h-39l-56 -232h-155l163 683q54 10 102.5 14t91.5 4zM419 570q-17 0 -29 -1l-24 -2l-48 -204h39q42 0 76.5 6.5t59 21.5t38 38.5t13.5 57.5q0 45 -32.5 64t-92.5 19z" />
+<glyph unicode="Q" horiz-adv-x="756" d="M610 -187q-79 3 -132 16t-85.5 34.5t-46.5 52.5t-14 70v7q-95 20 -152 93.5t-57 190.5q0 78 27 155t77.5 138.5t123.5 100t165 38.5q61 0 112 -20t88 -57.5t57.5 -91.5t20.5 -122q0 -69 -21 -138.5t-61.5 -127.5t-99 -100.5t-133.5 -57.5v-3q0 -22 14.5 -35t39 -20 t56.5 -10t67 -5zM500 575q-46 0 -85.5 -24t-69 -64t-46 -92t-16.5 -107q0 -75 31.5 -121.5t102.5 -46.5q46 0 85.5 24t69 64t46 91.5t16.5 107.5q0 75 -31.5 121.5t-102.5 46.5z" />
+<glyph unicode="R" horiz-adv-x="656" d="M436 701q67 0 117 -16t83 -43t49 -63t16 -77q0 -33 -7.5 -65t-28 -61t-55 -53.5t-88.5 -41.5q28 -52 57.5 -126t55.5 -155h-167l-22 69q-11 35 -23.5 68t-26 62.5t-27.5 53.5h-78l-61 -253h-155l163 683q54 10 105.5 14t92.5 4zM431 569q-17 0 -35 -1t-30 -2l-45 -190h53 q48 0 81 9t53 24t28.5 34.5t8.5 39.5q0 17 -5 32.5t-18 27.5t-35 19t-56 7z" />
+<glyph unicode="S" horiz-adv-x="559" d="M269 116q23 0 46 3.5t41 12.5t29.5 25.5t11.5 42.5q0 20 -11 34.5t-28 26.5t-38 22t-42 22q-27 16 -51 34t-41 40.5t-27 50t-10 63.5q0 46 17.5 85.5t52 68.5t86.5 45.5t122 16.5q32 0 62 -5.5t56 -13.5t47.5 -18.5t36.5 -20.5l-65 -115q-25 19 -61.5 32t-77.5 13 q-23 0 -44 -4t-37 -13.5t-25.5 -24.5t-9.5 -37q0 -20 7.5 -33.5t19.5 -23.5t28 -18l34 -17q31 -16 60 -34t51 -41.5t35 -53.5t13 -71q0 -57 -21 -99t-59 -70t-90.5 -41.5t-116.5 -13.5q-42 0 -78.5 7t-66 16.5t-51 20.5t-34.5 20l66 119q12 -8 29 -17t38.5 -17t45.5 -13.5 t50 -5.5z" />
+<glyph unicode="T" horiz-adv-x="594" d="M739 693l-32 -131h-203l-135 -562h-156l135 562h-203l32 131h562z" />
+<glyph unicode="U" horiz-adv-x="683" d="M668 252q-34 -141 -110.5 -203.5t-202.5 -62.5q-65 0 -109.5 15.5t-72.5 43t-40.5 66t-12.5 83.5q0 52 15 111l93 388h156l-98 -410q-5 -19 -7.5 -37.5t-2.5 -35.5q0 -19 4.5 -35.5t16 -28.5t31 -18.5t48.5 -6.5q60 0 91 37.5t48 106.5l102 428h156z" />
+<glyph unicode="V" horiz-adv-x="688" d="M268 0q-16 85 -30.5 176t-27 181t-23 175.5t-17.5 160.5h167q3 -57 7.5 -122.5t10.5 -132.5l13 -132q6 -65 13 -122l67 114l72 129l72 135l65 131h166l-83 -155l-96 -172l-110 -182q-57 -92 -120 -184h-146z" />
+<glyph unicode="W" horiz-adv-x="936" d="M667 619q2 -41 6 -93l9 -108l8 -110q5 -55 10 -102l54 110l54 122l53 128l50 127h165q-78 -189 -159.5 -361.5t-173.5 -331.5h-146q-8 55 -14 106l-11 99q-6 49 -11 99t-9 104l-113 -208q-56 -102 -118 -200h-146q-8 92 -11.5 183.5t-3.5 185.5q0 81 3 161.5t8 162.5h157 l-10 -173q-4 -85 -4 -175v-69q0 -35 2 -70l59 104l61 110l57 106q27 52 46 93h128z" />
+<glyph unicode="X" horiz-adv-x="669" d="M487 0l-25 76q-11 33 -22 61.5l-22 54.5l-24 53l-201 -245h-178l315 377l-141 316h172l83 -214l87 109l77 105h171l-61 -85l-68 -86l-69 -85l-68 -79l39 -89q19 -42 36 -84.5t33 -87.5l33 -97h-167z" />
+<glyph unicode="Y" horiz-adv-x="652" d="M413 408l55 72l52 68l50 70l50 75h172l-81 -112l-78 -103l-80 -101l-87 -103l-66 -274h-156l66 274q-42 106 -76 207t-64 212h166q16 -72 35 -141.5t42 -143.5z" />
+<glyph unicode="Z" horiz-adv-x="638" d="M712 585q-40 -34 -96 -87l-117 -114l-122 -127q-61 -66 -111 -126h348l-32 -131h-537l23 93q40 53 94 115l112 126l118 122l109 106h-306l32 131h511z" />
+<glyph unicode="[" horiz-adv-x="373" d="M262 783h271l-29 -119h-129l-175 -730h129l-29 -119h-270z" />
+<glyph unicode="\" horiz-adv-x="406" d="M150 783h143l103 -968h-143z" />
+<glyph unicode="]" horiz-adv-x="373" d="M232 -185h-270l29 119h128l175 730h-129l29 119h271z" />
+<glyph unicode="^" d="M620 343l-130 -55l-78 247l-202 -243l-106 65l281 336h118z" />
+<glyph unicode="_" horiz-adv-x="503" d="M-2 -61h500l-29 -124h-499z" />
+<glyph unicode="`" horiz-adv-x="247" d="M163 800l148 -157l-66 -67l-166 134z" />
+<glyph unicode="a" horiz-adv-x="588" d="M563 227q-10 -40 -10 -80q0 -18 2 -35q6 -58 23 -102l-133 -19q-6 12 -11 23t-10 25q-28 -23 -62 -38t-76 -15q-50 0 -85.5 17.5t-58 47t-32.5 69t-10 84.5q0 69 24.5 130t68 106.5t102.5 71.5t128 26q9 0 31.5 -1t51.5 -4.5t61 -11.5t61 -22zM459 411q-13 2 -23.5 3 t-25.5 1q-34 0 -63.5 -17t-51.5 -44.5t-34.5 -63.5t-12.5 -75q0 -48 16 -76t59 -28q23 0 41.5 9t39.5 30q2 25 6.5 52.5t9.5 50.5z" />
+<glyph unicode="b" horiz-adv-x="575" d="M419 537q48 0 83 -17t58 -46t34 -68t11 -84q0 -69 -25.5 -130.5t-69.5 -107t-104 -72t-130 -26.5q-9 0 -31.5 0.5t-51.5 4.5t-61.5 12t-61.5 22l173 727l155 24l-62 -258q20 9 40 14t43 5zM289 109q35 0 66 17t53.5 45.5t35.5 64.5t13 75q0 48 -16 75t-59 27 q-14 0 -36.5 -5t-40.5 -21l-66 -274q6 -1 10.5 -2t9.5 -1.5t12 -0.5h18z" />
+<glyph unicode="c" horiz-adv-x="480" d="M100 210q0 68 22 128t63 105t99.5 71t130.5 26q45 0 80.5 -8.5t64.5 -22.5l-51 -116q-20 8 -41.5 14.5t-52.5 6.5q-74 0 -117.5 -51t-43.5 -137q0 -51 22 -82.5t81 -31.5q29 0 56 6t48 15l11 -119q-28 -11 -62 -19.5t-81 -8.5q-62 0 -105 18t-71 48.5t-40.5 71.5 t-12.5 86z" />
+<glyph unicode="d" horiz-adv-x="590" d="M287 -14q-50 0 -85.5 17t-58 46.5t-33 69t-10.5 84.5q0 68 24.5 128.5t67.5 105.5t102 71t129 26q18 0 33.5 -2t31.5 -6l54 226l155 24l-132 -549q-10 -40 -10 -80q0 -18 2 -35q6 -58 23 -102l-133 -19q-6 12 -11 23t-10 25q-28 -23 -62.5 -38t-76.5 -15zM459 407 q-6 1 -10.5 2t-9 1.5t-11.5 0.5h-18q-35 0 -65 -16.5t-51.5 -44.5t-33.5 -63.5t-12 -72.5q0 -48 16.5 -75.5t59.5 -27.5q23 0 42 9t40 30q2 25 6.5 52.5t9.5 50.5z" />
+<glyph unicode="e" horiz-adv-x="530" d="M100 206q0 64 22.5 124t63.5 106.5t99.5 75t129.5 28.5q35 0 65 -10t52.5 -29t35 -46.5t12.5 -62.5q0 -56 -25 -95t-69.5 -63.5t-105.5 -35.5t-133 -11q7 -41 31 -59t74 -18q32 0 65 5.5t62 16.5l11 -117q-28 -11 -71.5 -20t-94.5 -9q-62 0 -104.5 17.5t-69 47.5 t-38.5 70t-12 85zM391 422q-51 0 -89.5 -36.5t-50.5 -96.5q62 2 100 10.5t59 20.5t28 26.5t7 27.5q0 23 -14 35.5t-40 12.5z" />
+<glyph unicode="f" horiz-adv-x="438" d="M479 776q44 0 78 -9.5t51 -17.5l-50 -117q-18 9 -41.5 13.5t-43.5 4.5q-55 0 -81.5 -28t-36.5 -70l-6 -26h176l-30 -122h-175l-61 -255q-17 -72 -35.5 -127t-38.5 -95.5t-42 -69t-46 -46.5l-133 19q26 24 48 59t39 74t30 79.5t21 75.5l104 436q25 105 90 163.5t183 58.5z " />
+<glyph unicode="g" horiz-adv-x="567" d="M524 66q-15 -64 -39.5 -112t-61 -79.5t-87.5 -47t-119 -15.5q-63 0 -106 11.5t-78 28.5l50 118q31 -14 64.5 -24t82.5 -10q64 0 96.5 28.5t42.5 73.5l4 19q-20 -10 -42.5 -16t-47.5 -6q-47 0 -81 14.5t-55.5 40.5t-32 61.5t-10.5 77.5q0 76 28 134.5t74.5 97.5t107 59 t126.5 20q48 0 95 -10t92 -31zM458 411q-20 4 -42 4q-37 0 -67.5 -13.5t-52 -36.5t-33 -55.5t-11.5 -69.5q0 -18 3 -33.5t11 -27t22 -18.5t35 -7q14 0 37.5 5t42.5 23z" />
+<glyph unicode="h" horiz-adv-x="565" d="M425 535q43 0 74 -12.5t51 -35t30 -53.5t10 -67q0 -20 -2.5 -40.5t-7.5 -42.5l-68 -284h-149l66 278q4 17 7.5 36t3.5 36q0 26 -13.5 44.5t-51.5 18.5q-16 0 -30.5 -2t-28.5 -5l-97 -406h-149l180 752l155 24l-61 -251q20 4 40.5 7t40.5 3z" />
+<glyph unicode="i" horiz-adv-x="283" d="M218 0h-148l125 526h149zM290 590q-31 0 -56 18.5t-25 56.5q0 21 8.5 39.5t22.5 32t32.5 21.5t39.5 8q31 0 56 -18.5t25 -56.5q0 -21 -8.5 -39.5t-22.5 -32t-32.5 -21.5t-39.5 -8z" />
+<glyph unicode="j" horiz-adv-x="290" d="M15 -185q-28 0 -55.5 5.5t-49.5 13.5l38 118q14 -5 27.5 -8t30.5 -3q35 0 54 21t27 61l121 503h149l-122 -507q-12 -52 -30.5 -90t-44.5 -63.5t-62 -38t-83 -12.5zM303 590q-31 0 -56 18.5t-25 56.5q0 21 8.5 39.5t22.5 32t32.5 21.5t39.5 8q31 0 56 -18.5t25 -56.5 q0 -21 -8.5 -39.5t-22.5 -32t-32.5 -21.5t-39.5 -8z" />
+<glyph unicode="k" horiz-adv-x="561" d="M299 336q59 48 112.5 98t91.5 92h168q-56 -62 -116.5 -121.5t-138.5 -126.5q21 -26 42.5 -60t41 -71.5t36 -75t27.5 -71.5h-166q-9 26 -22.5 57t-30 61.5t-34.5 59.5t-36 52l-56 -230h-148l180 752l155 24z" />
+<glyph unicode="l" horiz-adv-x="315" d="M288 -10q-71 0 -111.5 18.5t-58.5 50.5q-17 30 -17 69q0 42 12 93l127 531l155 24l-139 -576q-4 -18 -4.5 -33t5.5 -26.5t20.5 -18.5t40.5 -9z" />
+<glyph unicode="m" horiz-adv-x="846" d="M191 502q17 5 36.5 11.5t44 12t55 9t70.5 3.5q47 0 79 -12t58 -36q37 21 73.5 34.5t85.5 13.5q47 0 80.5 -12.5t55.5 -36t32 -56t10 -71.5q0 -18 -2.5 -38t-7.5 -40l-68 -284h-149l66 278l6 32q4 17 4 34q0 28 -13 48.5t-51 20.5q-21 0 -40 -7.5t-34 -15.5q2 -8 2 -15 v-13q0 -18 -2.5 -38t-7.5 -40l-68 -284h-149l66 278l7 32q3 17 3 34q0 28 -13 48.5t-51 20.5q-16 0 -27 -1.5t-26 -4.5l-97 -407h-149z" />
+<glyph unicode="n" horiz-adv-x="567" d="M191 502l37 12q21 6 46.5 11.5t57 9t71.5 3.5q117 0 161 -68q27 -41 27 -101q0 -38 -11 -85l-68 -284h-149l66 278q6 26 9 50q2 12 2 22q0 12 -2 22q-4 18 -18.5 29.5t-44.5 11.5q-29 0 -59 -6l-97 -407h-149z" />
+<glyph unicode="o" horiz-adv-x="574" d="M308 -14q-53 0 -92 16t-64.5 45t-38.5 68.5t-13 87.5q0 60 19.5 120t57.5 108t93 78.5t126 30.5q52 0 91.5 -16t65 -45t38.5 -68.5t13 -87.5q0 -60 -19 -120t-56 -108t-92.5 -78.5t-128.5 -30.5zM382 414q-33 0 -58 -19t-42 -48t-25.5 -63.5t-8.5 -65.5q0 -50 16 -78 t58 -28q33 0 58 19t42 48t25.5 63.5t8.5 65.5q0 50 -16 78t-58 28z" />
+<glyph unicode="p" horiz-adv-x="578" d="M245 116q19 -4 42 -4q39 0 71 14.5t54.5 40.5t35 62.5t12.5 80.5q0 43 -19 73t-66 30q-32 0 -60 -6zM608 321q0 -73 -24 -133.5t-66.5 -104.5t-102 -68.5t-129.5 -24.5q-34 0 -68 6l-45 -181h-148l166 692q40 12 91.5 21.5t111.5 9.5q56 0 96.5 -17t66.5 -46.5t38.5 -69 t12.5 -84.5z" />
+<glyph unicode="q" horiz-adv-x="573" d="M100 204q0 78 26.5 140t73 105t108.5 66t134 23q93 0 191 -39l-163 -684h-149l46 194q-45 -19 -90 -19q-38 0 -70.5 14.5t-56 42t-37 67.5t-13.5 90zM464 411q-20 4 -43 4q-41 0 -73 -16t-54.5 -43.5t-34 -64t-11.5 -76.5q0 -56 19 -78.5t52 -22.5q19 0 37.5 5.5 t41.5 19.5z" />
+<glyph unicode="r" horiz-adv-x="426" d="M472 398l-40 10q-19 4 -57 4q-14 0 -31 -2.5t-28 -5.5l-97 -404h-149l120 498q43 14 96.5 26.5t120.5 12.5q25 0 55.5 -4.5t53.5 -14.5z" />
+<glyph unicode="s" horiz-adv-x="483" d="M241 106q51 0 70 14.5t19 31.5q0 11 -3.5 19t-11.5 15t-22 14.5t-36 17.5q-25 11 -47 24t-38.5 30t-26 39.5t-9.5 53.5q0 81 60 128t173 47q53 0 95.5 -12t68.5 -26l-51 -111q-21 11 -54 21t-65 10q-14 0 -27.5 -1.5t-25 -6.5t-18.5 -14t-7 -24q0 -20 15.5 -30t43.5 -24 q39 -19 65 -35t41.5 -34t22.5 -41t7 -54q0 -32 -13.5 -63t-42.5 -55t-74 -39t-108 -15q-39 0 -70.5 5t-55.5 12.5t-40.5 15.5t-25.5 13l51 114q17 -10 53 -25t87 -15z" />
+<glyph unicode="t" horiz-adv-x="416" d="M213 657l155 24l-38 -155h166l-30 -122h-165l-44 -184q-6 -23 -7 -43v-6q0 -16 5 -29q6 -14 21.5 -22t44.5 -8q24 0 46.5 4.5t45.5 12.5l11 -114q-30 -11 -65 -19t-83 -8q-69 0 -107 20.5t-54 55.5q-14 32 -14 72v10q2 46 14 97z" />
+<glyph unicode="u" horiz-adv-x="581" d="M621 526l-71 -299q-10 -40 -10 -80q0 -18 2 -35q6 -58 23 -102l-133 -19q-6 12 -11 23.5t-10 25.5q-28 -22 -63 -37t-78 -15q-59 0 -95.5 21.5t-54.5 57t-20 81.5v10q0 41 11 84l68 284h149l-67 -282q-5 -22 -9 -45q-1 -12 -1 -24q0 -9 1 -19q3 -19 15.5 -31.5 t39.5 -12.5q23 0 42.5 8.5t41.5 29.5q2 25 6.5 52.5t9.5 50.5l65 273h149z" />
+<glyph unicode="v" horiz-adv-x="546" d="M201 0q-26 100 -47 234t-29 292h154q1 -39 3 -85.5t5 -93.5t7 -91.5t9 -80.5q22 30 49.5 74t53.5 92t48 96.5t34 88.5h158q-26 -71 -65 -146t-83 -145t-89 -131t-84 -104h-124z" />
+<glyph unicode="w" horiz-adv-x="816" d="M482 308q-19 -41 -42 -84l-48 -82l-48 -78l-41 -64h-116q-8 42 -16.5 100t-16.5 126.5t-14.5 145t-9.5 154.5h146q0 -36 0.5 -78t2 -87t4.5 -92t8 -93q25 42 49 88l48 90l41.5 90t34.5 82h124q0 -72 2.5 -161t12.5 -189q27 45 50.5 92.5t42.5 93.5t34 88l28 76h158 q-20 -50 -47.5 -112.5t-63.5 -131.5t-81 -141t-100 -141h-116q-12 82 -18 157t-8 151z" />
+<glyph unicode="x" horiz-adv-x="549" d="M281 526l76 -164q67 82 123 164h149q-42 -60 -92.5 -124.5t-115.5 -134.5q40 -75 68 -138.5t50 -128.5h-147q-36 97 -71 166l-145 -166h-156l239 268l-129 258h151z" />
+<glyph unicode="y" horiz-adv-x="532" d="M632 526q-28 -76 -57 -142t-59.5 -125t-63.5 -113.5t-70 -107.5l-56 -79q-29 -40 -64.5 -72t-79.5 -52t-100 -20q-35 0 -60 6.5t-47 17.5l45 117q20 -8 36 -12.5t39 -4.5q35 0 66.5 22.5t52.5 60.5q-26 100 -47.5 224.5t-29.5 279.5h153q1 -39 3.5 -86t7 -94.5t9.5 -92.5 t11 -81q48 72 84.5 160t68.5 194h158z" />
+<glyph unicode="z" horiz-adv-x="526" d="M582 427l-60 -54l-80 -76l-88 -87l-84 -88h244l-30 -122h-424l21 87q29 36 67 78l78 85l81 82l75 72h-214l30 122h408z" />
+<glyph unicode="{" horiz-adv-x="371" d="M109 358q31 0 53 7t37 19.5t23.5 29.5t13.5 38l36 151q11 45 30 79t50 56.5t76.5 33.5t108.5 11h20l-29 -119h-25q-49 0 -68 -21t-28 -61l-31 -133q-6 -26 -14 -48t-22 -41t-35.5 -34t-54.5 -27q35 -16 48 -38.5t13 -51.5q0 -25 -8 -60l-31 -133q-6 -24 -6 -40 q0 -23 14 -32.5t48 -9.5h25l-29 -119h-20q-88 0 -134.5 27.5t-46.5 100.5q0 32 11 79l29 124q4 17 4 31q0 25 -12 40q-18 23 -75 23z" />
+<glyph unicode="|" horiz-adv-x="304" d="M262 783h142l-233 -968h-141z" />
+<glyph unicode="}" horiz-adv-x="371" d="M397 240q-31 0 -53 -7t-37 -19.5t-23.5 -29.5t-13.5 -38l-36 -151q-11 -45 -30 -79t-50 -56.5t-76.5 -33.5t-108.5 -11h-20l29 119h25q24 0 40.5 5t27.5 15.5t17 26t11 35.5l31 133q6 26 14 48t22 41t35.5 34t54.5 27q-35 16 -48 38.5t-13 51.5q0 25 8 60l31 133 q6 24 6 40q0 23 -14 32.5t-48 9.5h-25l29 119h20q88 0 134.5 -27.5t46.5 -100.5q0 -32 -11 -79l-29 -124q-4 -17 -4 -31q0 -25 12 -40q18 -23 75 -23z" />
+<glyph unicode="~" d="M428 192q-33 0 -57.5 12t-44.5 26l-38 26q-19 12 -41 12q-9 0 -16.5 -2t-15.5 -9.5t-17 -22t-21 -39.5l-95 28q11 34 27.5 66t40 56.5t54 39t69.5 14.5q33 0 57.5 -12t44.5 -26l39 -26q18 -12 40 -12q9 0 16.5 2t15.5 9.5t17 22t21 39.5l95 -28q-14 -38 -30.5 -70 t-39.5 -55.5t-52.5 -37t-68.5 -13.5z" />
+<glyph unicode="¢" d="M517 59q-29 -12 -60 -19.5t-61 -10.5l-33 -138h-142l37 154q-50 21 -81 66.5t-31 122.5q0 64 18 116.5t49.5 92.5t73.5 67t90 39l35 144h142l-34 -140q42 -9 83 -31l-50 -115q-24 14 -49 20t-48 6q-34 0 -62.5 -13t-49.5 -37.5t-32.5 -61t-11.5 -82.5q0 -50 25.5 -68.5 t61.5 -18.5q29 0 61 8t58 18z" />
+<glyph unicode="£" d="M374 394h176l-29 -122h-176q-9 -35 -22 -74.5t-26 -72.5h271l-30 -125h-434q36 80 58.5 147.5t37.5 124.5h-87l29 122h87l25 96q16 60 43 101.5t62.5 67t76.5 36.5t84 11q45 0 83.5 -10t70.5 -27l-60 -110q-25 11 -48.5 17t-46.5 6q-22 0 -41 -5t-35.5 -18.5t-30 -37.5 t-22.5 -62z" />
+<glyph unicode="¥" d="M385 431l96 127q45 60 93 135h162q-56 -84 -116 -162l-128 -161h101l-23 -95h-146l-16 -69h146l-23 -95h-146l-27 -111h-156l27 111h-145l23 95h145l16 69h-145l23 95h115l-31 84l-30 84q-14 42 -25.5 81.5t-19.5 73.5h156q7 -36 15 -67.5t17 -62.5l19 -63z" />
+<glyph unicode="©" horiz-adv-x="796" d="M816 347q0 -85 -28.5 -152.5t-76.5 -114t-111 -71t-132 -24.5t-132 24.5t-111 71t-76.5 114t-28.5 152.5t28.5 152.5t76.5 114t111 71t132 24.5t132 -24.5t111 -71t76.5 -114t28.5 -152.5zM714 347q0 60 -18 109t-50.5 84t-78 54t-99.5 19t-99.5 -19t-78 -54t-50.5 -84 t-18 -109t18 -109t50.5 -84t78 -54t99.5 -19t99.5 19t78 54t50.5 84t18 109zM484 160q-89 0 -136 49t-47 140q0 90 49.5 139t130.5 49q48 0 77.5 -13t40.5 -19l-32 -88q-14 8 -31.5 13.5t-45.5 5.5q-33 0 -53 -21t-20 -61q0 -18 3 -34.5t11 -29t22 -20.5t37 -8q30 0 50 7 l36 13l28 -91q-13 -7 -44 -19t-76 -12z" />
+<glyph unicode="­" horiz-adv-x="343" d="M103 355h290l-33 -135h-290z" />
+<glyph unicode="®" horiz-adv-x="796" d="M816 347q0 -85 -28.5 -152.5t-76.5 -114t-111 -71t-132 -24.5t-132 24.5t-111 71t-76.5 114t-28.5 152.5t28.5 152.5t76.5 114t111 71t132 24.5t132 -24.5t111 -71t76.5 -114t28.5 -152.5zM714 347q0 60 -18 109t-50.5 84t-78 54t-99.5 19t-99.5 -19t-78 -54t-50.5 -84 t-18 -109t18 -109t50.5 -84t78 -54t99.5 -19t99.5 19t78 54t50.5 84t18 109zM529 177l-29 67q-12 28 -27 51h-40v-118h-97v342q34 8 63.5 11.5t51.5 3.5q161 0 161 -121q0 -30 -14 -53.5t-40 -37.5q11 -17 20 -32.5t17 -32l17 -35.5l19 -45h-102zM433 373h18q32 0 48 8.5 t16 32.5q0 20 -14 28t-41 8q-7 0 -14.5 -0.5t-12.5 -1.5v-75z" />
+<glyph unicode="´" horiz-adv-x="286" d="M256 707l-182 -131l-48 75l174 149z" />
+<glyph unicode=" " horiz-adv-x="400" />
+<glyph unicode=" " horiz-adv-x="800" />
+<glyph unicode=" " horiz-adv-x="400" />
+<glyph unicode=" " horiz-adv-x="800" />
+<glyph unicode=" " horiz-adv-x="266" />
+<glyph unicode=" " horiz-adv-x="200" />
+<glyph unicode=" " horiz-adv-x="133" />
+<glyph unicode=" " horiz-adv-x="133" />
+<glyph unicode=" " horiz-adv-x="100" />
+<glyph unicode=" " horiz-adv-x="160" />
+<glyph unicode=" " horiz-adv-x="44" />
+<glyph unicode="‐" horiz-adv-x="343" d="M103 355h290l-33 -135h-290z" />
+<glyph unicode="‑" horiz-adv-x="343" d="M103 355h290l-33 -135h-290z" />
+<glyph unicode="–" horiz-adv-x="508" d="M88 361h500l-29 -124h-499z" />
+<glyph unicode="—" horiz-adv-x="1008" d="M88 361h1000l-29 -124h-999z" />
+<glyph unicode="‘" horiz-adv-x="237" d="M130 495q1 14 3.5 29t4.5 22q16 67 54.5 127.5t83.5 102.5l92 -35q-35 -54 -60 -115.5t-33 -130.5h-145z" />
+<glyph unicode="’" horiz-adv-x="237" d="M355 767q-1 -14 -3.5 -29t-4.5 -22q-16 -67 -54.5 -127.5t-83.5 -102.5l-89 37q35 54 58.5 115.5t31.5 128.5h145z" />
+<glyph unicode="“" horiz-adv-x="453" d="M130 495q1 14 3.5 29t4.5 22q16 67 54.5 127.5t83.5 102.5l92 -35q-35 -54 -60 -115.5t-33 -130.5h-145zM347 495q1 14 3.5 29t4.5 22q16 67 54.5 127.5t83.5 102.5l92 -35q-35 -54 -60 -115.5t-33 -130.5h-145z" />
+<glyph unicode="”" horiz-adv-x="453" d="M355 767q-1 -14 -3.5 -29t-4.5 -22q-16 -67 -54.5 -127.5t-83.5 -102.5l-89 37q35 54 58.5 115.5t31.5 128.5h145zM571 767q-1 -14 -3.5 -29t-4.5 -22q-16 -67 -54.5 -127.5t-83.5 -102.5l-89 37q35 54 58.5 115.5t31.5 128.5h145z" />
+<glyph unicode="•" horiz-adv-x="388" d="M408 353q0 -29 -10 -54.5t-29 -45t-45.5 -31t-59.5 -11.5t-59.5 11.5t-45.5 31t-29 45t-10 54.5q0 28 10 54t29 45.5t45.5 31t59.5 11.5t59.5 -11.5t45.5 -31t29 -45.5t10 -54z" />
+<glyph unicode="…" horiz-adv-x="946" d="M160 171q35 0 58.5 -20t23.5 -61q0 -23 -8.5 -42t-22.5 -32.5t-32 -21t-37 -7.5q-35 0 -58.5 20t-23.5 61q0 23 8.5 42t22.5 32.5t32 21t37 7.5zM507 171q35 0 58.5 -20t23.5 -61q0 -23 -8.5 -42t-22.5 -32.5t-32 -21t-37 -7.5q-35 0 -58.5 20t-23.5 61q0 23 8.5 42 t22.5 32.5t32 21t37 7.5zM854 171q35 0 58.5 -20t23.5 -61q0 -23 -8.5 -42t-22.5 -32.5t-32 -21t-37 -7.5q-35 0 -58.5 20t-23.5 61q0 23 8.5 42t22.5 32.5t32 21t37 7.5z" />
+<glyph unicode=" " horiz-adv-x="160" />
+<glyph unicode=" " horiz-adv-x="200" />
+<glyph unicode="€" d="M314 218q5 -62 36 -85t78 -23q30 0 64.5 7t69.5 18l6 -117q-41 -15 -83 -23.5t-83 -8.5q-47 0 -88.5 12.5t-73.5 40t-51.5 72t-21.5 107.5h-82l23 99h64q2 17 5.5 33t7.5 32h-63l24 99h68q22 51 52.5 92.5t72.5 71t97.5 45.5t127.5 16q67 0 135 -23l-59 -116 q-26 9 -50.5 13t-47.5 4q-70 0 -111 -27.5t-67 -75.5h235l-43 -99h-226q-8 -33 -12 -65h210l-42 -99h-172z" />
+<glyph unicode="™" horiz-adv-x="854" d="M442 693v-103h-102v-249h-118v249h-102v103h322zM881 693q10 -59 17.5 -143.5t15.5 -208.5h-115l-4 187l-59 -150h-79l-59 149q0 -32 -0.5 -63.5t-1 -57.5t-1 -44t-0.5 -21h-114q7 124 15 208.5t16 143.5h106q21 -45 40 -91l39 -92l41 95l36 88h107z" />
+</font>
+</defs></svg>
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-BI-webfont.ttf
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-BI-webfont.ttf
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-BI-webfont.woff
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-BI-webfont.woff
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-I-webfont.eot
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-I-webfont.eot
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-I-webfont.svg
===================================================================
--- trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-I-webfont.svg (rev 0)
+++ trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-I-webfont.svg 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,145 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>
+This is a custom SVG webfont generated by Font Squirrel.
+Designer : Dalton Maag Ltd
+Foundry : Dalton Maag Ltd
+Foundry URL : httpwwwdaltonmaagcom
+</metadata>
+<defs>
+<font id="webfontPxVORYT4" horiz-adv-x="568" >
+<font-face units-per-em="1000" ascent="800" descent="-200" />
+<missing-glyph horiz-adv-x="235" />
+<glyph unicode=" " horiz-adv-x="235" />
+<glyph unicode="	" horiz-adv-x="235" />
+<glyph unicode=" " horiz-adv-x="235" />
+<glyph unicode="!" horiz-adv-x="254" d="M340 693l-45 -189q-6 -24 -16.5 -62.5t-23.5 -79.5l-26 -80q-13 -40 -24 -66h-57q8 68 18.5 136.5t30.5 152.5l45 188h98zM135 -13q-28 0 -44 15t-16 44q0 36 21.5 55.5t49.5 19.5t44.5 -15.5t16.5 -45.5q0 -17 -6.5 -30.5t-16.5 -23t-23 -14.5t-26 -5z" />
+<glyph unicode=""" horiz-adv-x="414" d="M350 760l-12 -50q-12 -49 -30.5 -103.5t-40.5 -105.5h-54q4 53 11 106.5t19 103.5l12 49h95zM523 760l-12 -50q-12 -49 -30.5 -103.5t-40.5 -105.5h-54q4 53 11 106.5t19 103.5l12 49h95z" />
+<glyph unicode="#" horiz-adv-x="658" d="M404 510h157l78 183h84l-78 -183h84l-18 -74h-97l-78 -179h132l-18 -74h-145l-78 -183h-84l77 183h-156l-78 -183h-84l77 183h-86l18 74h100l77 179h-134l18 74h147l79 183h84zM295 257h157l78 179h-157z" />
+<glyph unicode="$" d="M279 96q29 0 58 5.5t52 18.5t37 34.5t14 53.5q0 22 -8.5 38t-24 29t-37.5 23l-46 23q-22 10 -43.5 23t-38.5 31.5t-27.5 44t-10.5 61.5q0 72 49 120.5t144 60.5l27 114h81l-27 -112q43 -4 77.5 -17.5t52.5 -25.5l-42 -69q-17 12 -49.5 23t-80.5 11q-29 0 -54.5 -5.5 t-45 -17.5t-30.5 -30.5t-11 -43.5q0 -41 25 -63t76 -46q27 -12 52 -26t43.5 -33t29.5 -44.5t11 -60.5q0 -44 -15 -78t-43 -58.5t-66.5 -39.5t-84.5 -20l-30 -129h-81l31 130q-26 1 -50 6t-45 12t-37 14.5t-25 13.5l43 71q18 -11 55 -26.5t95 -15.5z" />
+<glyph unicode="%" horiz-adv-x="840" d="M271 0h-95l549 693h95zM160 476q0 42 13.5 83.5t38 74.5t60.5 53.5t81 20.5q60 0 93.5 -34.5t33.5 -101.5q0 -42 -13.5 -83.5t-38 -74.5t-60.5 -53.5t-81 -20.5q-60 0 -93.5 34.5t-33.5 101.5zM406 565q0 34 -11.5 55.5t-46.5 21.5q-29 0 -50.5 -16t-35.5 -39.5 t-21 -51.5t-7 -52q0 -34 11.5 -55.5t46.5 -21.5q29 0 50.5 16t35.5 39.5t21 51.5t7 52zM516 121q0 42 13.5 83.5t38 74.5t60.5 53.5t81 20.5q60 0 93.5 -34.5t33.5 -101.5q0 -42 -13.5 -83.5t-38 -74.5t-60.5 -53.5t-81 -20.5q-60 0 -93.5 34.5t-33.5 101.5zM762 210 q0 34 -11.5 55.5t-46.5 21.5q-29 0 -50.5 -16t-35.5 -39.5t-21 -51.5t-7 -52q0 -34 11.5 -55.5t46.5 -21.5q29 0 50.5 16t35.5 39.5t21 51.5t7 52z" />
+<glyph unicode="&" horiz-adv-x="644" d="M80 147q0 45 14.5 81t40 64.5t60.5 51t76 40.5q-17 28 -29 59t-12 71q0 45 15 81t42.5 61.5t67 39t87.5 13.5q28 0 54 -8.5t45 -25.5t30.5 -41.5t11.5 -57.5q0 -39 -14 -70.5t-39.5 -57.5t-60.5 -48t-77 -41l116 -161q49 63 77 141l81 -10q-14 -42 -41.5 -93.5 t-69.5 -100.5q25 -35 46.5 -69t33.5 -66h-96q-8 18 -19.5 36.5t-25.5 38.5q-45 -37 -100.5 -60.5t-127.5 -23.5q-49 0 -84.5 11.5t-58 32.5t-33 49.5t-10.5 62.5zM272 68q48 0 94 17.5t83 51.5l-138 190q-26 -11 -51 -26t-44.5 -35.5t-32 -46t-12.5 -56.5q0 -42 22.5 -68.5 t78.5 -26.5zM317 520q0 -27 10.5 -53t26.5 -52q26 10 52 25t46.5 33.5t33 41.5t12.5 50q0 34 -18.5 52t-50.5 18q-45 0 -78.5 -28.5t-33.5 -86.5z" />
+<glyph unicode="'" horiz-adv-x="240" d="M350 760l-12 -50q-12 -49 -30.5 -103.5t-40.5 -105.5h-54q4 53 11 106.5t19 103.5l12 49h95z" />
+<glyph unicode="(" horiz-adv-x="321" d="M493 739q-63 -63 -114 -133.5t-86.5 -146t-55 -155t-19.5 -161.5q0 -85 12 -153.5t41 -130.5l-71 -40q-34 60 -53 139.5t-19 165.5q0 189 77 354t226 305z" />
+<glyph unicode=")" horiz-adv-x="321" d="M-48 -141q63 63 114 133.5t86.5 146t55 155t19.5 161.5q0 85 -12 153.5t-41 130.5l71 40q34 -60 53 -139.5t19 -165.5q0 -189 -77 -354t-226 -305z" />
+<glyph unicode="*" horiz-adv-x="474" d="M398 685q0 -42 -8 -81l-15 -79l71 39q35 19 76 33l6 2l28 -84l-8 -3q-40 -15 -80 -19.5t-82 -7.5l62 -55q29 -26 54 -61l5 -7l-73 -51l-4 6q-24 36 -42 71l-35 74l-35 -74q-18 -35 -42 -71l-4 -6l-73 51l5 7q25 35 54 61l62 55q-42 3 -82 7.5t-80 19.5l-8 3l28 84l6 -2 q41 -14 76 -33l71 -39l-15 79q-8 39 -8 81v8h90v-8z" />
+<glyph unicode="+" d="M457 540l-50 -206h182l-19 -79h-182l-50 -207h-84l49 207h-182l19 79h182l50 206h85z" />
+<glyph unicode="," horiz-adv-x="250" d="M200 114q-5 -36 -17 -73t-30 -72.5t-39.5 -68t-45.5 -59.5l-63 26q20 27 36.5 59t29 65t20 64.5t10.5 58.5h99z" />
+<glyph unicode="-" horiz-adv-x="297" d="M106 328h242l-20 -87h-242z" />
+<glyph unicode="." horiz-adv-x="250" d="M130 -13q-28 0 -44 15t-16 44q0 36 21.5 55.5t49.5 19.5t44.5 -15.5t16.5 -45.5q0 -17 -6.5 -30.5t-16.5 -23t-23 -14.5t-26 -5z" />
+<glyph unicode="/" horiz-adv-x="380" d="M29 -185h-93l559 968h93z" />
+<glyph unicode="0" d="M611 501q0 -49 -9 -106.5t-26.5 -115t-44.5 -110.5t-63.5 -94t-82.5 -65.5t-101 -24.5q-85 0 -125.5 52.5t-40.5 155.5q0 49 9 106.5t26.5 115t44.5 110.5t63.5 94t82 65.5t101.5 24.5q85 0 125.5 -52.5t40.5 -155.5zM516 489q0 75 -18 107t-64 32q-31 0 -60 -19 t-53.5 -51t-44.5 -74.5t-34 -89.5t-21.5 -96t-7.5 -93q0 -75 18 -107t64 -32q32 0 60.5 19t53 51t44.5 74.5t34 89.5t21.5 95.5t7.5 93.5z" />
+<glyph unicode="1" d="M410 555q-14 -11 -33.5 -22.5t-42 -22.5t-46 -20.5t-46.5 -16.5l-15 77q60 22 122.5 56.5t119.5 86.5h67l-166 -693h-93z" />
+<glyph unicode="2" d="M591 552q0 -53 -17 -93t-46 -73.5t-67 -63.5l-81 -61l-53 -41q-28 -22 -53 -45.5t-44 -48t-27 -48.5h301l-18 -78h-405q8 53 28.5 96t49 79t63 66t71.5 58l75 57q37 27 65 55.5t45 59.5t17 68q0 41 -22.5 65t-73.5 24q-29 0 -53.5 -7t-44.5 -17.5t-35.5 -21.5t-24.5 -20 l-32 72q14 13 35 26t47.5 24t56.5 18t63 7q48 0 82.5 -13.5t56 -35.5t31.5 -50t10 -58z" />
+<glyph unicode="3" d="M251 67q40 0 74.5 9.5t60 28.5t39.5 47.5t14 66.5q0 59 -43.5 85.5t-115.5 26.5h-21l18 76h31q33 0 64.5 8.5t57 26t41 43t15.5 59.5q0 42 -26 63.5t-73 21.5q-43 0 -77.5 -13.5t-59.5 -29.5l-22 72q13 9 32 18t42 16.5t48.5 12t51.5 4.5q47 0 80.5 -12t55.5 -33 t32 -49.5t10 -60.5q0 -66 -38.5 -112.5t-104.5 -72.5q17 -7 34.5 -19.5t31 -31t22 -43t8.5 -54.5q0 -53 -18.5 -96.5t-54.5 -74.5t-89 -48t-123 -17q-35 0 -64.5 5t-52.5 11.5t-38.5 13.5t-21.5 11l35 79q7 -4 19.5 -10.5t30.5 -12.5t41.5 -10.5t53.5 -4.5z" />
+<glyph unicode="4" d="M483 177l-42 -177h-90l42 177h-304l15 63q28 47 73.5 107t101 122t116.5 120.5t121 103.5h91l-106 -440h81l-18 -76h-81zM490 577q-36 -30 -75 -67.5t-77 -79.5t-73 -87t-63 -90h210z" />
+<glyph unicode="5" d="M370 615l-14 -47l-18 -52l-17 -50l-13 -40q113 -15 171 -62.5t58 -133.5q0 -51 -17 -96t-53 -78t-91.5 -52t-131.5 -19q-32 0 -60.5 5t-51 11.5t-37.5 13t-20 9.5l36 78q14 -8 48.5 -21.5t89.5 -13.5q41 0 76.5 10.5t61.5 30t41 48.5t15 65q0 46 -25 72.5t-62 40 t-80 17.5t-79 6l31 88l28 83l26 80q12 41 23 85h324l-18 -78h-241z" />
+<glyph unicode="6" d="M238 318q-10 -32 -15 -65.5t-5 -59.5q0 -62 23 -97t79 -35q39 0 69 16.5t50.5 43.5t31 61t10.5 68q0 48 -23.5 73t-77.5 25q-35 0 -70.5 -6.5t-71.5 -23.5zM126 185q0 105 35.5 198t100 162.5t156 110t204.5 40.5h13l-11 -79h-5q-71 0 -128.5 -18.5t-102 -49t-76.5 -71.5 t-50 -86q32 16 69 24.5t71 8.5q45 0 77.5 -13.5t53.5 -36t30.5 -52.5t9.5 -63q0 -50 -15.5 -99.5t-47.5 -88.5t-82.5 -63t-120.5 -24q-88 0 -134.5 54t-46.5 146z" />
+<glyph unicode="7" d="M160 0q15 53 39.5 110.5t55.5 115.5t66.5 114t72.5 106.5t74 92.5t72 73h-329l19 81h435l-19 -80q-29 -25 -63.5 -63t-72 -85.5t-74.5 -102.5t-70.5 -115t-61.5 -122.5t-46 -124.5h-98z" />
+<glyph unicode="8" d="M471 349q34 -23 57.5 -56.5t23.5 -86.5q0 -44 -16.5 -84t-49.5 -70.5t-83 -48.5t-116 -18q-50 0 -85 14t-57 36t-32 50t-10 56q0 72 42.5 128t117.5 93q-61 48 -61 124q0 45 16.5 85t47.5 71t75.5 49t100.5 18q47 0 80 -13t54 -35t31 -49.5t10 -56.5q0 -68 -39 -120 t-107 -86zM332 327q-27 -12 -52 -29.5t-44 -40t-30 -48t-11 -52.5q0 -20 5 -37t17 -30.5t32 -21t50 -7.5q33 0 62.5 10t51.5 28t34.5 43t12.5 55q0 49 -34 79t-94 51zM398 381q25 12 48 28t40.5 36.5t28 45t10.5 54.5q0 15 -4 31t-14.5 28.5t-29 20.5t-46.5 8 q-30 0 -55 -10.5t-43.5 -28.5t-29 -43.5t-10.5 -55.5q0 -41 25 -68.5t80 -45.5z" />
+<glyph unicode="9" d="M328 272q-45 0 -77.5 13t-53.5 35.5t-31 52.5t-10 63q0 50 15.5 99t48 87.5t81.5 62t115 23.5q92 0 139.5 -54t47.5 -146q0 -107 -33.5 -200t-96.5 -162t-154 -108.5t-206 -39.5h-11q-5 0 -15 1l17 79q3 -1 10 -1h8q70 0 125.5 17.5t98 48.5t72.5 72t50 89 q-32 -16 -69 -24t-71 -8zM350 349q35 0 70.5 6.5t71.5 23.5q9 30 14 63.5t5 66.5q0 55 -24 89t-78 34q-39 0 -69 -16.5t-50.5 -42.5t-31 -59.5t-10.5 -67.5q0 -48 24 -72.5t78 -24.5z" />
+<glyph unicode=":" horiz-adv-x="250" d="M225 386q-28 0 -44 15t-16 44q0 36 21.5 55.5t49.5 19.5t44.5 -15.5t16.5 -45.5q0 -17 -6.5 -30.5t-16.5 -23t-23 -14.5t-26 -5zM130 -13q-28 0 -44 15t-16 44q0 36 21.5 55.5t49.5 19.5t44.5 -15.5t16.5 -45.5q0 -17 -6.5 -30.5t-16.5 -23t-23 -14.5t-26 -5z" />
+<glyph unicode=";" horiz-adv-x="250" d="M200 114q-5 -36 -17 -73t-30 -72.5t-39.5 -68t-45.5 -59.5l-63 26q20 27 36.5 59t29 65t20 64.5t10.5 58.5h99zM225 386q-28 0 -44 15t-16 44q0 36 21.5 55.5t49.5 19.5t44.5 -15.5t16.5 -45.5q0 -17 -6.5 -30.5t-16.5 -23t-23 -14.5t-26 -5z" />
+<glyph unicode="<" d="M501 71l-380 183l19 80l468 183l6 -82l-382 -146l311 -145z" />
+<glyph unicode="=" d="M166 440h449l-19 -79h-449zM115 227h449l-19 -79h-449z" />
+<glyph unicode=">" d="M209 517l380 -183l-19 -80l-468 -183l-6 82l382 146l-311 145z" />
+<glyph unicode="?" horiz-adv-x="388" d="M490 567q0 -34 -12 -61.5t-31.5 -51t-43.5 -44t-49 -39.5q-37 -29 -67.5 -60.5t-41.5 -75.5q-2 -6 -2.5 -11.5t-0.5 -7.5h-81q1 12 2 22t3 20q12 51 47 87.5t80 71.5l39 32q19 16 33.5 33t23 36.5t8.5 42.5q0 11 -3 24t-12.5 23.5t-26.5 17.5t-45 7q-48 0 -80 -11 t-50 -20l-10 72q24 14 65.5 24.5t86.5 10.5q47 0 79 -11t52 -30t28.5 -45t8.5 -56zM178 -13q-28 0 -44 15t-16 44q0 36 21.5 55.5t49.5 19.5t44.5 -15.5t16.5 -45.5q0 -17 -6.5 -30.5t-16.5 -23t-23 -14.5t-26 -5z" />
+<glyph unicode="@" horiz-adv-x="935" d="M696 43q-63 0 -89 35q-23 -14 -54 -22.5t-66 -8.5q-74 0 -119.5 43t-45.5 127q0 57 19.5 110.5t56.5 94t90.5 65t120.5 24.5q52 0 90.5 -9t58.5 -17l-73 -304q-2 -7 -3.5 -14t-1.5 -15q0 -12 6.5 -21t26.5 -9q42 0 72 24.5t50 63t29.5 84.5t9.5 89q0 55 -14 101t-45.5 79 t-82.5 51.5t-125 18.5q-87 0 -162 -37.5t-130 -100t-86 -145t-31 -172.5q0 -67 19.5 -115t54.5 -79t84 -46t108 -15q58 0 97.5 7.5t50.5 11.5l-7 -74q-9 -3 -26 -6.5t-38.5 -7t-46 -5.5t-48.5 -2q-72 0 -133 20.5t-105.5 61t-69.5 100.5t-25 139q0 100 33.5 197.5 t98.5 173.5t159 123t216 47q162 0 250.5 -81.5t88.5 -238.5q0 -47 -10.5 -106.5t-39.5 -113t-80.5 -90t-132.5 -36.5zM500 122q55 0 92 20q0 17 2 28.5t5 22.5l57 235q-5 2 -22 4t-37 2q-43 0 -77 -17t-58 -46t-37 -67t-13 -79q0 -54 22.5 -78.5t65.5 -24.5z" />
+<glyph unicode="A" horiz-adv-x="640" d="M216 178l-48 -86l-50 -92h-106q112 202 218 372l211 321h95q15 -75 28 -151.5t24 -160.5l22 -177q12 -94 24 -204h-98q-5 45 -9 90.5t-9 87.5h-302zM509 256q-8 80 -18.5 160.5t-24.5 165.5l-87 -132q-52 -81 -118 -194h248z" />
+<glyph unicode="B" horiz-adv-x="622" d="M265 -7q-20 0 -43.5 1t-47.5 3t-47 5.5t-41 8.5l161 672q42 10 93.5 13.5t92.5 3.5q51 0 93.5 -8.5t73 -27t48 -48.5t17.5 -72q0 -61 -36.5 -107.5t-100.5 -69.5q43 -16 69.5 -49.5t26.5 -80.5q0 -69 -28 -116t-76.5 -75.5t-114 -40.5t-140.5 -12zM256 324l-58 -246 q11 -2 33 -3.5t56 -1.5q37 0 79 5.5t77 22t58.5 46.5t23.5 80q0 49 -35 73t-113 24h-121zM275 400h95q33 0 67.5 5.5t63 20t47 39.5t18.5 64q0 51 -38 71t-116 20q-26 0 -51 -2t-34 -4z" />
+<glyph unicode="C" horiz-adv-x="604" d="M389 -15q-65 0 -114.5 19t-82.5 54t-49.5 84.5t-16.5 111.5q0 90 28.5 172t81 145t126.5 100.5t165 37.5q39 0 70 -4.5t54.5 -11.5t40 -15t26.5 -15l-40 -80q-23 15 -62.5 28.5t-93.5 13.5q-69 0 -124 -32.5t-93 -84t-58 -116t-20 -127.5q0 -195 169 -195q36 0 64 4.5 t50.5 11.5t39.5 15l30 14l12 -84q-24 -14 -77 -30t-126 -16z" />
+<glyph unicode="D" horiz-adv-x="695" d="M417 618q-38 0 -60 -1t-30 -3l-128 -534q8 -2 27 -3.5t62 -1.5q79 0 142.5 26.5t107.5 74t68 113t24 143.5q0 88 -51 137t-162 49zM425 700q154 0 230 -72.5t76 -195.5q0 -86 -27 -165.5t-84 -140.5t-145.5 -97t-211.5 -36q-41 0 -90.5 4t-86.5 14l161 673q42 10 89 13 t89 3z" />
+<glyph unicode="E" horiz-adv-x="561" d="M83 0l166 693h409l-19 -81h-313l-50 -209h278l-19 -79h-277l-59 -243h336l-19 -81h-433z" />
+<glyph unicode="F" horiz-adv-x="528" d="M83 0l166 693h405l-19 -81h-309l-51 -212h274l-19 -79h-273l-77 -321h-97z" />
+<glyph unicode="G" horiz-adv-x="655" d="M382 -14q-126 0 -191 72.5t-65 195.5q0 90 28.5 172t81.5 145t127.5 100.5t167.5 37.5q46 0 79.5 -6t57.5 -14t39 -16.5t24 -14.5l-43 -79q-8 5 -22 13t-34 15.5t-46.5 12.5t-58.5 5q-71 0 -127 -32.5t-94.5 -84t-58.5 -116t-20 -127.5q0 -98 42.5 -147t132.5 -49 q37 0 67 5t43 10l60 254h95l-76 -316q-12 -7 -33 -13.5t-49 -11.5t-60.5 -8t-66.5 -3z" />
+<glyph unicode="H" horiz-adv-x="685" d="M598 0h-97l77 322h-321l-77 -322h-97l166 693h97l-70 -290h321l70 290h97z" />
+<glyph unicode="I" horiz-adv-x="267" d="M249 693h97l-166 -693h-97z" />
+<glyph unicode="J" horiz-adv-x="486" d="M457 223q-12 -48 -27 -91.5t-42.5 -76t-72 -51.5t-114.5 -19q-35 0 -63.5 6.5t-50.5 16.5t-37.5 20.5t-23.5 19.5l48 73q8 -8 20 -17t28 -16.5t36 -13t45 -5.5q35 0 60.5 9t43.5 28.5t30.5 50.5t23.5 75l111 461h97z" />
+<glyph unicode="K" horiz-adv-x="618" d="M752 693l-86 -77l-98 -86l-104 -88l-99 -81q31 -29 65.5 -72t68.5 -92t64 -100t53 -97h-108l-56 94q-29 48 -61 92.5t-65 82.5t-66 65l-80 -334h-97l166 693h97l-73 -303l95 75l100 84l92 80l70 64h122z" />
+<glyph unicode="L" horiz-adv-x="511" d="M506 81l-19 -81h-404l166 693h97l-147 -612h307z" />
+<glyph unicode="M" horiz-adv-x="851" d="M785 544l-40 -57l-53 -77l-58 -88l-58 -88l-52 -78l-38 -60h-78l-10 60l-14 80l-17 88l-17 87q-8 42 -16 77l-12 56q-42 -128 -82 -266l-78 -278h-96q24 90 51 182l54 180l55 172l53 159h95q12 -44 26 -104t27 -125.5t24.5 -130.5t19.5 -118l79 119l88 131l86 125l74 103 h93q-17 -168 -45.5 -343.5t-62.5 -349.5h-97q30 143 55 279.5t44 264.5z" />
+<glyph unicode="N" horiz-adv-x="702" d="M530 0l-43 132q-25 74 -54.5 150t-60.5 147.5t-61 124.5l-133 -554h-95l166 693h83q32 -54 65.5 -122.5t64.5 -140.5t56.5 -141t42.5 -124l124 528h95l-165 -693h-85z" />
+<glyph unicode="O" horiz-adv-x="743" d="M527 709q55 0 101.5 -16.5t80 -49.5t52 -82.5t18.5 -115.5q0 -83 -25.5 -165t-75.5 -147.5t-125 -106.5t-175 -41q-56 0 -102 16.5t-79.5 49.5t-52 82.5t-18.5 115.5q0 82 25 164.5t75.5 148t125.5 106.5t175 41zM388 69q67 0 121 32.5t91.5 84.5t57.5 117t20 130 q0 89 -38.5 140.5t-122.5 51.5q-68 0 -121.5 -32.5t-91 -84.5t-57.5 -117t-20 -130q0 -89 38.5 -140.5t122.5 -51.5z" />
+<glyph unicode="P" horiz-adv-x="594" d="M425 700q121 0 182.5 -46t61.5 -134q0 -68 -25.5 -117.5t-72.5 -81.5t-113 -47.5t-147 -15.5h-69l-62 -258h-97l164 684q42 10 89 13t89 3zM413 618q-35 0 -56.5 -1t-29.5 -3l-66 -275h63q42 0 86 7.5t79 26.5t57.5 52.5t22.5 86.5q0 57 -42.5 81.5t-113.5 24.5z" />
+<glyph unicode="Q" horiz-adv-x="743" d="M435 -11q-1 -3 -1 -7v-6q0 -20 15.5 -34t41 -24t59 -16.5t69.5 -10.5l-34 -76q-35 4 -78 12t-80.5 25.5t-62.5 46.5t-25 75v5q0 3 1 8q-48 5 -87.5 24t-67.5 52t-43.5 79.5t-15.5 106.5q0 82 25 164.5t75.5 148t125.5 106.5t175 41q55 0 101.5 -16.5t80 -49.5t52 -82.5 t18.5 -115.5q0 -77 -21.5 -153t-65 -139.5t-108 -107.5t-149.5 -56zM388 69q67 0 121 32.5t91.5 84.5t57.5 117t20 130q0 89 -38.5 140.5t-122.5 51.5q-68 0 -121.5 -32.5t-91 -84.5t-57.5 -117t-20 -130q0 -89 38.5 -140.5t122.5 -51.5z" />
+<glyph unicode="R" horiz-adv-x="613" d="M425 700q111 0 176 -45t65 -132t-52 -147t-144 -86q12 -21 28 -53.5t32 -72.5l34 -82q16 -42 28 -82h-99l-29 77q-15 39 -30.5 75t-31 68t-28.5 55q-13 -1 -26 -1.5t-26 -0.5h-77l-65 -273h-97l164 684q42 10 89 13t89 3zM413 618q-35 0 -56.5 -1t-29.5 -3l-63 -262h59 q41 0 84 6t78.5 23.5t58 49t22.5 83.5q0 56 -42.5 80t-110.5 24z" />
+<glyph unicode="S" horiz-adv-x="521" d="M248 69q31 0 61.5 6.5t54.5 21.5t39 39.5t15 60.5q0 25 -9.5 43.5t-26 33t-38.5 26.5l-50 27q-23 12 -46.5 26t-42 34.5t-30 48.5t-11.5 67q0 45 17.5 83t51.5 65.5t83.5 42.5t113.5 15q29 0 56.5 -4.5t50.5 -11t39.5 -14.5t24.5 -14l-45 -76q-17 14 -54.5 25.5 t-88.5 11.5q-32 0 -59.5 -6.5t-47.5 -20.5t-32 -35.5t-12 -51.5q0 -26 8 -43.5t22 -31t34 -24.5l45 -23q30 -15 56.5 -30.5t46.5 -36.5t31.5 -49.5t11.5 -67.5q0 -55 -21.5 -96.5t-59 -69t-89 -41.5t-111.5 -14q-40 0 -72.5 5.5t-57 13.5t-41.5 16.5t-26 15.5l45 79 q19 -13 60 -29.5t104 -16.5z" />
+<glyph unicode="T" horiz-adv-x="559" d="M701 693l-19 -81h-209l-147 -612h-97l147 612h-209l19 81h515z" />
+<glyph unicode="U" horiz-adv-x="670" d="M336 -15q-52 0 -90 15.5t-63 42t-37 63t-12 78.5q0 22 4 49t9 50l98 410h97l-100 -416q-5 -19 -8 -42t-3 -43q0 -25 6 -47.5t20.5 -39t37.5 -26t56 -9.5q43 0 75.5 11.5t56.5 36t41.5 62t29.5 89.5l102 424h97l-104 -435q-14 -57 -32.5 -107t-52.5 -86.5t-88.5 -58 t-139.5 -21.5z" />
+<glyph unicode="V" horiz-adv-x="627" d="M333 115q42 60 85 129l87 144l85 151q42 77 80 154h107l-107 -197l-104 -180l-104 -164q-51 -78 -105 -152h-95q-15 75 -27.5 151.5t-24 160.5t-22 177.5t-20.5 203.5h100q16 -178 30.5 -319t34.5 -259z" />
+<glyph unicode="W" horiz-adv-x="920" d="M639 609q4 -66 10 -132t12.5 -128t14.5 -119l14 -106q30 56 62 123l66 141l65 150l62 155h103q-80 -198 -159.5 -369t-167.5 -324h-98q-17 106 -33 219t-26 245l-134 -236q-65 -113 -139 -228h-98q-8 81 -11 162.5t-3 167.5t3 175.5t9 187.5h96q-7 -104 -11 -207.5 t-4 -208.5q0 -77 3 -153q68 106 137 230l138 255h89z" />
+<glyph unicode="X" horiz-adv-x="609" d="M486 0q-23 70 -50.5 142.5t-61.5 147.5l-245 -290h-114l319 370l-141 323h107l105 -255l107 126q52 65 96 129h111q-59 -82 -131 -167l-143 -162l75 -182q38 -94 67 -182h-101z" />
+<glyph unicode="Y" horiz-adv-x="576" d="M234 0l66 278q-39 104 -72.5 210.5t-61.5 204.5h105q19 -81 42.5 -165t52.5 -162l67 79l67 83l63 84q30 41 56 81h111l-156 -205l-177 -210l-66 -278h-97z" />
+<glyph unicode="Z" horiz-adv-x="565" d="M668 616l-66 -62l-82 -82l-90 -94l-92 -101l-88 -101q-43 -50 -77 -95h374l-19 -81h-491l15 65q29 39 67 85l81 98l90 101l91 99l87 90q41 42 76 74h-343l19 81h466z" />
+<glyph unicode="[" horiz-adv-x="326" d="M283 783h221l-17 -73h-134l-198 -822h134l-18 -73h-221z" />
+<glyph unicode="\" horiz-adv-x="380" d="M167 783h85l106 -968h-87z" />
+<glyph unicode="]" horiz-adv-x="326" d="M182 -185h-221l17 73h134l198 822h-134l18 73h221z" />
+<glyph unicode="^" d="M423 597l-223 -279l-68 41l268 334h79l109 -343l-76 -33z" />
+<glyph unicode="_" horiz-adv-x="500" d="M-25 -106h500l-19 -79h-500z" />
+<glyph unicode="`" horiz-adv-x="380" d="M285 779l148 -157l-45 -46l-166 134z" />
+<glyph unicode="a" horiz-adv-x="548" d="M434 -6q-5 11 -10 24.5t-8 28.5q-22 -20 -59.5 -40t-90.5 -20q-44 0 -75.5 14t-51.5 39t-29.5 59t-9.5 75q0 67 22.5 131t67.5 114t113 81t159 31q27 0 63 -6t62 -20l-77 -314q-5 -23 -8.5 -44t-3.5 -44t4 -46.5t14 -50.5zM285 66q42 0 72 18t52 42q2 35 10 73l60 248 q-5 2 -16.5 3t-20.5 1q-57 0 -103 -22t-78.5 -58.5t-50 -85t-17.5 -101.5q0 -21 4 -42.5t14.5 -38t28 -27t45.5 -10.5z" />
+<glyph unicode="b" horiz-adv-x="559" d="M291 499q23 14 53 24t64 10q43 0 75.5 -14t53.5 -38.5t31.5 -58.5t10.5 -73q0 -69 -22 -133.5t-67 -115t-112.5 -81t-158.5 -30.5q-15 0 -33 1.5t-36.5 5.5t-36 10t-30.5 14l177 740l97 16zM385 454q-30 0 -59.5 -10.5t-55.5 -29.5l-81 -339q10 -2 23 -4t26 -2 q57 0 103 22.5t78 60t49.5 86t17.5 101.5q0 22 -4.5 43t-16 37t-31 25.5t-49.5 9.5z" />
+<glyph unicode="c" horiz-adv-x="455" d="M102 186q0 68 20.5 131t60.5 111t98 76.5t133 28.5q33 0 63 -4.5t57 -17.5l-35 -78q-16 9 -37.5 14t-55.5 5q-49 0 -88 -21.5t-66.5 -57t-42 -82t-14.5 -96.5q0 -26 5.5 -49t19.5 -40.5t37.5 -27.5t59.5 -10q19 0 38.5 3.5t36.5 8.5t30.5 10.5t19.5 10.5l8 -79 q-19 -12 -59.5 -23.5t-90.5 -11.5q-48 0 -85 14.5t-62 41t-38 63t-13 80.5z" />
+<glyph unicode="d" horiz-adv-x="551" d="M501 103q0 -23 4 -46.5t14 -50.5l-82 -12q-11 21 -17 53q-22 -20 -59.5 -40t-90.5 -20q-44 0 -76 13.5t-53 38.5t-31 59.5t-10 75.5q0 67 22.5 131t67 114t111.5 80.5t156 30.5q11 0 22 -1t23 -3l56 234l97 16l-141 -585q-5 -23 -9 -44t-4 -44zM289 66q41 0 71 17.5 t52 40.5q1 32 11 75l60 250q-9 2 -20 2.5t-21 0.5q-57 0 -103 -22t-78.5 -59t-50 -85.5t-17.5 -101.5q0 -22 5 -43.5t16 -38t29.5 -26.5t45.5 -10z" />
+<glyph unicode="e" horiz-adv-x="522" d="M206 273q58 2 106 7.5t83 19t54.5 36.5t19.5 60q0 9 -3.5 19t-12 18.5t-23 14t-37.5 5.5q-35 0 -65.5 -15t-54.5 -39.5t-41 -57t-26 -68.5zM301 -13q-51 0 -88 14.5t-62 40t-37 59.5t-12 72q0 70 21 135t60 115t95 79.5t127 29.5q41 0 70.5 -10.5t48 -28.5t27.5 -41.5 t9 -48.5q0 -47 -17 -80t-45 -54.5t-65.5 -33.5t-78 -18.5t-82 -9.5t-78.5 -5q-1 -8 -1 -13v-8q0 -23 5.5 -43.5t20.5 -36t41.5 -24.5t69.5 -9q19 0 39.5 3.5t39 9t32.5 11t21 10.5l8 -79q-20 -11 -64.5 -23.5t-104.5 -12.5z" />
+<glyph unicode="f" horiz-adv-x="372" d="M296 520h174l-18 -78h-174l-80 -330l-21 -91q-9 -40 -22 -75t-33 -67.5t-55 -67.5l-82 12q20 26 34 46.5t24 38.5t17 36t13.5 40.5t13.5 51.5l16 67l111 464q12 50 30.5 89t47 65.5t67.5 40.5t93 14q35 0 66.5 -7t47.5 -15l-37 -74q-8 4 -27.5 10t-57.5 6q-33 0 -56 -9.5 t-38.5 -26.5t-25.5 -41t-17 -54z" />
+<glyph unicode="g" horiz-adv-x="554" d="M204 -108q41 0 72 10t53.5 29t36.5 45t22 59l4 19q-20 -11 -54 -22t-70 -11q-81 0 -124.5 40.5t-43.5 113.5q0 67 22 131t67 114t112 80.5t157 30.5q14 0 31.5 -2t36 -5.5t36 -9.5t30.5 -14l-109 -455q-13 -54 -32 -97t-52 -73t-85 -46.5t-130 -16.5q-43 0 -85 11.5 t-71 28.5l35 78q23 -17 61 -27.5t80 -10.5zM288 99q40 0 73.5 14.5t51.5 27.5l73 304q-10 2 -23 4t-25 2q-54 0 -99 -20.5t-77.5 -55t-50.5 -79.5t-18 -95q0 -53 23.5 -77.5t71.5 -24.5z" />
+<glyph unicode="h" horiz-adv-x="556" d="M78 0l183 760l97 16l-64 -263q23 8 48.5 13t51.5 5q45 0 77.5 -12.5t52.5 -34t29.5 -52t9.5 -66.5q0 -46 -14 -100l-64 -266h-93l59 246q7 28 13.5 57t6.5 55q0 20 -5 37t-17 29.5t-32 19.5t-50 7q-24 0 -49.5 -4.5t-42.5 -12.5l-104 -434h-93z" />
+<glyph unicode="i" horiz-adv-x="253" d="M171 0h-93l125 520h93zM279 614q-23 0 -38.5 14t-15.5 39q0 32 20 50.5t45 18.5q23 0 39 -14.5t16 -40.5q0 -30 -21 -48.5t-45 -18.5z" />
+<glyph unicode="j" horiz-adv-x="253" d="M176 20q-14 -56 -30.5 -95.5t-41 -64.5t-59 -36.5t-82.5 -11.5q-17 0 -38.5 5t-33.5 13l21 77q11 -7 28 -11t37 -4q45 0 68.5 35t37.5 92l120 501h93zM280 614q-23 0 -38.5 14t-15.5 39q0 32 20 50.5t45 18.5q23 0 39 -14.5t16 -40.5q0 -30 -21 -48.5t-45 -18.5z" />
+<glyph unicode="k" horiz-adv-x="521" d="M78 0l183 760l97 16l-112 -463q33 24 68 53l66 56l58 54q27 25 44 44h110q-21 -25 -53.5 -57.5t-68.5 -64.5l-72 -63q-37 -30 -66 -51q27 -25 54.5 -59.5t53 -73t46.5 -77.5t35 -74h-101q-35 80 -83.5 148.5t-102.5 111.5l-63 -260h-93z" />
+<glyph unicode="l" horiz-adv-x="280" d="M217 229l-10 -43q-5 -21 -5 -40q0 -34 16.5 -54t61.5 -25l-21 -76q-41 1 -69.5 12.5t-46 30.5t-25.5 45t-8 57q0 23 4 48t11 52l126 524l97 16z" />
+<glyph unicode="m" horiz-adv-x="832" d="M680 531q44 0 74.5 -13.5t49 -36.5t26.5 -53.5t8 -64.5q0 -22 -3.5 -47.5t-9.5 -49.5l-64 -266h-93l59 246l11 52q7 28 7 56q0 19 -4.5 37t-15 31t-29.5 21t-47 8q-32 0 -62 -12.5t-50 -25.5q5 -28 5 -54q0 -23 -3.5 -46.5t-8.5 -46.5l-64 -266h-93l59 246l11 52 q6 29 6 58q0 19 -4 36.5t-13.5 30.5t-25.5 20.5t-41 7.5t-48.5 -3t-39.5 -8l-106 -440h-93l120 500q22 7 47.5 13t51 10t50 6t45.5 2q42 0 71 -14.5t46 -38.5q10 7 27.5 16t40 17t49 14t54.5 6z" />
+<glyph unicode="n" horiz-adv-x="555" d="M171 0h-93l120 500q22 7 48 13t51.5 10t50 6t45.5 2q45 0 77.5 -12.5t52.5 -34t29.5 -52t9.5 -66.5q0 -23 -4 -48.5t-10 -51.5l-64 -266h-93l59 246q7 28 13.5 57t6.5 55q0 20 -5 37t-17 29.5t-32 19.5t-50 7q-25 0 -49 -3t-40 -8z" />
+<glyph unicode="o" horiz-adv-x="559" d="M277 -13q-82 0 -128.5 48.5t-46.5 133.5q0 58 16.5 122t52.5 118t93 89t138 35q82 0 128.5 -48.5t46.5 -133.5q0 -58 -16.5 -122t-52.5 -118t-93 -89t-138 -35zM293 66q45 0 80.5 26t60 66.5t37.5 89.5t13 95q0 50 -22.5 80.5t-75.5 30.5q-45 0 -80.5 -26t-60 -66.5 t-37.5 -89.5t-13 -95q0 -50 22.5 -80.5t75.5 -30.5z" />
+<glyph unicode="p" horiz-adv-x="550" d="M381 533q49 0 84.5 -14t58.5 -38.5t34.5 -58t11.5 -73.5q0 -69 -21 -133.5t-64.5 -114.5t-110 -80t-157.5 -30q-11 0 -24 1t-23 3l-43 -180h-93l164 683q41 17 91 26t92 9zM189 73q10 -2 21.5 -2.5t22.5 -0.5q57 0 102 22t76.5 59.5t48.5 86t17 101.5q0 22 -5 43 t-18.5 37t-36.5 25.5t-59 9.5q-25 0 -46 -4.5t-35 -8.5z" />
+<glyph unicode="q" horiz-adv-x="555" d="M335 -185l48 201q-23 -12 -52 -20.5t-61 -8.5q-44 0 -76 13.5t-53 38.5t-31 59.5t-10 75.5q0 67 22.5 131t67.5 114t113 81t159 31q28 0 64.5 -6.5t66.5 -22.5l-165 -687h-93zM293 66q29 0 58 9.5t53 27.5l83 343q-25 5 -45 5q-57 0 -103 -22t-78.5 -58.5t-50 -85 t-17.5 -101.5q0 -22 4.5 -43.5t15.5 -38t30.5 -26.5t49.5 -10z" />
+<glyph unicode="r" horiz-adv-x="376" d="M376 531q12 0 27 -1.5t29.5 -3.5t26.5 -4.5t18 -5.5l-27 -81q-20 8 -46 12t-50 4q-21 0 -41.5 -3t-35.5 -8l-106 -440h-93l120 500q40 14 86 22.5t92 8.5z" />
+<glyph unicode="s" horiz-adv-x="416" d="M208 65q21 0 42.5 4t38 13t27 24.5t10.5 38.5q0 31 -21 48.5t-67 40.5q-23 11 -42 22t-33.5 26t-22.5 35.5t-8 49.5q0 75 54.5 120.5t156.5 45.5q47 0 84 -9.5t51 -17.5l-35 -76q-14 8 -45 17t-69 9q-19 0 -38 -4t-34.5 -13.5t-25 -25t-9.5 -37.5q0 -27 21.5 -44.5 t62.5 -36.5q26 -12 46.5 -24.5t35 -28t22 -36.5t7.5 -50q0 -42 -16 -74t-44.5 -53t-67.5 -31.5t-85 -10.5q-34 0 -61.5 4.5t-48 10.5t-34 12.5t-20.5 10.5l36 76q7 -4 19.5 -10t30 -12t38.5 -10t44 -4z" />
+<glyph unicode="t" horiz-adv-x="393" d="M256 -14q-74 0 -109.5 33t-35.5 96q0 44 14 105l107 445l97 16l-39 -161h177l-19 -78h-177l-55 -230q-12 -47 -12 -82q0 -33 18 -47.5t60 -14.5q29 0 57 9.5t43 17.5l7 -79q-15 -9 -51 -19.5t-82 -10.5z" />
+<glyph unicode="u" horiz-adv-x="554" d="M268 -13q-44 0 -73.5 13t-48 35t-26.5 52t-8 64q0 26 4.5 51.5t10.5 51.5l64 266h93l-59 -246q-5 -23 -13 -54t-8 -62q0 -18 3.5 -34.5t13 -29t25.5 -20t40 -7.5q43 0 75.5 18.5t54.5 43.5q1 16 3 33t7 37l77 321h93l-79 -329q-5 -23 -8.5 -44.5t-3.5 -44.5t4 -46t14 -50 l-82 -12q-5 11 -10 25t-8 30q-11 -10 -26 -21t-34.5 -20t-43 -15t-51.5 -6z" />
+<glyph unicode="v" horiz-adv-x="485" d="M195 0q-12 52 -22.5 112.5t-19.5 127t-15.5 137.5t-8.5 143h94q1 -49 4 -104.5t8.5 -111t12.5 -107t15 -93.5q30 38 62.5 89.5t62.5 108t55 113.5t40 105h94q-22 -66 -55.5 -137t-73.5 -139.5t-83.5 -131.5t-84.5 -112h-85z" />
+<glyph unicode="w" horiz-adv-x="791" d="M575 108q25 31 56.5 81.5t61.5 108t55.5 116.5t39.5 106h95q-22 -69 -56 -142t-73.5 -141.5t-82 -129.5t-81.5 -107h-83q-11 86 -19.5 174.5t-10.5 179.5q-20 -45 -45 -93t-52.5 -95t-56 -89.5t-54.5 -76.5h-83q-21 103 -34 235t-15 285h93q1 -47 2.5 -102t4.5 -110.5 t7.5 -107.5t10.5 -92q31 44 61 95.5t58 105.5t51.5 108t40.5 103h84q0 -45 1.5 -96.5t5 -105.5t8 -107.5t10.5 -102.5z" />
+<glyph unicode="x" horiz-adv-x="477" d="M318 333l78 98q35 47 61 89h101q-43 -63 -94 -128l-106 -127l64 -131q32 -67 55 -134h-97q-15 45 -38 97l-47 100l-173 -197h-108l240 268l-129 252h103z" />
+<glyph unicode="y" horiz-adv-x="482" d="M283 84q38 60 69 124.5t54.5 123.5t39.5 108.5t23 79.5h97q-11 -38 -31.5 -94.5t-48.5 -122t-63.5 -134t-77.5 -131.5q-32 -47 -64 -88.5t-68.5 -72t-80.5 -48t-99 -17.5q-28 0 -52 7t-35 15l32 76q10 -8 27 -13.5t38 -5.5q58 0 98.5 28t76.5 74q-37 121 -60.5 255.5 t-28.5 271.5h95q1 -45 5.5 -98.5t11.5 -111t17.5 -115.5t24.5 -111z" />
+<glyph unicode="z" horiz-adv-x="458" d="M526 453l-48 -45l-64 -60l-70 -70l-71 -73l-63 -69q-29 -33 -48 -58h279l-18 -78h-388l14 60q20 29 47 63l60 69l64 72l66 68l62 60q30 29 54 50h-249l18 78h371z" />
+<glyph unicode="{" horiz-adv-x="330" d="M122 335q23 0 41.5 8.5t33 22t24 31t13.5 35.5l43 180q11 46 27.5 78.5t43 53t65 30t92.5 9.5h4l-18 -73q-28 0 -48.5 -3.5t-36 -14.5t-26.5 -30.5t-18 -50.5l-37 -154q-16 -66 -39 -103t-64 -55q21 -17 29.5 -40.5t8.5 -49.5q0 -17 -3 -34t-7 -34l-37 -154 q-3 -14 -5 -25t-2 -20q0 -32 21 -42t66 -12l-19 -73h-4q-72 0 -111 25.5t-39 85.5q0 25 8 60l43 180q2 8 3 15t1 14q0 28 -16.5 47t-54.5 21z" />
+<glyph unicode="|" horiz-adv-x="279" d="M283 783h85l-233 -968h-85z" />
+<glyph unicode="}" horiz-adv-x="330" d="M347 263q-23 0 -42 -8.5t-33 -22t-23.5 -31t-13.5 -35.5l-43 -180q-11 -46 -27.5 -78.5t-43 -53t-65 -30t-92.5 -9.5h-4l18 73q28 0 48.5 3.5t36 14.5t26 30t18.5 51l37 154q16 66 39 103t64 55q-21 17 -29.5 40.5t-8.5 49.5q0 17 3 34t7 34l37 154q3 14 5 25t2 20 q0 32 -21 42t-66 12l19 73h4q72 0 111 -25.5t39 -85.5q0 -25 -8 -60l-43 -180q-2 -8 -3 -15t-1 -14q0 -28 16.5 -47t54.5 -21z" />
+<glyph unicode="~" d="M369 336l41 -30q18 -13 45 -13q16 0 29.5 8t23.5 19.5t18 25.5t14 26l64 -20q-8 -22 -21.5 -46.5t-33.5 -45.5t-46.5 -34.5t-60.5 -13.5q-35 0 -57.5 13.5t-41.5 27.5l-41 29q-18 14 -45 14q-17 0 -30 -8t-23 -19.5t-18 -25.5t-14 -26l-64 20q8 22 21.5 46.5t33.5 45.5 t46.5 34.5t60.5 13.5q35 0 57.5 -13.5t41.5 -27.5z" />
+<glyph unicode="¢" d="M460 475q-47 0 -85.5 -21.5t-65.5 -56.5t-42 -79t-15 -90q0 -24 5.5 -45.5t19 -37.5t36.5 -25.5t57 -9.5q19 0 38 3.5t36 8t30 10t19 10.5l7 -77q-16 -11 -51.5 -21.5t-80.5 -12.5l-33 -140h-81l34 145q-127 29 -127 189q0 54 16 107t48 97.5t79 76.5t109 43l34 144h81 l-33 -139q24 -2 47 -7.5t44 -16.5l-34 -74q-16 9 -37.5 14t-54.5 5z" />
+<glyph unicode="£" d="M339 373h189l-18 -75h-189l-2 -8q-12 -50 -29.5 -105t-37.5 -105h290l-19 -80h-394q28 71 53 141.5t42 141.5l4 15h-93l18 75h93l20 83q18 75 42 123.5t56.5 76.5t73.5 39t92 11q52 0 81 -9.5t52 -22.5l-42 -75q-23 12 -47.5 19t-55.5 7q-29 0 -53 -8t-43.5 -27.5 t-35 -51.5t-27.5 -80z" />
+<glyph unicode="¥" d="M516 106h-163l-25 -106h-90l25 106h-162l17 71h162l24 102h-161l17 71h136q-35 88 -63 173.5t-48 169.5h96q7 -35 17 -74t22 -79t25 -79t28 -75l59 71l62 78q31 40 59 80.5t51 77.5h105l-63 -87l-68 -89l-70 -87l-70 -80h136l-17 -71h-163l-24 -102h163z" />
+<glyph unicode="©" horiz-adv-x="818" d="M828 347q0 -85 -28 -152.5t-75 -114t-109 -71t-130 -24.5t-130 24.5t-109 71t-75 114t-28 152.5t28 152.5t75 114t109 71t130 24.5t130 -24.5t109 -71t75 -114t28 -152.5zM755 347q0 66 -20 120.5t-55.5 93.5t-85 60t-108.5 21t-108.5 -21t-85 -60t-55.5 -93.5 t-20 -120.5t20 -120.5t55.5 -93.5t85 -60t108.5 -21t108.5 21t85 60t55.5 93.5t20 120.5zM498 140q-43 0 -78 14t-60.5 40t-39.5 64.5t-14 88.5q0 49 15.5 87t41.5 64.5t61 40.5t74 14q26 0 47.5 -4t37.5 -9.5t26.5 -11t14.5 -8.5l-23 -60q-12 7 -38.5 16.5t-61.5 9.5 q-51 0 -85 -35.5t-34 -103.5q0 -62 31 -101.5t91 -39.5q39 0 64.5 8.5t39.5 15.5l19 -60q-5 -3 -16.5 -8.5t-28.5 -10t-38.5 -8t-45.5 -3.5z" />
+<glyph unicode="­" horiz-adv-x="297" d="M106 328h242l-20 -87h-242z" />
+<glyph unicode="®" horiz-adv-x="818" d="M828 347q0 -85 -28 -152.5t-75 -114t-109 -71t-130 -24.5t-130 24.5t-109 71t-75 114t-28 152.5t28 152.5t75 114t109 71t130 24.5t130 -24.5t109 -71t75 -114t28 -152.5zM755 347q0 66 -20 120.5t-55.5 93.5t-85 60t-108.5 21t-108.5 -21t-85 -60t-55.5 -93.5 t-20 -120.5t20 -120.5t55.5 -93.5t85 -60t108.5 -21t108.5 21t85 60t55.5 93.5t20 120.5zM585 148q-23 45 -51.5 85.5t-49.5 64.5h-67v-150h-71v388q27 6 57 9t55 3q86 0 131 -32t45 -97q0 -37 -19.5 -64.5t-55.5 -42.5q10 -12 23 -30t27 -40l28 -46q14 -24 25 -48h-77z M417 356h38q45 0 75 12.5t30 51.5q0 37 -28.5 51.5t-68.5 14.5q-11 0 -23 -0.5t-23 -1.5v-128z" />
+<glyph unicode="´" horiz-adv-x="380" d="M476 707l-178 -127l-36 55l170 145z" />
+<glyph unicode=" " horiz-adv-x="391" />
+<glyph unicode=" " horiz-adv-x="783" />
+<glyph unicode=" " horiz-adv-x="391" />
+<glyph unicode=" " horiz-adv-x="783" />
+<glyph unicode=" " horiz-adv-x="261" />
+<glyph unicode=" " horiz-adv-x="195" />
+<glyph unicode=" " horiz-adv-x="130" />
+<glyph unicode=" " horiz-adv-x="130" />
+<glyph unicode=" " horiz-adv-x="97" />
+<glyph unicode=" " horiz-adv-x="156" />
+<glyph unicode=" " horiz-adv-x="43" />
+<glyph unicode="‐" horiz-adv-x="297" d="M106 328h242l-20 -87h-242z" />
+<glyph unicode="‑" horiz-adv-x="297" d="M106 328h242l-20 -87h-242z" />
+<glyph unicode="–" horiz-adv-x="500" d="M82 343h500l-19 -79h-500z" />
+<glyph unicode="—" horiz-adv-x="1000" d="M82 343h1000l-19 -79h-1000z" />
+<glyph unicode="‘" horiz-adv-x="239" d="M184 520q5 33 18 66t30.5 64.5t38 59.5t41.5 50l63 -26q-35 -53 -58 -104.5t-31 -109.5h-102z" />
+<glyph unicode="’" horiz-adv-x="239" d="M357 750q-5 -33 -18 -66t-30.5 -64.5t-38 -59.5t-41.5 -50l-63 26q35 53 58 104.5t31 109.5h102z" />
+<glyph unicode="‚" horiz-adv-x="239" d="M204 114q-5 -33 -18 -66t-30.5 -64.5t-38 -59.5t-41.5 -50l-63 26q35 53 58 104.5t31 109.5h102z" />
+<glyph unicode="“" horiz-adv-x="421" d="M184 520q5 33 18 66t30.5 64.5t38 59.5t41.5 50l63 -26q-35 -53 -58 -104.5t-31 -109.5h-102zM366 520q5 33 18 66t30.5 64.5t38 59.5t41.5 50l63 -26q-35 -53 -58 -104.5t-31 -109.5h-102z" />
+<glyph unicode="”" horiz-adv-x="421" d="M357 750q-5 -33 -18 -66t-30.5 -64.5t-38 -59.5t-41.5 -50l-63 26q35 53 58 104.5t31 109.5h102zM539 750q-5 -33 -18 -66t-30.5 -64.5t-38 -59.5t-41.5 -50l-63 26q35 53 58 104.5t31 109.5h102z" />
+<glyph unicode="•" horiz-adv-x="364" d="M392 353q0 -26 -9 -49t-25.5 -40t-40 -27.5t-53.5 -10.5t-53.5 10.5t-40 27.5t-25.5 40t-9 49q0 25 9 48.5t25.5 40.5t40 27.5t53.5 10.5t53.5 -10.5t40 -27.5t25.5 -40.5t9 -48.5z" />
+<glyph unicode="…" horiz-adv-x="1000" d="M172 -13q-28 0 -44 15t-16 44q0 36 21.5 55.5t49.5 19.5t44.5 -15.5t16.5 -45.5q0 -17 -6.5 -30.5t-16.5 -23t-23 -14.5t-26 -5zM505 -13q-28 0 -44 15t-16 44q0 36 21.5 55.5t49.5 19.5t44.5 -15.5t16.5 -45.5q0 -17 -6.5 -30.5t-16.5 -23t-23 -14.5t-26 -5zM838 -13 q-28 0 -44 15t-16 44q0 36 21.5 55.5t49.5 19.5t44.5 -15.5t16.5 -45.5q0 -17 -6.5 -30.5t-16.5 -23t-23 -14.5t-26 -5z" />
+<glyph unicode=" " horiz-adv-x="156" />
+<glyph unicode=" " horiz-adv-x="195" />
+<glyph unicode="€" d="M290 227v-18q0 -42 10.5 -69.5t28.5 -43.5t42.5 -22.5t52.5 -6.5q45 0 77 8.5t56 19.5l3 -79q-7 -4 -22 -9t-35.5 -9.5t-43.5 -7.5t-46 -3q-104 0 -159.5 55t-55.5 162v23h-92l17 72h80q6 50 20 101h-77l17 72h84q20 49 49.5 91.5t69 74t89.5 50t113 18.5q39 0 66.5 -6 t53.5 -17l-37 -75q-16 8 -36.5 13.5t-58.5 5.5q-39 0 -71 -12t-58.5 -32.5t-47 -49t-35.5 -61.5h237l-30 -72h-234q-8 -25 -13 -50.5t-8 -50.5h211l-30 -72h-187z" />
+<glyph unicode="™" horiz-adv-x="763" d="M413 693v-61h-105v-272h-69v272h-105v61h279zM793 693q8 -51 14 -130.5t14 -202.5h-70q-1 25 -2 53.5t-2.5 57t-3.5 56.5t-4 52q-11 -19 -24 -45l-25 -50l-24 -47q-12 -22 -18 -35h-49q-6 13 -17 35l-24 47l-26 50l-24 45q-2 -24 -4 -52t-3.5 -56.5t-2.5 -57t-2 -53.5 h-69q8 123 14 202.5t14 130.5h66l20 -41l26 -52l29 -57l28 -56l28 56l29 57l26 52l20 41h66z" />
+</font>
+</defs></svg>
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-I-webfont.ttf
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-I-webfont.ttf
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-I-webfont.woff
===================================================================
(Binary files differ)
Property changes on: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-I-webfont.woff
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-R-webfont.eot
===================================================================
(Binary files differ)
Modified: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-R-webfont.svg
===================================================================
--- trunk/src/main/java/cc/kune/wspace/public/fontface/Ubuntu-R-webfont.svg 2011-01-14 04:11:00 UTC (rev 1182)
+++ trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-R-webfont.svg 2011-01-26 21:18:00 UTC (rev 1224)
@@ -8,42 +8,52 @@
Foundry URL : httpwwwdaltonmaagcom
</metadata>
<defs>
-<font id="webfontcceGD1qN" horiz-adv-x="568" >
+<font id="webfontqoY0C4Ry" horiz-adv-x="578" >
<font-face units-per-em="1000" ascent="800" descent="-200" />
<missing-glyph horiz-adv-x="235" />
+<glyph unicode="ff" horiz-adv-x="780" d="M285 776q41 0 70.5 -6t41.5 -11l-17 -80q-12 6 -34 11.5t-54 5.5q-65 0 -91 -35.5t-26 -95.5v-45h200v-78h-200v-442h-93v567q0 100 49 154.5t154 54.5zM675 776q41 0 70.5 -6t41.5 -11l-17 -80q-12 6 -34 11.5t-54 5.5q-65 0 -91 -35.5t-26 -95.5v-45h200v-78h-200v-442 h-93v567q0 100 49 154.5t154 54.5z" />
+<glyph unicode="fi" horiz-adv-x="647" d="M285 776q35 0 60 -4.5t36 -8.5l-13 -80q-11 4 -30 8.5t-46 4.5q-65 0 -91 -35.5t-26 -95.5v-45h200v-78h-200v-442h-93v567q0 100 49 154.5t154 54.5zM565 0h-93v520h93v-520zM518 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5 t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="fl" horiz-adv-x="667" d="M285 776q35 0 60 -4.5t36 -8.5l-13 -80q-11 4 -30 8.5t-46 4.5q-65 0 -91 -35.5t-26 -95.5v-45h200v-78h-200v-442h-93v567q0 100 49 154.5t154 54.5zM628 -10q-86 2 -122 37t-36 109v624l93 16v-625q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ffi" horiz-adv-x="1037" d="M285 776q41 0 70.5 -6t41.5 -11l-17 -80q-12 6 -34 11.5t-54 5.5q-65 0 -91 -35.5t-26 -95.5v-45h200v-78h-200v-442h-93v567q0 100 49 154.5t154 54.5zM675 776q35 0 60 -4.5t36 -8.5l-13 -80q-11 4 -30 8.5t-46 4.5q-65 0 -91 -35.5t-26 -95.5v-45h200v-78h-200v-442 h-93v567q0 100 49 154.5t154 54.5zM955 0h-93v520h93v-520zM908 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="ffl" horiz-adv-x="1057" d="M285 776q41 0 70.5 -6t41.5 -11l-17 -80q-12 6 -34 11.5t-54 5.5q-65 0 -91 -35.5t-26 -95.5v-45h200v-78h-200v-442h-93v567q0 100 49 154.5t154 54.5zM675 776q35 0 60 -4.5t36 -8.5l-13 -80q-11 4 -30 8.5t-46 4.5q-65 0 -91 -35.5t-26 -95.5v-45h200v-78h-200v-442 h-93v567q0 100 49 154.5t154 54.5zM1018 -10q-86 2 -122 37t-36 109v624l93 16v-625q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="	" horiz-adv-x="235" />
+<glyph unicode="
" horiz-adv-x="235" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="0" />
<glyph unicode=" " horiz-adv-x="235" />
<glyph unicode="	" horiz-adv-x="235" />
<glyph unicode=" " horiz-adv-x="235" />
<glyph unicode="!" horiz-adv-x="280" d="M190 505q0 -84 -6 -152.5t-15 -136.5h-58q-9 68 -15 136.5t-6 152.5v188h100v-188zM207 54q0 -27 -18 -47t-49 -20t-49 20t-18 47t18 47t49 20t49 -20t18 -47z" />
<glyph unicode=""" horiz-adv-x="422" d="M171 760v-50q0 -49 -6 -102.5t-15 -106.5h-55q-9 53 -15 106.5t-6 103.5v49h97zM348 760v-50q0 -49 -6 -102.5t-15 -106.5h-55q-9 53 -15 106.5t-6 103.5v49h97z" />
<glyph unicode="#" horiz-adv-x="671" d="M286 510h162l35 183h84l-35 -183h88v-74h-103l-34 -179h137v-74h-151l-35 -183h-84l35 183h-162l-35 -183h-84l35 183h-88v74h102l34 179h-136v74h151l35 183h84zM237 257h162l35 179h-162z" />
-<glyph unicode="$" d="M264 95q77 0 108 24.5t31 62.5q0 28 -13.5 48t-36 35t-52 27t-60.5 23q-30 11 -59.5 24.5t-52.5 33t-37.5 47t-14.5 67.5q0 71 42.5 116.5t123.5 57.5v115h83v-112q44 -2 82 -11t60 -17l-19 -78q-24 9 -60 18.5t-90 9.5q-60 0 -92.5 -23t-32.5 -65q0 -23 9.5 -39 t27.5 -28.5t42.5 -22.5t54.5 -21q39 -15 74 -31t61.5 -38.5t42.5 -53.5t16 -75q0 -71 -43 -114.5t-133 -54.5v-129h-83v126q-70 2 -114 15.5t-66 25.5l25 75q30 -14 72 -26t104 -12z" />
+<glyph unicode="$" horiz-adv-x="568" d="M264 95q77 0 108 24.5t31 62.5q0 28 -13.5 48t-36 35t-52 27t-60.5 23q-30 11 -59.5 24.5t-52.5 33t-37.5 47t-14.5 67.5q0 71 42.5 116.5t123.5 57.5v115h83v-112q44 -2 82 -11t60 -17l-19 -78q-24 9 -60 18.5t-90 9.5q-60 0 -92.5 -23t-32.5 -65q0 -23 9.5 -39 t27.5 -28.5t42.5 -22.5t54.5 -21q39 -15 74 -31t61.5 -38.5t42.5 -53.5t16 -75q0 -71 -43 -114.5t-133 -54.5v-129h-83v126q-70 2 -114 15.5t-66 25.5l25 75q30 -14 72 -26t104 -12z" />
<glyph unicode="%" horiz-adv-x="862" d="M52 524q0 45 12 79t33.5 57.5t50.5 35.5t63 12t63 -12t50.5 -35.5t33.5 -57.5t12 -79t-12 -79t-33.5 -57.5t-50.5 -35.5t-63 -12t-63 12t-50.5 35.5t-33.5 57.5t-12 79zM292 524q0 54 -21 84.5t-60 30.5t-60 -30.5t-21 -84.5t21 -84.5t60 -30.5t60 30.5t21 84.5zM492 169 q0 45 12 79t33.5 57.5t50.5 35.5t63 12t63 -12t50.5 -35.5t33.5 -57.5t12 -79t-12 -79t-33.5 -57.5t-50.5 -35.5t-63 -12t-63 12t-50.5 35.5t-33.5 57.5t-12 79zM732 169q0 54 -21 84.5t-60 30.5t-60 -30.5t-21 -84.5t21 -84.5t60 -30.5t60 30.5t21 84.5zM672 693l-391 -693 h-91l391 693h91z" />
<glyph unicode="&" horiz-adv-x="670" d="M48 184q0 39 12 69.5t32.5 55t47.5 43t56 32.5q-74 74 -74 153q0 40 13.5 72t37 54t56 34t71.5 12q40 0 71.5 -12t53 -32t32.5 -48t11 -59q0 -35 -11.5 -63t-31 -51t-44.5 -42t-53 -34l162 -165q34 63 44 140l77 -10q-4 -41 -20.5 -89.5t-46.5 -96.5q35 -38 64.5 -75 t48.5 -72h-98q-12 20 -29 41l-37 42q-41 -41 -95 -66.5t-124 -25.5q-65 0 -108 18.5t-69.5 47t-37.5 62.5t-11 65zM141 186q0 -18 7 -39t23 -38.5t41.5 -29t63.5 -11.5q49 0 90.5 18t73.5 51l-195 197q-18 -9 -36.5 -21t-33.5 -29.5t-24.5 -41.5t-9.5 -56zM384 555 q0 34 -22.5 57.5t-61.5 23.5q-44 0 -67.5 -26.5t-23.5 -65.5q0 -65 68 -127q22 11 41.5 24t34 30t23 37.5t8.5 46.5z" />
<glyph unicode="'" horiz-adv-x="245" d="M171 760v-50q0 -49 -6 -102.5t-15 -106.5h-55q-9 53 -15 106.5t-6 103.5v49h97z" />
<glyph unicode="(" horiz-adv-x="328" d="M173 299q0 -128 37 -237t109 -202l-66 -45q-78 95 -125.5 218.5t-47.5 265.5t47.5 265.5t125.5 218.5l66 -45q-72 -93 -109 -202t-37 -237z" />
<glyph unicode=")" horiz-adv-x="328" d="M155 299q0 128 -37 237t-109 202l66 45q78 -95 125.5 -218.5t47.5 -265.5t-47.5 -265.5t-125.5 -218.5l-66 45q72 93 109 202t37 237z" />
<glyph unicode="*" horiz-adv-x="484" d="M287 685q0 -42 -7 -81l-16 -79l71 39q35 19 76 33l6 2l28 -84l-8 -3q-40 -15 -80 -19.5t-82 -7.5l62 -55q29 -26 54 -61l5 -7l-73 -51l-4 6q-24 36 -41 71l-36 74l-36 -74q-17 -35 -41 -71l-4 -6l-73 51l5 7q25 35 54 61l62 55q-42 3 -82 7.5t-80 19.5l-8 3l28 84l6 -2 q41 -14 76 -33l71 -39l-16 79q-7 39 -7 81v8h90v-8z" />
-<glyph unicode="+" d="M55 334h189v206h80v-206h189v-79h-189v-207h-80v207h-189v79z" />
+<glyph unicode="+" horiz-adv-x="568" d="M55 334h189v206h80v-206h189v-79h-189v-207h-80v207h-189v79z" />
<glyph unicode="," horiz-adv-x="250" d="M180 114q1 -8 1 -16v-15q0 -63 -18.5 -124.5t-50.5 -117.5l-72 23q25 51 33 103.5t8 98.5q0 13 -0.5 25t-1.5 23h101z" />
<glyph unicode="-" horiz-adv-x="303" d="M28 328h247v-87h-247v87z" />
<glyph unicode="." horiz-adv-x="250" d="M192 54q0 -27 -18 -47t-49 -20t-49 20t-18 47t18 47t49 20t49 -20t18 -47z" />
<glyph unicode="/" horiz-adv-x="388" d="M73 -185h-95l339 968h93z" />
-<glyph unicode="0" d="M52 347q0 174 61.5 268t170.5 94t170.5 -94t61.5 -268t-61.5 -268t-170.5 -94t-170.5 94t-61.5 268zM418 347q0 57 -6.5 108t-22 89t-41.5 60.5t-64 22.5t-64 -22.5t-41.5 -60.5t-22 -89t-6.5 -108t6.5 -108t22 -89t41.5 -60.5t64 -22.5t64 22.5t41.5 60.5t22 89t6.5 108 z" />
-<glyph unicode="1" d="M95 550q57 22 111 56.5t99 86.5h66v-693h-93v564q-12 -11 -29.5 -23t-38 -23t-43 -21t-43.5 -17z" />
-<glyph unicode="2" d="M469 516q0 -36 -14.5 -69.5t-38.5 -66t-54 -64.5l-60 -61l-40 -40q-22 -23 -42 -48t-33.5 -48t-13.5 -40h319v-79h-420q-1 6 -1 12v11q0 47 15.5 87.5t40.5 76.5t56 68l61 62l48 47q22 24 39.5 47.5t28 48.5t10.5 53q0 30 -9.5 51t-25.5 35t-37.5 20.5t-45.5 6.5 q-29 0 -53 -8t-43 -18.5t-32 -21.5l-20 -18l-46 66q9 10 27 24.5t43 27.5t56 22t67 9q109 0 163.5 -50.5t54.5 -142.5z" />
-<glyph unicode="3" d="M228 68q89 0 127.5 35t38.5 94q0 38 -16 64t-42 41.5t-60.5 22t-70.5 6.5h-24v76h33q25 0 51.5 5t48.5 18t36 35.5t14 56.5q0 28 -10 48t-26.5 33t-38 18.5t-45.5 5.5q-48 0 -81.5 -14t-56.5 -29l-36 71q12 8 30.5 17.5t41.5 17.5t49.5 13.5t55.5 5.5q55 0 95 -13.5 t66 -38t39 -58t13 -72.5q0 -54 -31 -92.5t-75 -58.5q27 -8 52 -23t43.5 -38t30 -53t11.5 -67q0 -45 -15.5 -83.5t-48 -66.5t-81.5 -44t-116 -16q-26 0 -53.5 4t-51.5 10t-42 12t-26 10l18 81q17 -8 56.5 -21t96.5 -13z" />
-<glyph unicode="4" d="M42 240q19 44 52 102.5t74.5 120.5t89 122t95.5 108h89v-440h82v-76h-82v-177h-90v177h-310v63zM352 583q-30 -32 -60.5 -71.5t-59.5 -82.5t-54.5 -88t-45.5 -88h220v330z" />
-<glyph unicode="5" d="M201 426q151 -6 221.5 -66t70.5 -163q0 -46 -15.5 -85t-47 -67t-79.5 -44t-114 -16q-26 0 -53 4t-50 10t-41 12t-26 10l18 81q17 -8 55.5 -21t94.5 -13q45 0 75.5 10t49.5 27t27.5 39.5t8.5 47.5q0 38 -13 67.5t-46 49.5t-88 30.5t-139 10.5q6 49 9.5 92t6.5 84t5 81.5 t4 85.5h334v-79h-253q-1 -15 -3 -40l-4 -54l-4 -53q-2 -26 -4 -41z" />
-<glyph unicode="6" d="M65 278q0 101 28 178.5t79.5 130.5t125 80.5t165.5 28.5l7 -78q-59 -1 -107.5 -13t-86.5 -38t-64 -67.5t-39 -102.5q26 12 58.5 20t67.5 8q59 0 100 -18t67 -47.5t37.5 -68t11.5 -80.5q0 -38 -13 -78t-39.5 -73t-67.5 -54t-97 -21q-114 0 -173.5 78t-59.5 215zM289 349 q-35 0 -65 -6.5t-60 -19.5q-1 -11 -1.5 -22.5t-0.5 -22.5q0 -44 6 -83t21.5 -68.5t41.5 -47t66 -17.5q33 0 56 14t38 36t21.5 47.5t6.5 49.5q0 68 -32.5 104t-97.5 36z" />
-<glyph unicode="7" d="M165 0q6 80 28.5 168.5t55.5 172t72.5 155t77.5 116.5h-337v81h441v-77q-33 -38 -73 -104.5t-75.5 -149t-61 -176t-31.5 -186.5h-97z" />
-<glyph unicode="8" d="M511 180q0 -42 -14.5 -77.5t-43 -62t-71.5 -41t-99 -14.5q-65 0 -108.5 18.5t-69.5 46.5t-37 61.5t-11 63.5q0 29 9.5 55.5t25 49.5t36 41.5t43.5 32.5q-98 56 -98 165q0 38 15 72.5t42.5 60.5t66.5 41.5t87 15.5q56 0 96 -17t65.5 -43.5t37 -58.5t11.5 -62 q0 -29 -8.5 -54.5t-23 -47.5t-33 -39t-38.5 -30q118 -56 120 -177zM151 174q0 -18 6.5 -37.5t22.5 -36t41 -27.5t63 -11q34 0 59.5 10t41.5 25.5t24 35.5t8 41q0 32 -12 56t-34.5 42t-54 30.5t-71.5 21.5q-45 -25 -69.5 -62t-24.5 -88zM401 529q0 15 -6.5 33t-20.5 33.5 t-36 26t-54 10.5t-54.5 -10t-36.5 -25.5t-20.5 -34t-6.5 -36.5q0 -22 8 -44t25 -41t44.5 -34t65.5 -24q42 25 67 58.5t25 87.5z" />
-<glyph unicode="9" d="M503 416q0 -206 -102.5 -311.5t-304.5 -106.5l-3 78q63 0 113.5 12t88.5 38.5t63.5 68.5t37.5 103q-26 -12 -59 -19.5t-68 -7.5q-59 0 -100 17.5t-67 47t-37.5 68t-11.5 80.5q0 37 13 77t39.5 73t67.5 54t97 21q57 0 100.5 -20t73 -58t44.5 -92.5t15 -122.5zM279 347 q35 0 66 6.5t60 19.5q1 11 1 21v22q0 43 -6 82.5t-21.5 69t-41.5 47t-66 17.5q-33 0 -56 -14t-38 -35.5t-21.5 -47t-6.5 -49.5q0 -68 32.5 -103.5t97.5 -35.5z" />
+<glyph unicode="0" horiz-adv-x="568" d="M52 347q0 174 61.5 268t170.5 94t170.5 -94t61.5 -268t-61.5 -268t-170.5 -94t-170.5 94t-61.5 268zM418 347q0 57 -6.5 108t-22 89t-41.5 60.5t-64 22.5t-64 -22.5t-41.5 -60.5t-22 -89t-6.5 -108t6.5 -108t22 -89t41.5 -60.5t64 -22.5t64 22.5t41.5 60.5t22 89t6.5 108 z" />
+<glyph unicode="1" horiz-adv-x="568" d="M95 550q57 22 111 56.5t99 86.5h66v-693h-93v564q-12 -11 -29.5 -23t-38 -23t-43 -21t-43.5 -17z" />
+<glyph unicode="2" horiz-adv-x="568" d="M469 516q0 -36 -14.5 -69.5t-38.5 -66t-54 -64.5l-60 -61l-40 -40q-22 -23 -42 -48t-33.5 -48t-13.5 -40h319v-79h-420q-1 6 -1 12v11q0 47 15.5 87.5t40.5 76.5t56 68l61 62l48 47q22 24 39.5 47.5t28 48.5t10.5 53q0 30 -9.5 51t-25.5 35t-37.5 20.5t-45.5 6.5 q-29 0 -53 -8t-43 -18.5t-32 -21.5l-20 -18l-46 66q9 10 27 24.5t43 27.5t56 22t67 9q109 0 163.5 -50.5t54.5 -142.5z" />
+<glyph unicode="3" horiz-adv-x="568" d="M228 68q89 0 127.5 35t38.5 94q0 38 -16 64t-42 41.5t-60.5 22t-70.5 6.5h-24v76h33q25 0 51.5 5t48.5 18t36 35.5t14 56.5q0 28 -10 48t-26.5 33t-38 18.5t-45.5 5.5q-48 0 -81.5 -14t-56.5 -29l-36 71q12 8 30.5 17.5t41.5 17.5t49.5 13.5t55.5 5.5q55 0 95 -13.5 t66 -38t39 -58t13 -72.5q0 -54 -31 -92.5t-75 -58.5q27 -8 52 -23t43.5 -38t30 -53t11.5 -67q0 -45 -15.5 -83.5t-48 -66.5t-81.5 -44t-116 -16q-26 0 -53.5 4t-51.5 10t-42 12t-26 10l18 81q17 -8 56.5 -21t96.5 -13z" />
+<glyph unicode="4" horiz-adv-x="568" d="M42 240q19 44 52 102.5t74.5 120.5t89 122t95.5 108h89v-440h82v-76h-82v-177h-90v177h-310v63zM352 583q-30 -32 -60.5 -71.5t-59.5 -82.5t-54.5 -88t-45.5 -88h220v330z" />
+<glyph unicode="5" horiz-adv-x="568" d="M201 426q151 -6 221.5 -66t70.5 -163q0 -46 -15.5 -85t-47 -67t-79.5 -44t-114 -16q-26 0 -53 4t-50 10t-41 12t-26 10l18 81q17 -8 55.5 -21t94.5 -13q45 0 75.5 10t49.5 27t27.5 39.5t8.5 47.5q0 38 -13 67.5t-46 49.5t-88 30.5t-139 10.5q6 49 9.5 92t6.5 84t5 81.5 t4 85.5h334v-79h-253q-1 -15 -3 -40l-4 -54l-4 -53q-2 -26 -4 -41z" />
+<glyph unicode="6" horiz-adv-x="568" d="M65 278q0 101 28 178.5t79.5 130.5t125 80.5t165.5 28.5l7 -78q-59 -1 -107.5 -13t-86.5 -38t-64 -67.5t-39 -102.5q26 12 58.5 20t67.5 8q59 0 100 -18t67 -47.5t37.5 -68t11.5 -80.5q0 -38 -13 -78t-39.5 -73t-67.5 -54t-97 -21q-114 0 -173.5 78t-59.5 215zM289 349 q-35 0 -65 -6.5t-60 -19.5q-1 -11 -1.5 -22.5t-0.5 -22.5q0 -44 6 -83t21.5 -68.5t41.5 -47t66 -17.5q33 0 56 14t38 36t21.5 47.5t6.5 49.5q0 68 -32.5 104t-97.5 36z" />
+<glyph unicode="7" horiz-adv-x="568" d="M165 0q6 80 28.5 168.5t55.5 172t72.5 155t77.5 116.5h-337v81h441v-77q-33 -38 -73 -104.5t-75.5 -149t-61 -176t-31.5 -186.5h-97z" />
+<glyph unicode="8" horiz-adv-x="568" d="M511 180q0 -42 -14.5 -77.5t-43 -62t-71.5 -41t-99 -14.5q-65 0 -108.5 18.5t-69.5 46.5t-37 61.5t-11 63.5q0 29 9.5 55.5t25 49.5t36 41.5t43.5 32.5q-98 56 -98 165q0 38 15 72.5t42.5 60.5t66.5 41.5t87 15.5q56 0 96 -17t65.5 -43.5t37 -58.5t11.5 -62 q0 -29 -8.5 -54.5t-23 -47.5t-33 -39t-38.5 -30q118 -56 120 -177zM151 174q0 -18 6.5 -37.5t22.5 -36t41 -27.5t63 -11q34 0 59.5 10t41.5 25.5t24 35.5t8 41q0 32 -12 56t-34.5 42t-54 30.5t-71.5 21.5q-45 -25 -69.5 -62t-24.5 -88zM401 529q0 15 -6.5 33t-20.5 33.5 t-36 26t-54 10.5t-54.5 -10t-36.5 -25.5t-20.5 -34t-6.5 -36.5q0 -22 8 -44t25 -41t44.5 -34t65.5 -24q42 25 67 58.5t25 87.5z" />
+<glyph unicode="9" horiz-adv-x="568" d="M503 416q0 -206 -102.5 -311.5t-304.5 -106.5l-3 78q63 0 113.5 12t88.5 38.5t63.5 68.5t37.5 103q-26 -12 -59 -19.5t-68 -7.5q-59 0 -100 17.5t-67 47t-37.5 68t-11.5 80.5q0 37 13 77t39.5 73t67.5 54t97 21q57 0 100.5 -20t73 -58t44.5 -92.5t15 -122.5zM279 347 q35 0 66 6.5t60 19.5q1 11 1 21v22q0 43 -6 82.5t-21.5 69t-41.5 47t-66 17.5q-33 0 -56 -14t-38 -35.5t-21.5 -47t-6.5 -49.5q0 -68 32.5 -103.5t97.5 -35.5z" />
<glyph unicode=":" horiz-adv-x="250" d="M192 54q0 -27 -18 -47t-49 -20t-49 20t-18 47t18 47t49 20t49 -20t18 -47zM192 453q0 -27 -18 -47t-49 -20t-49 20t-18 47t18 47t49 20t49 -20t18 -47z" />
<glyph unicode=";" horiz-adv-x="250" d="M180 114q1 -8 1 -16v-15q0 -63 -18.5 -124.5t-50.5 -117.5l-72 23q25 51 33 103.5t8 98.5q0 13 -0.5 25t-1.5 23h101zM192 453q0 -27 -18 -47t-49 -20t-49 20t-18 47t18 47t49 20t49 -20t18 -47z" />
-<glyph unicode="<" d="M158 294l355 -146l-26 -77l-432 183v80l432 183l26 -77z" />
-<glyph unicode="=" d="M55 227h458v-79h-458v79zM55 440h458v-79h-458v79z" />
-<glyph unicode=">" d="M55 440l26 77l432 -183v-80l-432 -183l-26 77l355 146z" />
+<glyph unicode="<" horiz-adv-x="568" d="M158 294l355 -146l-26 -77l-432 183v80l432 183l26 -77z" />
+<glyph unicode="=" horiz-adv-x="568" d="M55 227h458v-79h-458v79zM55 440h458v-79h-458v79z" />
+<glyph unicode=">" horiz-adv-x="568" d="M55 440l26 77l432 -183v-80l-432 -183l-26 77l355 146z" />
<glyph unicode="?" horiz-adv-x="408" d="M176 631q-66 0 -129 -34l-26 72q34 18 76.5 29t90.5 11q57 0 93.5 -15.5t58.5 -39.5t30.5 -53.5t8.5 -56.5q0 -34 -13 -60.5t-32 -49.5t-42 -44t-42 -43.5t-32 -49t-13 -59.5v-11q0 -6 1 -11h-78q-4 20 -4 42q0 32 11.5 58t29.5 48.5t38 42t38 39.5t29.5 42t11.5 48 q0 42 -27 68.5t-79 26.5zM239 54q0 -27 -18 -47t-49 -20t-49 20t-18 47t18 47t49 20t49 -20t18 -47z" />
<glyph unicode="@" horiz-adv-x="954" d="M692 43q-32 0 -53 9t-35 24q-22 -12 -53 -20.5t-62 -8.5q-48 0 -87.5 15t-68.5 44.5t-45 72.5t-16 100q0 48 15 90.5t44.5 74t72 49.5t96.5 18q51 0 93.5 -8t65.5 -16v-306q0 -32 11 -45t29 -13q26 0 45.5 18t32 47t18.5 65.5t6 74.5q0 63 -22 118.5t-63 97.5t-99.5 66 t-131.5 24t-134 -24.5t-105 -70t-68.5 -111.5t-24.5 -150q0 -88 26 -154.5t72.5 -111t110 -67t139.5 -22.5q59 0 97.5 7t49.5 11l10 -74q-17 -6 -61.5 -13t-95.5 -7q-89 0 -168 25.5t-138 78t-93.5 134t-34.5 193.5q0 108 34 189t91.5 134.5t133 80.5t159.5 27 q82 0 155 -26.5t128 -77t87 -122t32 -161.5q0 -68 -15.5 -120t-41.5 -87.5t-62 -53.5t-76 -18zM492 124q21 0 42.5 4.5t38.5 13.5q-3 13 -4 26t-1 25v235q-6 2 -23 4t-38 2q-71 0 -106 -44t-35 -111q0 -71 34 -113t92 -42z" />
<glyph unicode="A" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258z" />
@@ -75,7 +85,7 @@
<glyph unicode="[" horiz-adv-x="333" d="M98 783h225v-73h-138v-822h138v-73h-225v968z" />
<glyph unicode="\" horiz-adv-x="388" d="M-22 783h93l339 -968h-95z" />
<glyph unicode="]" horiz-adv-x="333" d="M235 -185h-225v73h138v822h-138v73h225v-968z" />
-<glyph unicode="^" d="M325 693l194 -340l-74 -38l-161 282l-161 -282l-74 38l194 340h82z" />
+<glyph unicode="^" horiz-adv-x="568" d="M325 693l194 -340l-74 -38l-161 282l-161 -282l-74 38l194 340h82z" />
<glyph unicode="_" horiz-adv-x="496" d="M-2 -106h500v-79h-500v79z" />
<glyph unicode="`" horiz-adv-x="380" d="M102 776l166 -144l-40 -52l-179 127z" />
<glyph unicode="a" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5z" />
@@ -91,14 +101,14 @@
<glyph unicode="k" horiz-adv-x="526" d="M270 286q30 -23 63.5 -57t66 -73.5t61.5 -80t49 -75.5h-109q-21 35 -48.5 71.5t-57.5 70t-61 61.5t-59 47v-250h-93v760l93 16v-474l53 53l57 59l53 58l43 48h109l-50 -55l-56 -61l-58 -60z" />
<glyph unicode="l" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v624l93 16v-625q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
<glyph unicode="m" horiz-adv-x="865" d="M82 505q32 8 84.5 17t121.5 9q50 0 84 -13.5t57 -39.5q7 5 22 14t37 17.5t49 15t58 6.5q60 0 98 -17.5t59.5 -49.5t29 -76t7.5 -96v-292h-93v272q0 46 -4.5 79t-17 55t-34 32.5t-55.5 10.5q-47 0 -77.5 -12.5t-41.5 -22.5q8 -26 12 -57t4 -65v-292h-93v272q0 46 -5 79 t-17.5 55t-34 32.5t-54.5 10.5q-14 0 -30 -1t-30.5 -2.5t-26.5 -3.5t-16 -3v-439h-93v505z" />
-<glyph unicode="n" horiz-adv-x="578" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292h-93v272q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505z" />
+<glyph unicode="n" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292h-93v272q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505z" />
<glyph unicode="o" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5z" />
<glyph unicode="p" horiz-adv-x="593" d="M443 259q0 91 -45 140t-120 49q-42 0 -65.5 -3t-37.5 -7v-328q17 -14 49 -27t70 -13q40 0 68.5 14.5t46.5 40t26 60t8 74.5zM540 259q0 -59 -15.5 -109t-45.5 -86t-73.5 -56t-99.5 -20q-45 0 -79.5 12t-51.5 23v-208h-93v689q33 8 82.5 17.5t114.5 9.5q60 0 108 -19 t82 -54t52.5 -85.5t18.5 -113.5z" />
<glyph unicode="q" horiz-adv-x="593" d="M150 259q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5q38 0 70 13t49 27v328q-14 4 -37.5 7t-65.5 3q-75 0 -120 -49t-45 -140zM53 259q0 63 18.5 113.5t52.5 85.5t82 54t108 19q65 0 114.5 -9.5t82.5 -17.5v-689h-93v208q-17 -11 -51.5 -23t-79.5 -12q-56 0 -99.5 20 t-73.5 56t-45.5 86t-15.5 109z" />
<glyph unicode="r" horiz-adv-x="390" d="M274 531q12 0 27.5 -1.5t30.5 -4t27.5 -5t18.5 -4.5l-16 -81q-11 4 -36.5 9.5t-65.5 5.5q-26 0 -51.5 -5.5t-33.5 -7.5v-437h-93v498q33 12 82 22.5t110 10.5z" />
<glyph unicode="s" horiz-adv-x="450" d="M203 67q57 0 84.5 15t27.5 48q0 34 -27 54t-89 45q-30 12 -57.5 24.5t-47.5 29.5t-32 41t-12 59q0 69 51 109.5t139 40.5q22 0 44 -2.5t41 -6t33.5 -7.5t22.5 -7l-17 -80q-15 8 -47 16.5t-77 8.5q-39 0 -68 -15.5t-29 -48.5q0 -17 6.5 -30t20 -23.5t33.5 -19.5t48 -19 q37 -14 66 -27.5t49.5 -31.5t31.5 -43.5t11 -62.5q0 -72 -53.5 -109t-152.5 -37q-69 0 -108 11.5t-53 17.5l17 80q16 -6 51 -18t93 -12z" />
<glyph unicode="t" horiz-adv-x="406" d="M169 520h197v-78h-197v-240q0 -39 6 -64.5t18 -40t30 -20.5t42 -6q42 0 67.5 9.5t35.5 13.5l18 -77q-14 -7 -49 -17.5t-80 -10.5q-53 0 -87.5 13.5t-55.5 40.5t-29.5 66.5t-8.5 91.5v464l93 16v-161z" />
-<glyph unicode="u" horiz-adv-x="578" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505z" />
+<glyph unicode="u" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505z" />
<glyph unicode="v" horiz-adv-x="506" d="M488 520q-39 -146 -91.5 -280t-101.5 -240h-84q-49 106 -101.5 240t-91.5 280h100q12 -49 28.5 -104.5t35.5 -109.5l37 -106q19 -51 36 -91q17 40 36 91l37 106q19 54 35.5 109.5t28.5 104.5h96z" />
<glyph unicode="w" horiz-adv-x="781" d="M507 0q-28 72 -59.5 164.5t-57.5 192.5q-26 -100 -57 -192.5t-59 -164.5h-81q-46 103 -90 235t-83 285h100q10 -47 24 -102t29.5 -110t32.5 -106t32 -89q17 47 33.5 99.5t31.5 105.5l29 106q13 51 23 96h77q9 -45 22 -96.5t28 -105t31.5 -106t33.5 -99.5q15 38 31.5 89 t32.5 106t30 110t24 102h96q-39 -153 -83 -285t-90 -235h-81z" />
<glyph unicode="x" horiz-adv-x="515" d="M393 0q-11 22 -27 49t-35 55l-39 57l-39 53l-39 -54l-38 -56l-35 -56q-16 -27 -27 -48h-96q35 68 84 138l96 135l-172 247h105l124 -182l125 182h99l-168 -241l99 -137q50 -73 85 -142h-102z" />
@@ -107,38 +117,1156 @@
<glyph unicode="{" horiz-adv-x="337" d="M42 335q24 0 41 8.5t28.5 22t17 31t5.5 35.5v180q0 41 9 73t31 53.5t58.5 33t90.5 11.5h4v-73q-57 0 -81.5 -20.5t-24.5 -78.5v-154q0 -66 -17.5 -102t-49.5 -56q32 -20 49.5 -56t17.5 -102v-154q0 -58 24.5 -78.5t81.5 -20.5v-73h-4q-54 0 -90.5 11t-58.5 33t-31 54 t-9 73v180q0 18 -5.5 35.5t-17 31t-28.5 22t-41 8.5v72z" />
<glyph unicode="|" horiz-adv-x="283" d="M98 783h87v-968h-87v968z" />
<glyph unicode="}" horiz-adv-x="337" d="M295 263q-24 0 -41 -8.5t-28.5 -22t-17 -31t-5.5 -35.5v-180q0 -41 -9 -73t-31 -54t-58.5 -33t-90.5 -11h-4v73q57 0 81.5 20.5t24.5 78.5v154q0 66 17.5 102t49.5 56q-32 20 -49.5 56t-17.5 102v154q0 58 -24.5 78.5t-81.5 20.5v73h4q54 0 90.5 -11.5t58.5 -33t31 -53.5 t9 -73v-180q0 -18 5.5 -35.5t17 -31t28.5 -22t41 -8.5v-72z" />
-<glyph unicode="~" d="M522 352q-4 -20 -12.5 -44t-24.5 -45.5t-40.5 -36t-59.5 -14.5q-30 0 -55.5 12t-48.5 26l-52 32q-25 15 -53 15q-16 0 -27 -7.5t-19 -19t-13 -25t-9 -26.5l-64 18q4 19 13 43.5t24.5 46t40 36t59.5 14.5q30 0 55.5 -12t48.5 -26l52 -31q25 -16 53 -16q16 0 27 7.5t19 19 t13 25t9 26.5z" />
-<glyph unicode="¢" d="M88 291q0 49 13.5 92t38 77t60.5 57t81 32v144h83v-139q58 -3 110 -23l-21 -77q-21 9 -48.5 15t-58.5 6q-78 0 -119.5 -47t-41.5 -137q0 -40 9.5 -73.5t30 -57.5t52.5 -37t78 -13q37 0 67 7t47 14l13 -76q-14 -8 -48 -15.5t-70 -9.5v-139h-83v144q-48 9 -84 31.5t-60 56 t-36.5 76.5t-12.5 92z" />
-<glyph unicode="£" d="M248 373h189v-75h-189v-8q0 -50 -4 -105t-12 -105h289v-80h-394q11 71 19.5 141.5t8.5 141.5v15h-93v75h93v83q0 74 15.5 122.5t44 77t68.5 39.5t88 11q44 0 74 -8t58 -19l-23 -80q-53 25 -113 25q-27 0 -49 -8t-37.5 -27t-24 -51t-8.5 -80v-85z" />
-<glyph unicode="¥" d="M239 0v106h-162v71h162v102h-162v71h136l-103 174l-91 169h103q36 -78 78 -156t87 -150q44 72 85 150l77 156h101l-92 -169q-49 -87 -103 -174h137v-71h-162v-102h162v-71h-162v-106h-91z" />
+<glyph unicode="~" horiz-adv-x="568" d="M522 352q-4 -20 -12.5 -44t-24.5 -45.5t-40.5 -36t-59.5 -14.5q-30 0 -55.5 12t-48.5 26l-52 32q-25 15 -53 15q-16 0 -27 -7.5t-19 -19t-13 -25t-9 -26.5l-64 18q4 19 13 43.5t24.5 46t40 36t59.5 14.5q30 0 55.5 -12t48.5 -26l52 -31q25 -16 53 -16q16 0 27 7.5t19 19 t13 25t9 26.5z" />
+<glyph unicode="¡" horiz-adv-x="280" d="M90 2q0 84 6 152.5t15 136.5h58q9 -68 15 -136.5t6 -152.5v-187h-100v187zM73 453q0 27 18 47t49 20t49 -20t18 -47t-18 -47t-49 -20t-49 20t-18 47z" />
+<glyph unicode="¢" horiz-adv-x="568" d="M88 291q0 49 13.5 92t38 77t60.5 57t81 32v144h83v-139q58 -3 110 -23l-21 -77q-21 9 -48.5 15t-58.5 6q-78 0 -119.5 -47t-41.5 -137q0 -40 9.5 -73.5t30 -57.5t52.5 -37t78 -13q37 0 67 7t47 14l13 -76q-14 -8 -48 -15.5t-70 -9.5v-139h-83v144q-48 9 -84 31.5t-60 56 t-36.5 76.5t-12.5 92z" />
+<glyph unicode="£" horiz-adv-x="568" d="M248 373h189v-75h-189v-8q0 -50 -4 -105t-12 -105h289v-80h-394q11 71 19.5 141.5t8.5 141.5v15h-93v75h93v83q0 74 15.5 122.5t44 77t68.5 39.5t88 11q44 0 74 -8t58 -19l-23 -80q-53 25 -113 25q-27 0 -49 -8t-37.5 -27t-24 -51t-8.5 -80v-85z" />
+<glyph unicode="¤" horiz-adv-x="568" d="M91 347q0 61 28 106l-73 74l58 58l74 -75q47 29 106 29t105 -29l75 75l58 -58l-74 -74q14 -22 21.5 -48.5t7.5 -57.5q0 -32 -7.5 -58t-21.5 -48l74 -74l-58 -58l-75 74q-48 -28 -105 -28q-29 0 -56 7t-50 21l-74 -74l-58 58l73 73q-28 45 -28 107zM402 347q0 28 -9.5 51 t-25.5 39.5t-37.5 25t-45.5 8.5t-45.5 -8.5t-37.5 -25t-25.5 -39.5t-9.5 -51q0 -29 9.5 -51.5t25.5 -39t37.5 -25t45.5 -8.5t45.5 8.5t37.5 25t25.5 39t9.5 51.5z" />
+<glyph unicode="¥" horiz-adv-x="568" d="M239 0v106h-162v71h162v102h-162v71h136l-103 174l-91 169h103q36 -78 78 -156t87 -150q44 72 85 150l77 156h101l-92 -169q-49 -87 -103 -174h137v-71h-162v-102h162v-71h-162v-106h-91z" />
+<glyph unicode="¦" horiz-adv-x="283" d="M98 198h87v-383h-87v383zM98 783h87v-383h-87v383z" />
+<glyph unicode="§" horiz-adv-x="496" d="M70 -1q30 -13 66 -22t92 -9t84.5 16.5t28.5 52.5q0 35 -27 54.5t-91 41.5q-36 12 -68.5 26t-57 34t-38.5 48t-14 68q0 26 8.5 48.5t21 41t28.5 32t31 22.5q-25 20 -39.5 46t-14.5 60q0 69 48.5 109.5t136.5 40.5q51 0 95 -10t70 -18l-21 -77q-24 9 -58.5 19t-86.5 10 q-39 0 -67.5 -16.5t-28.5 -49.5q0 -18 6 -30.5t19 -23t33 -19.5t48 -18q36 -12 68.5 -26t57 -34t38.5 -48t14 -68q0 -25 -8 -47t-20 -40t-27.5 -32.5t-30.5 -23.5q29 -21 47 -49t18 -65q0 -75 -53 -113.5t-151 -38.5q-67 0 -110.5 10.5t-69.5 23.5zM222 408q-7 2 -13.5 4.5 t-13.5 5.5q-29 -19 -47 -44.5t-18 -55.5q0 -26 11.5 -43.5t32 -31t48.5 -24t61 -21.5q5 -2 9.5 -3.5t9.5 -3.5q29 19 47 44t18 56q0 26 -11.5 43.5t-31.5 30.5t-46 23t-56 20z" />
+<glyph unicode="¨" horiz-adv-x="380" d="M95 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM285 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
<glyph unicode="©" horiz-adv-x="818" d="M751 347q0 -85 -28 -152.5t-75 -114t-109 -71t-130 -24.5t-130 24.5t-109 71t-75 114t-28 152.5t28 152.5t75 114t109 71t130 24.5t130 -24.5t109 -71t75 -114t28 -152.5zM678 347q0 66 -20 120.5t-55.5 93.5t-85 60t-108.5 21t-108.5 -21t-85 -60t-55.5 -93.5 t-20 -120.5t20 -120.5t55.5 -93.5t85 -60t108.5 -21t108.5 21t85 60t55.5 93.5t20 120.5zM421 140q-43 0 -78 14t-60.5 40t-39.5 64.5t-14 88.5q0 49 15.5 87t41.5 64.5t61 40.5t74 14q26 0 47.5 -4t37.5 -9.5t26.5 -11t14.5 -8.5l-23 -60q-12 7 -38.5 16.5t-61.5 9.5 q-51 0 -85 -35.5t-34 -103.5q0 -62 31 -101.5t91 -39.5q39 0 64.5 8.5t39.5 15.5l19 -60q-5 -3 -16.5 -8.5t-28.5 -10t-38.5 -8t-45.5 -3.5z" />
+<glyph unicode="ª" horiz-adv-x="393" d="M198 391q22 0 44 1t27 3v100q-11 2 -28 3t-33 1q-17 0 -34.5 -2t-31.5 -8t-23 -16.5t-9 -26.5q0 -30 23.5 -42.5t64.5 -12.5zM191 706q41 0 69 -10t45.5 -28t25 -43.5t7.5 -57.5v-224q-24 -5 -65 -9.5t-82 -4.5q-33 0 -60.5 6.5t-47.5 20.5t-31.5 36t-11.5 54q0 31 13 53 t35 35.5t51 19.5t61 6q14 0 31 -1t38 -4v3q0 15 -3 30t-12 26.5t-25 19t-42 7.5q-23 0 -50.5 -3t-47.5 -10l-10 63q19 5 49.5 10t62.5 5z" />
+<glyph unicode="«" horiz-adv-x="503" d="M32 284l156 221l65 -35l-111 -186l111 -186l-65 -35zM240 284l156 221l65 -35l-111 -186l111 -186l-65 -35z" />
+<glyph unicode="¬" horiz-adv-x="568" d="M513 389v-341h-80v262h-378v79h458z" />
<glyph unicode="­" horiz-adv-x="303" d="M28 328h247v-87h-247v87z" />
<glyph unicode="®" horiz-adv-x="818" d="M751 347q0 -85 -28 -152.5t-75 -114t-109 -71t-130 -24.5t-130 24.5t-109 71t-75 114t-28 152.5t28 152.5t75 114t109 71t130 24.5t130 -24.5t109 -71t75 -114t28 -152.5zM678 347q0 66 -20 120.5t-55.5 93.5t-85 60t-108.5 21t-108.5 -21t-85 -60t-55.5 -93.5 t-20 -120.5t20 -120.5t55.5 -93.5t85 -60t108.5 -21t108.5 21t85 60t55.5 93.5t20 120.5zM508 148q-23 45 -51.5 85.5t-49.5 64.5h-67v-150h-71v388q27 6 57 9t55 3q86 0 131 -32t45 -97q0 -37 -19.5 -64.5t-55.5 -42.5q10 -12 23 -30t27 -40l28 -46q14 -24 25 -48h-77z M340 356h38q45 0 75 12.5t30 51.5q0 37 -28.5 51.5t-68.5 14.5q-11 0 -23 -0.5t-23 -1.5v-128z" />
+<glyph unicode="¯" horiz-adv-x="380" d="M48 711h284v-72h-284v72z" />
+<glyph unicode="°" horiz-adv-x="336" d="M308 637q0 -32 -11.5 -58t-30.5 -44t-44.5 -27.5t-53.5 -9.5t-53.5 9.5t-44.5 27.5t-30.5 44t-11.5 58t11.5 58t30.5 44t44.5 27.5t53.5 9.5t53.5 -9.5t44.5 -27.5t30.5 -44t11.5 -58zM241 637q0 35 -21.5 55.5t-51.5 20.5t-51.5 -20.5t-21.5 -55.5t21.5 -55.5 t51.5 -20.5t51.5 20.5t21.5 55.5z" />
+<glyph unicode="±" horiz-adv-x="568" d="M55 419h189v201h80v-201h189v-79h-189v-201h-80v201h-189v79zM55 79h458v-79h-458v79z" />
+<glyph unicode="²" horiz-adv-x="363" d="M298 598q0 -21 -9.5 -41t-25.5 -39.5t-37 -39.5l-45 -40q-17 -14 -33.5 -30.5t-19.5 -29.5h186v-63h-266q-1 9 -1 18q0 22 5 41q8 25 22.5 46t33.5 38l40 36q34 29 55.5 53.5t21.5 48.5q0 26 -16.5 38t-45.5 12q-17 0 -32 -4.5t-27 -11t-21.5 -13t-14.5 -10.5l-36 49 q17 18 51.5 35.5t79.5 17.5q69 0 102 -29t33 -82z" />
+<glyph unicode="³" horiz-adv-x="363" d="M146 369q53 0 73 16.5t20 42.5q0 17 -9 29t-24.5 19.5t-35.5 11t-41 3.5h-19v57h25q14 0 29.5 2.5t28 8.5t20.5 16.5t8 25.5q0 25 -18.5 35.5t-47.5 10.5q-27 0 -50 -9.5t-40 -17.5l-25 55q16 11 49.5 22.5t67.5 11.5q73 0 103.5 -29.5t30.5 -75.5q0 -49 -55 -80 q35 -11 55.5 -36.5t20.5 -60.5q0 -26 -9 -47.5t-29 -38t-51.5 -25.5t-75.5 -9q-31 0 -63 7t-50 16l15 60q22 -8 46.5 -14.5t50.5 -6.5z" />
<glyph unicode="´" horiz-adv-x="380" d="M331 707l-179 -127l-40 52l166 144z" />
-<glyph unicode=" " horiz-adv-x="391" />
-<glyph unicode=" " horiz-adv-x="783" />
-<glyph unicode=" " horiz-adv-x="391" />
-<glyph unicode=" " horiz-adv-x="783" />
-<glyph unicode=" " horiz-adv-x="261" />
-<glyph unicode=" " horiz-adv-x="195" />
-<glyph unicode=" " horiz-adv-x="130" />
-<glyph unicode=" " horiz-adv-x="130" />
-<glyph unicode=" " horiz-adv-x="97" />
-<glyph unicode=" " horiz-adv-x="156" />
-<glyph unicode=" " horiz-adv-x="43" />
+<glyph unicode="µ" horiz-adv-x="584" d="M175 520v-278q0 -95 31 -133t100 -38q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505q-32 -8 -82.5 -17t-110.5 -9q-55 0 -87.5 11.5t-52.5 33.5q3 -28 4 -56.5t1 -59.5v-103h-92v705h93z" />
+<glyph unicode="¶" horiz-adv-x="650" d="M388 623q-8 0 -16 -0.5t-14 -1.5v-806h-78v447q-111 11 -173 63t-62 154q0 55 22.5 96t64.5 69t102 42t134 14q42 0 90 -3.5t89 -13.5v-868h-78v803q-14 2 -35 3.5t-46 1.5z" />
+<glyph unicode="·" horiz-adv-x="250" d="M192 294q0 -27 -18 -47t-49 -20t-49 20t-18 47t18 47t49 20t49 -20t18 -47z" />
+<glyph unicode="¸" horiz-adv-x="380" d="M201 -37q29 -14 42 -30.5t13 -48.5q0 -11 -5 -24t-17 -24t-32 -18t-49 -7q-26 0 -47.5 4t-34.5 9l11 57q12 -4 25.5 -7t30.5 -3q36 0 36 23q0 11 -11 18.5t-31 15.5l-7 3q3 10 9 23l12 27q6 13 11.5 23.5t8.5 15.5h64l-15 -28q-9 -17 -14 -29z" />
+<glyph unicode="¹" horiz-adv-x="363" d="M52 621q38 13 75 33.5t64 46.5h49v-386h-70v294q-22 -14 -50.5 -25t-48.5 -17z" />
+<glyph unicode="º" horiz-adv-x="450" d="M405 518q0 -43 -13.5 -78t-37.5 -60t-57 -38.5t-72 -13.5t-72 13.5t-57 38.5t-37.5 60t-13.5 78t13.5 78.5t37.5 60t57 38t72 13.5t72 -13.5t57 -38t37.5 -60t13.5 -78.5zM331 518q0 56 -27.5 89.5t-78.5 33.5q-50 0 -78 -33.5t-28 -89.5q0 -55 27.5 -89t78.5 -34 t78.5 34t27.5 89z" />
+<glyph unicode="»" horiz-adv-x="503" d="M107 63l-65 35l111 186l-111 186l65 35l156 -221zM315 63l-65 35l111 186l-111 186l65 35l156 -221z" />
+<glyph unicode="¼" horiz-adv-x="878" d="M52 621q38 13 75 33.5t64 46.5h49v-386h-70v294q-22 -14 -50.5 -25t-48.5 -17zM676 693l-391 -693h-87l391 693h87zM802 388v-234h50v-59h-50v-93h-68v93h-193v46q14 25 36 57t48 66t55 66.5t58 57.5h64zM734 305q-31 -32 -63 -72.5t-55 -78.5h118v151z" />
+<glyph unicode="½" horiz-adv-x="878" d="M52 621q38 13 75 33.5t64 46.5h49v-386h-70v294q-22 -14 -50.5 -25t-48.5 -17zM655 693l-391 -693h-87l391 693h87zM813 285q0 -21 -9.5 -41t-25.5 -39.5t-37 -39.5l-45 -40q-17 -14 -33.5 -30.5t-19.5 -29.5h186v-63h-266q-1 9 -1 18q0 22 5 41q8 25 22.5 46t33.5 38 l40 36q34 29 55.5 53.5t21.5 48.5q0 26 -16.5 38t-45.5 12q-17 0 -32 -4.5t-27 -11t-21.5 -13t-14.5 -10.5l-36 49q17 18 51.5 35.5t79.5 17.5q69 0 102 -29t33 -82z" />
+<glyph unicode="¾" horiz-adv-x="878" d="M146 369q53 0 73 16.5t20 42.5q0 17 -9 29t-24.5 19.5t-35.5 11t-41 3.5h-19v57h25q14 0 29.5 2.5t28 8.5t20.5 16.5t8 25.5q0 25 -18.5 35.5t-47.5 10.5q-27 0 -50 -9.5t-40 -17.5l-25 55q16 11 49.5 22.5t67.5 11.5q73 0 103.5 -29.5t30.5 -75.5q0 -49 -55 -80 q35 -11 55.5 -36.5t20.5 -60.5q0 -26 -9 -47.5t-29 -38t-51.5 -25.5t-75.5 -9q-31 0 -63 7t-50 16l15 60q22 -8 46.5 -14.5t50.5 -6.5zM691 693l-391 -693h-87l391 693h87zM802 388v-234h50v-59h-50v-93h-68v93h-193v46q14 25 36 57t48 66t55 66.5t58 57.5h64zM734 305 q-31 -32 -63 -72.5t-55 -78.5h118v151z" />
+<glyph unicode="¿" horiz-adv-x="408" d="M128 -23q0 -38 27.5 -62.5t76.5 -24.5q66 0 129 34l26 -72q-34 -18 -76.5 -29t-90.5 -11q-54 0 -90 14t-58.5 36t-32 49.5t-9.5 54.5q0 33 12.5 59t31.5 49.5t40.5 44.5t40.5 44.5t31.5 49.5t12.5 59v10q0 4 -1 9h78q4 -20 4 -39q0 -32 -11.5 -58t-28 -48.5t-36.5 -42.5 t-36.5 -40t-28 -41t-11.5 -45zM165 453q0 27 18 47t49 20t49 -20t18 -47t-18 -47t-49 -20t-49 20t-18 47z" />
+<glyph unicode="À" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM252 932l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Á" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM473 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="Â" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM333 925l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="Ã" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM498 867q-5 -12 -13.5 -28t-21.5 -29.5t-30.5 -23t-38.5 -9.5 q-20 0 -37.5 7t-33.5 15q-17 8 -29 12t-23 4q-17 0 -31.5 -14t-22.5 -30l-48 24q4 12 13 28t22 29.5t30.5 23t38.5 9.5q20 0 37.5 -7t33.5 -15q17 -8 29 -12t23 -4q17 0 31.5 14t22.5 30z" />
+<glyph unicode="Ä" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM238 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5 t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM428 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Å" horiz-adv-x="667" d="M174 178l-63 -178h-101l70 190l64 168l62 152l64 143q-19 14 -30 35t-11 49q0 24 8.5 42.5t22.5 32t32.5 20.5t39.5 7t39.5 -7t32.5 -20.5t22.5 -32t8.5 -42.5q0 -27 -11 -47.5t-29 -34.5l64 -143l63 -152l64 -168l71 -192h-106q-17 45 -32 89l-31 89h-314zM460 257 l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM385 737q0 26 -15.5 40.5t-37.5 14.5t-37.5 -14.5t-15.5 -40.5t15.5 -40.5t37.5 -14.5t37.5 14.5t15.5 40.5z" />
+<glyph unicode="Æ" horiz-adv-x="939" d="M875 612h-301v-209h265v-79h-265v-243h326v-81h-422v178h-273l-47 -88l-46 -90h-104l112 204l106 180l102 162l101 147h446v-81zM478 617q-53 -72 -110 -163l-118 -197h228v360z" />
+<glyph unicode="Ç" horiz-adv-x="624" d="M332 -11q-62 8 -112 35.5t-85.5 73t-55 108t-19.5 141.5q0 87 26.5 154.5t71.5 113.5t105 70t128 24q43 0 77.5 -6t60 -14t41.5 -16t22 -12l-28 -80q-9 6 -26 13t-38.5 14t-47 11.5t-51.5 4.5q-55 0 -99 -19t-75 -55t-47.5 -87.5t-16.5 -115.5q0 -62 14.5 -113 t43.5 -87.5t72.5 -56.5t101.5 -20q67 0 111 14t66 25l25 -80q-14 -11 -67.5 -26.5t-135.5 -17.5q-3 -6 -5.5 -11.5t-4.5 -10.5q29 -14 42 -30.5t13 -48.5q0 -11 -5 -24t-17 -24t-32 -18t-49 -7q-26 0 -47.5 4t-34.5 9l11 57q12 -4 25.5 -7t30.5 -3q36 0 36 23q0 11 -11 18.5 t-31 15.5l-7 3q4 12 10.5 28t13.5 30z" />
+<glyph unicode="È" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM241 932l166 -144l-40 -52l-179 127z" />
+<glyph unicode="É" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM457 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="Ê" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM299 925l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="Ë" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM204 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM394 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5 t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ì" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM56 932l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Í" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM272 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="Î" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM137 925l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="Ï" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM42 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM232 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ð" horiz-adv-x="730" d="M670 347q0 -90 -28 -156.5t-79 -110t-122 -65t-156 -21.5q-42 0 -92.5 3.5t-91.5 13.5v313h-80v75h80v284q41 10 91.5 13.5t92.5 3.5q85 0 156 -21.5t122 -65t79 -110t28 -156.5zM293 79q138 0 206 70.5t68 197.5t-68 197.5t-206 70.5q-41 0 -63.5 -1t-31.5 -2v-213h130 v-75h-130v-242q9 -1 31.5 -2t63.5 -1z" />
+<glyph unicode="Ñ" horiz-adv-x="732" d="M563 0l-51 83l-61 95l-69 101l-70 99l-68 89q-33 42 -61 74v-541h-95v693h77q47 -50 101 -117l106 -136l98 -139q47 -68 79 -121v513h95v-693h-81zM531 867q-5 -12 -13.5 -28t-21.5 -29.5t-30.5 -23t-38.5 -9.5q-20 0 -37.5 7t-33.5 15q-17 8 -29 12t-23 4 q-17 0 -31.5 -14t-22.5 -30l-48 24q4 12 13 28t22 29.5t30.5 23t38.5 9.5q20 0 37.5 -7t33.5 -15q17 -8 29 -12t23 -4q17 0 31.5 14t22.5 30z" />
+<glyph unicode="Ò" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM310 932l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Ó" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM526 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="Ô" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM391 925l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="Õ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM556 867q-5 -12 -13.5 -28t-21.5 -29.5t-30.5 -23t-38.5 -9.5q-20 0 -37.5 7t-33.5 15q-17 8 -29 12t-23 4q-17 0 -31.5 -14t-22.5 -30 l-48 24q4 12 13 28t22 29.5t30.5 23t38.5 9.5q20 0 37.5 -7t33.5 -15q17 -8 29 -12t23 -4q17 0 31.5 14t22.5 30z" />
+<glyph unicode="Ö" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM296 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM486 772q-23 0 -40.5 16.5 t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="×" horiz-adv-x="568" d="M430 92l-146 146l-146 -146l-56 56l146 146l-146 146l56 56l146 -146l146 146l56 -56l-146 -146l146 -146z" />
+<glyph unicode="Ø" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q106 0 188 -56l59 77l62 -46l-64 -83q39 -45 61.5 -108.5t22.5 -145.5q0 -89 -26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-53 0 -100.5 13.5t-88.5 40.5l-58 -75l-62 46l62 80q-40 45 -63 109t-23 148zM162 347 q0 -109 44 -179l319 413q-55 43 -134 43q-53 0 -95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM391 70q53 0 95 19.5t71.5 55.5t45.5 87.5t16 114.5q0 53 -11 96.5t-31 78.5l-318 -411q53 -41 132 -41z" />
+<glyph unicode="Ù" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM265 932l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Ú" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM481 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="Û" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM346 925l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="Ü" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM251 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5 t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM441 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ý" horiz-adv-x="602" d="M253 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97zM437 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="Þ" horiz-adv-x="613" d="M185 222h73q50 0 90 6.5t67.5 22.5t42.5 43t15 69q0 40 -15.5 66.5t-43.5 42t-67 21.5t-86 6h-37q-20 0 -39 -2v-275zM185 693v-113q19 2 39.5 2.5t39.5 0.5q311 0 311 -221q0 -60 -21.5 -101.5t-62 -68t-98.5 -38.5t-131 -12h-77v-142h-97v693h97z" />
+<glyph unicode="ß" horiz-adv-x="627" d="M500 616q0 -25 -7 -44.5t-17.5 -36t-23.5 -30.5l-23 -26l-39 -41q-16 -17 -16 -42q0 -15 7.5 -26t19.5 -19t27 -15l29 -14q27 -13 50.5 -28t41 -34.5t27 -46t9.5 -63.5q0 -78 -48.5 -120t-150.5 -42q-21 0 -42 3t-39 7.5t-31.5 9.5t-19.5 8l16 81q6 -3 18.5 -8t29 -10 t36 -8.5t39.5 -3.5q50 0 74 22t24 59q0 39 -23 64t-80 51q-33 15 -54.5 28.5t-33.5 27.5t-17 29t-5 35q0 40 22 67t47 53q10 10 20.5 22t19.5 24.5t14.5 25.5t5.5 27q0 44 -26 68.5t-78 24.5q-67 0 -97.5 -38t-30.5 -105v-552h-93v554q0 50 14 91t41 70t67 45t92 16 q54 0 93 -12t63.5 -33.5t36 -51t11.5 -63.5z" />
+<glyph unicode="à" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM184 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="á" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM400 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="â" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM265 769l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="ã" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM430 711q-5 -12 -13.5 -28t-21.5 -29.5t-30.5 -23t-38.5 -9.5 q-20 0 -37.5 7t-33.5 15q-17 8 -29 12t-23 4q-17 0 -31.5 -14t-22.5 -30l-48 24q4 12 13 28t22 29.5t30.5 23t38.5 9.5q20 0 37.5 -7t33.5 -15q17 -8 29 -12t23 -4q17 0 31.5 14t22.5 30z" />
+<glyph unicode="ä" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM170 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5 t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM360 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="å" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM368 677q0 -24 -8.5 -42.5t-22.5 -32t-32.5 -20.5t-39.5 -7t-39.5 7 t-32.5 20.5t-22.5 32t-8.5 42.5t8.5 42.5t22.5 32t32.5 20.5t39.5 7t39.5 -7t32.5 -20.5t22.5 -32t8.5 -42.5zM318 677q0 26 -15.5 40.5t-37.5 14.5t-37.5 -14.5t-15.5 -40.5t15.5 -40.5t37.5 -14.5t37.5 14.5t15.5 40.5z" />
+<glyph unicode="æ" horiz-adv-x="863" d="M615 -12q-57 0 -99.5 13.5t-74.5 39.5q-10 -7 -26.5 -16t-39.5 -17.5t-51.5 -14t-62.5 -5.5q-50 0 -89.5 9t-67.5 29t-43 52t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t28 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5 q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 59.5 15.5t89.5 7.5q69 0 109.5 -23.5t60.5 -65.5q33 45 78 67t94 22q104 0 160.5 -66t56.5 -199q0 -8 -0.5 -13.5t-0.5 -10.5v-9h-356q6 -80 47.5 -122.5t127.5 -42.5q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19 t-96.5 -10zM263 67q52 0 82 11.5t46 22.5q-15 28 -23.5 60t-9.5 68q-11 5 -32 8.5t-53 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -51 32.5 -70t90.5 -19zM710 310q1 63 -31.5 103.5t-89.5 40.5q-32 0 -56.5 -12.5t-41 -32.5t-26.5 -46t-13 -53h258z" />
+<glyph unicode="ç" horiz-adv-x="469" d="M320 -12l-11 -25q29 -14 42 -30.5t13 -48.5q0 -11 -5 -24t-17 -24t-32 -18t-49 -7q-26 0 -47.5 4t-34.5 9l11 57q12 -4 25.5 -7t30.5 -3q36 0 36 23q0 11 -11 18.5t-31 15.5l-7 3q4 12 11 29t15 32q-51 7 -89.5 29.5t-64.5 57.5t-39 80.5t-13 99.5q0 60 17.5 110 t49.5 86.5t78.5 57t103.5 20.5q35 0 70 -6t67 -19l-21 -79q-21 10 -48.5 16t-58.5 6q-78 0 -119.5 -49t-41.5 -143q0 -42 9.5 -77t30 -60t52.5 -38.5t78 -13.5q37 0 67 7t47 15l13 -78q-8 -4 -21.5 -8.5t-30.5 -8t-36.5 -6t-38.5 -3.5z" />
+<glyph unicode="è" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5 t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258zM207 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="é" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5 t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258zM423 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="ê" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5 t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258zM288 769l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="ë" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5 t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258zM193 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM383 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5 t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ì" horiz-adv-x="257" d="M175 0h-93v520h93v-520zM48 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="í" horiz-adv-x="257" d="M175 0h-93v520h93v-520zM264 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="î" horiz-adv-x="257" d="M175 0h-93v520h93v-520zM129 769l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="ï" horiz-adv-x="257" d="M175 0h-93v520h93v-520zM34 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM224 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ð" horiz-adv-x="593" d="M566 657l-107 -37q32 -54 54 -126t22 -166q0 -66 -11.5 -127.5t-39.5 -109t-75.5 -76t-119.5 -28.5q-59 0 -103.5 22t-74 58t-44 83t-14.5 98q0 56 16.5 101t46.5 76.5t73.5 48t97.5 16.5q51 0 89 -16t56 -30q-12 80 -55 148l-120 -41l-23 63l102 35q-33 39 -84 76l59 51 q22 -14 50.5 -38.5t57.5 -60.5l124 43zM440 325q0 8 -0.5 16t-0.5 16q-34 30 -71 41t-69 11q-41 0 -69.5 -12.5t-46.5 -34.5t-26.5 -51t-8.5 -63q0 -36 9 -68.5t26.5 -57t44 -39t61.5 -14.5q46 0 75.5 22t46 58t23 82t6.5 94z" />
+<glyph unicode="ñ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292h-93v272q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM457 711q-5 -12 -13.5 -28t-21.5 -29.5t-30.5 -23t-38.5 -9.5q-20 0 -37.5 7 t-33.5 15q-17 8 -29 12t-23 4q-17 0 -31.5 -14t-22.5 -30l-48 24q4 12 13 28t22 29.5t30.5 23t38.5 9.5q20 0 37.5 -7t33.5 -15q17 -8 29 -12t23 -4q17 0 31.5 14t22.5 30z" />
+<glyph unicode="ò" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM216 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ó" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM432 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="ô" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM297 769l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="õ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM462 711q-5 -12 -13.5 -28t-21.5 -29.5t-30.5 -23t-38.5 -9.5q-20 0 -37.5 7t-33.5 15q-17 8 -29 12t-23 4q-17 0 -31.5 -14t-22.5 -30l-48 24q4 12 13 28t22 29.5t30.5 23t38.5 9.5q20 0 37.5 -7t33.5 -15q17 -8 29 -12t23 -4 q17 0 31.5 14t22.5 30z" />
+<glyph unicode="ö" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM202 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM392 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="÷" horiz-adv-x="568" d="M284 40q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5zM284 426q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5zM55 334h458v-79h-458v79z" />
+<glyph unicode="ø" horiz-adv-x="594" d="M482 445q28 -35 43.5 -81.5t15.5 -103.5q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5q-79 0 -137 41l-49 -64l-53 40l54 70q-28 35 -43.5 82t-15.5 104q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5q39 0 73.5 -11t63.5 -31l49 64l53 -40zM149 260q0 -65 21 -110 l212 274q-36 28 -85 28q-69 0 -108.5 -51.5t-39.5 -140.5zM445 260q0 62 -22 109l-211 -274q34 -27 85 -27q69 0 108.5 51.5t39.5 140.5z" />
+<glyph unicode="ù" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM205 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ú" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM421 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="û" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM286 769l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="ü" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM191 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5 t-40.5 -16.5zM381 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ý" horiz-adv-x="501" d="M21 -97q11 -5 28.5 -9.5t34.5 -4.5q55 0 86 24.5t56 79.5q-63 120 -117.5 254.5t-90.5 272.5h100q11 -45 26.5 -97t34.5 -107t41 -110t46 -106q38 105 66 208t53 212h96q-36 -147 -80 -282.5t-95 -253.5q-20 -45 -41.5 -77.5t-47.5 -53.5t-58.5 -31t-73.5 -10 q-11 0 -23 1.5t-23.5 4t-21 5.5t-13.5 5zM398 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="þ" horiz-adv-x="593" d="M443 259q0 91 -45 140.5t-120 49.5q-15 0 -31 -2t-30.5 -4.5t-25.5 -5.5t-16 -5v-322q17 -14 49 -27t70 -13q40 0 68.5 14.5t46.5 40t26 60t8 74.5zM540 259q0 -59 -15.5 -109t-45.5 -86t-73.5 -56t-99.5 -20q-45 0 -79.5 12t-51.5 23v-208h-93v945l93 16v-265 q26 9 54.5 14.5t54.5 5.5q57 0 104.5 -19t81 -54t52 -85.5t18.5 -113.5z" />
+<glyph unicode="ÿ" horiz-adv-x="501" d="M21 -97q11 -5 28.5 -9.5t34.5 -4.5q55 0 86 24.5t56 79.5q-63 120 -117.5 254.5t-90.5 272.5h100q11 -45 26.5 -97t34.5 -107t41 -110t46 -106q38 105 66 208t53 212h96q-36 -147 -80 -282.5t-95 -253.5q-20 -45 -41.5 -77.5t-47.5 -53.5t-58.5 -31t-73.5 -10 q-11 0 -23 1.5t-23.5 4t-21 5.5t-13.5 5zM168 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM358 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ā" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM191 867h284v-72h-284v72z" />
+<glyph unicode="ā" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM123 711h284v-72h-284v72z" />
+<glyph unicode="Ă" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM334 766q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60 q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="ă" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM265 610q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60 q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="Ą" horiz-adv-x="667" d="M552 -2l-32 90l-32 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l66 -160l68 -178l75 -202q-9 -5 -24 -15t-30 -26q-14 -16 -22 -28t-8 -26q0 -29 40 -29q7 0 18.5 1.5t22.5 5.5l7 -61q-11 -5 -28.5 -8t-37.5 -3q-56 0 -83 20.5t-27 55.5 q0 23 12.5 44.5t29.5 39.5l14 14zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258z" />
+<glyph unicode="ą" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-26 -21q-15 -11 -30 -27q-14 -16 -23 -28t-9 -26q0 -29 40 -29 q7 0 18.5 1.5t22.5 5.5l7 -61q-11 -5 -28.5 -8t-37.5 -3q-56 0 -83 20.5t-27 55.5q0 23 14 44.5t31 39.5q5 6 12 11.5t12 10.5l-47 -4q-25 -2 -49 -2q-44 0 -81 9t-64 28.5t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26 q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5z" />
+<glyph unicode="Ć" horiz-adv-x="624" d="M386 -15q-73 0 -133 24t-103 70t-66.5 113.5t-23.5 154.5t26.5 154.5t71.5 113.5t105 70t128 24q43 0 77.5 -6t60 -14t41.5 -16t22 -12l-28 -80q-9 6 -26 13t-38.5 14t-47 11.5t-51.5 4.5q-55 0 -99 -19t-75 -55t-47.5 -87.5t-16.5 -115.5q0 -62 14.5 -113t43.5 -87.5 t72.5 -56.5t101.5 -20q67 0 111 14t66 25l25 -80q-7 -5 -25 -12.5t-45 -14.5t-63 -12t-78 -5zM504 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="ć" horiz-adv-x="469" d="M308 -12q-63 0 -110.5 20t-80 56t-48.5 85.5t-16 109.5t17.5 110t49.5 86.5t78.5 57t103.5 20.5q35 0 70 -6t67 -19l-21 -79q-21 10 -48.5 16t-58.5 6q-78 0 -119.5 -49t-41.5 -143q0 -42 9.5 -77t30 -60t52.5 -38.5t78 -13.5q37 0 67 7t47 15l13 -78q-8 -5 -23 -9.5 t-34 -8t-40.5 -6t-41.5 -2.5zM424 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="Ĉ" horiz-adv-x="624" d="M386 -15q-73 0 -133 24t-103 70t-66.5 113.5t-23.5 154.5t26.5 154.5t71.5 113.5t105 70t128 24q43 0 77.5 -6t60 -14t41.5 -16t22 -12l-28 -80q-9 6 -26 13t-38.5 14t-47 11.5t-51.5 4.5q-55 0 -99 -19t-75 -55t-47.5 -87.5t-16.5 -115.5q0 -62 14.5 -113t43.5 -87.5 t72.5 -56.5t101.5 -20q67 0 111 14t66 25l25 -80q-7 -5 -25 -12.5t-45 -14.5t-63 -12t-78 -5zM369 925l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="ĉ" horiz-adv-x="469" d="M308 -12q-63 0 -110.5 20t-80 56t-48.5 85.5t-16 109.5t17.5 110t49.5 86.5t78.5 57t103.5 20.5q35 0 70 -6t67 -19l-21 -79q-21 10 -48.5 16t-58.5 6q-78 0 -119.5 -49t-41.5 -143q0 -42 9.5 -77t30 -60t52.5 -38.5t78 -13.5q37 0 67 7t47 15l13 -78q-8 -5 -23 -9.5 t-34 -8t-40.5 -6t-41.5 -2.5zM289 769l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="Ċ" horiz-adv-x="624" d="M386 -15q-73 0 -133 24t-103 70t-66.5 113.5t-23.5 154.5t26.5 154.5t71.5 113.5t105 70t128 24q43 0 77.5 -6t60 -14t41.5 -16t22 -12l-28 -80q-9 6 -26 13t-38.5 14t-47 11.5t-51.5 4.5q-55 0 -99 -19t-75 -55t-47.5 -87.5t-16.5 -115.5q0 -62 14.5 -113t43.5 -87.5 t72.5 -56.5t101.5 -20q67 0 111 14t66 25l25 -80q-7 -5 -25 -12.5t-45 -14.5t-63 -12t-78 -5zM369 770q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="ċ" horiz-adv-x="469" d="M308 -12q-63 0 -110.5 20t-80 56t-48.5 85.5t-16 109.5t17.5 110t49.5 86.5t78.5 57t103.5 20.5q35 0 70 -6t67 -19l-21 -79q-21 10 -48.5 16t-58.5 6q-78 0 -119.5 -49t-41.5 -143q0 -42 9.5 -77t30 -60t52.5 -38.5t78 -13.5q37 0 67 7t47 15l13 -78q-8 -5 -23 -9.5 t-34 -8t-40.5 -6t-41.5 -2.5zM289 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="Č" horiz-adv-x="624" d="M386 -15q-73 0 -133 24t-103 70t-66.5 113.5t-23.5 154.5t26.5 154.5t71.5 113.5t105 70t128 24q43 0 77.5 -6t60 -14t41.5 -16t22 -12l-28 -80q-9 6 -26 13t-38.5 14t-47 11.5t-51.5 4.5q-55 0 -99 -19t-75 -55t-47.5 -87.5t-16.5 -115.5q0 -62 14.5 -113t43.5 -87.5 t72.5 -56.5t101.5 -20q67 0 111 14t66 25l25 -80q-7 -5 -25 -12.5t-45 -14.5t-63 -12t-78 -5zM233 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="č" horiz-adv-x="469" d="M308 -12q-63 0 -110.5 20t-80 56t-48.5 85.5t-16 109.5t17.5 110t49.5 86.5t78.5 57t103.5 20.5q35 0 70 -6t67 -19l-21 -79q-21 10 -48.5 16t-58.5 6q-78 0 -119.5 -49t-41.5 -143q0 -42 9.5 -77t30 -60t52.5 -38.5t78 -13.5q37 0 67 7t47 15l13 -78q-8 -5 -23 -9.5 t-34 -8t-40.5 -6t-41.5 -2.5zM153 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="Ď" horiz-adv-x="717" d="M657 347q0 -90 -28 -156.5t-79 -110t-122 -65t-156 -21.5q-42 0 -92.5 3.5t-91.5 13.5v672q41 10 91.5 13.5t92.5 3.5q85 0 156 -21.5t122 -65t79 -110t28 -156.5zM280 79q138 0 206 70.5t68 197.5t-68 197.5t-206 70.5q-41 0 -63.5 -1t-31.5 -2v-530q9 -1 31.5 -2 t63.5 -1zM197 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ď" horiz-adv-x="626" d="M418 410q-17 14 -49 27t-70 13q-40 0 -68.5 -14.5t-46.5 -40t-26 -60.5t-8 -75q0 -91 45 -140.5t120 -49.5q38 0 63.5 3.5t39.5 7.5v329zM418 760l93 16v-761q-32 -9 -82 -18t-115 -9q-60 0 -108 19t-82 54t-52.5 85.5t-18.5 113.5q0 60 15.5 110t45.5 86t73.5 56 t99.5 20q45 0 79.5 -12t51.5 -23v263zM670 776l-27 -223h-62v223h89z" />
+<glyph unicode="Đ" horiz-adv-x="730" d="M670 347q0 -90 -28 -156.5t-79 -110t-122 -65t-156 -21.5q-42 0 -92.5 3.5t-91.5 13.5v313h-80v75h80v284q41 10 91.5 13.5t92.5 3.5q85 0 156 -21.5t122 -65t79 -110t28 -156.5zM293 79q138 0 206 70.5t68 197.5t-68 197.5t-206 70.5q-41 0 -63.5 -1t-31.5 -2v-213h130 v-75h-130v-242q9 -1 31.5 -2t63.5 -1z" />
+<glyph unicode="đ" horiz-adv-x="593" d="M418 406q-17 14 -49 27t-70 13q-40 0 -68.5 -14t-46.5 -39t-26 -59.5t-8 -74.5q0 -91 45 -140t120 -49q38 0 63.5 3.5t39.5 7.5v325zM418 760l93 16v-93h74v-69h-74v-599q-32 -9 -82 -18t-115 -9q-60 0 -108 18.5t-82 54t-52.5 85.5t-18.5 113q0 60 15.5 109.5t45.5 85 t73.5 55t99.5 19.5q45 0 79.5 -12t51.5 -23v121h-177v69h177v77z" />
+<glyph unicode="Ē" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM157 867h284v-72h-284v72z" />
+<glyph unicode="ē" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5 t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258zM138 711h284v-72h-284v72z" />
+<glyph unicode="Ĕ" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM290 766q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="ĕ" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5 t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258zM284 610q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z " />
+<glyph unicode="Ė" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM299 770q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="ė" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5 t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258zM288 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="Ę" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-81q-9 -5 -24 -15t-30 -26q-14 -16 -22 -28t-8 -26q0 -29 40 -29q7 0 18.5 1.5t22.5 5.5l7 -61q-11 -5 -28.5 -8t-37.5 -3q-56 0 -83 20.5t-27 55.5q0 23 12.5 44.5t29.5 39.5l14 15q7 6 15 12h-347z" />
+<glyph unicode="ę" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78l-34 -26q-17 -13 -33 -30q-17 -17 -24.5 -29.5t-7.5 -24.5q0 -17 11.5 -23t28.5 -6q12 0 23 2.5t18 4.5l7 -61 q-12 -6 -31 -8.5t-35 -2.5q-51 0 -80.5 18t-29.5 58q0 23 16.5 49t47.5 52q-8 -1 -16.5 -1.5t-16.5 -0.5q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258z" />
+<glyph unicode="Ě" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM154 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ě" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5 t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258zM152 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="Ĝ" horiz-adv-x="676" d="M511 341h97v-324q-12 -4 -34.5 -9t-52 -10t-64.5 -8.5t-71 -3.5q-73 0 -133 24t-103 70t-66.5 113t-23.5 154t26.5 154.5t71.5 113.5t105.5 70t129.5 24q47 0 83.5 -6t62.5 -14t42.5 -16t22.5 -12l-31 -81q-29 19 -77 31.5t-98 12.5q-53 0 -96.5 -19t-74 -55t-47.5 -87.5 t-17 -115.5q0 -62 14.5 -113t44 -87.5t73 -56.5t102.5 -20q42 0 71.5 4.5t42.5 8.5v258zM377 925l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="ĝ" horiz-adv-x="582" d="M408 52q-12 -8 -46.5 -20.5t-80.5 -12.5q-47 0 -88.5 15t-72.5 46.5t-49 78.5t-18 112q0 57 17 104.5t49.5 82t79.5 54t106 19.5q65 0 113.5 -9.5t81.5 -17.5v-464q0 -120 -62 -174t-188 -54q-49 0 -92.5 8t-75.5 19l17 81q28 -11 68.5 -19.5t84.5 -8.5q83 0 119.5 33 t36.5 105v22zM407 438q-14 4 -37.5 7.5t-63.5 3.5q-75 0 -115.5 -49t-40.5 -130q0 -45 11.5 -77t31 -53t45 -31t52.5 -10q37 0 68 10.5t49 24.5v304zM305 769l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="Ğ" horiz-adv-x="676" d="M511 341h97v-324q-12 -4 -34.5 -9t-52 -10t-64.5 -8.5t-71 -3.5q-73 0 -133 24t-103 70t-66.5 113t-23.5 154t26.5 154.5t71.5 113.5t105.5 70t129.5 24q47 0 83.5 -6t62.5 -14t42.5 -16t22.5 -12l-31 -81q-29 19 -77 31.5t-98 12.5q-53 0 -96.5 -19t-74 -55t-47.5 -87.5 t-17 -115.5q0 -62 14.5 -113t44 -87.5t73 -56.5t102.5 -20q42 0 71.5 4.5t42.5 8.5v258zM377 766q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5 t-43 -27t-52.5 -9.5z" />
+<glyph unicode="ğ" horiz-adv-x="582" d="M408 52q-12 -8 -46.5 -20.5t-80.5 -12.5q-47 0 -88.5 15t-72.5 46.5t-49 78.5t-18 112q0 57 17 104.5t49.5 82t79.5 54t106 19.5q65 0 113.5 -9.5t81.5 -17.5v-464q0 -120 -62 -174t-188 -54q-49 0 -92.5 8t-75.5 19l17 81q28 -11 68.5 -19.5t84.5 -8.5q83 0 119.5 33 t36.5 105v22zM407 438q-14 4 -37.5 7.5t-63.5 3.5q-75 0 -115.5 -49t-40.5 -130q0 -45 11.5 -77t31 -53t45 -31t52.5 -10q37 0 68 10.5t49 24.5v304zM305 610q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5 t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="Ġ" horiz-adv-x="676" d="M511 341h97v-324q-12 -4 -34.5 -9t-52 -10t-64.5 -8.5t-71 -3.5q-73 0 -133 24t-103 70t-66.5 113t-23.5 154t26.5 154.5t71.5 113.5t105.5 70t129.5 24q47 0 83.5 -6t62.5 -14t42.5 -16t22.5 -12l-31 -81q-29 19 -77 31.5t-98 12.5q-53 0 -96.5 -19t-74 -55t-47.5 -87.5 t-17 -115.5q0 -62 14.5 -113t44 -87.5t73 -56.5t102.5 -20q42 0 71.5 4.5t42.5 8.5v258zM377 770q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="ġ" horiz-adv-x="582" d="M408 52q-12 -8 -46.5 -20.5t-80.5 -12.5q-47 0 -88.5 15t-72.5 46.5t-49 78.5t-18 112q0 57 17 104.5t49.5 82t79.5 54t106 19.5q65 0 113.5 -9.5t81.5 -17.5v-464q0 -120 -62 -174t-188 -54q-49 0 -92.5 8t-75.5 19l17 81q28 -11 68.5 -19.5t84.5 -8.5q83 0 119.5 33 t36.5 105v22zM407 438q-14 4 -37.5 7.5t-63.5 3.5q-75 0 -115.5 -49t-40.5 -130q0 -45 11.5 -77t31 -53t45 -31t52.5 -10q37 0 68 10.5t49 24.5v304zM305 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="Ģ" horiz-adv-x="676" d="M511 341h97v-324q-12 -4 -34.5 -9t-52 -10t-64.5 -8.5t-71 -3.5q-73 0 -133 24t-103 70t-66.5 113t-23.5 154t26.5 154.5t71.5 113.5t105.5 70t129.5 24q47 0 83.5 -6t62.5 -14t42.5 -16t22.5 -12l-31 -81q-29 19 -77 31.5t-98 12.5q-53 0 -96.5 -19t-74 -55t-47.5 -87.5 t-17 -115.5q0 -62 14.5 -113t44 -87.5t73 -56.5t102.5 -20q42 0 71.5 4.5t42.5 8.5v258zM336 -50h89q1 -5 1 -12v-9q0 -32 -9.5 -54t-25.5 -36t-37.5 -20.5t-45.5 -6.5q-13 0 -23.5 1t-13.5 3v56q15 0 27.5 2t20.5 8.5t12.5 19.5t4.5 35v13z" />
+<glyph unicode="ģ" horiz-adv-x="582" d="M408 52q-12 -8 -46.5 -20.5t-80.5 -12.5q-47 0 -88.5 15t-72.5 46.5t-49 78.5t-18 112q0 57 17 104.5t49.5 82t79.5 54t106 19.5q65 0 113.5 -9.5t81.5 -17.5v-464q0 -120 -62 -174t-188 -54q-49 0 -92.5 8t-75.5 19l17 81q28 -11 68.5 -19.5t84.5 -8.5q83 0 119.5 33 t36.5 105v22zM407 438q-14 4 -37.5 7.5t-63.5 3.5q-75 0 -115.5 -49t-40.5 -130q0 -45 11.5 -77t31 -53t45 -31t52.5 -10q37 0 68 10.5t49 24.5v304zM349 609h-89q-1 5 -1 11v10q0 36 10 62.5t26.5 44.5t36.5 28.5t40 15.5l33 -45q-12 -9 -22.5 -18t-18 -21.5t-11.5 -30 t-4 -44.5v-13z" />
+<glyph unicode="Ĥ" horiz-adv-x="709" d="M524 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM354 925l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="ĥ" horiz-adv-x="575" d="M82 0v760l93 16v-266q26 10 55.5 15.5t58.5 5.5q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292h-93v272q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -2t-30.5 -4.5t-26 -5.5t-16.5 -5v-432h-93zM177 962l123 -95l-29 -45l-94 61l-94 -61l-29 45z" />
+<glyph unicode="Ħ" horiz-adv-x="735" d="M21 594h80v99h97v-99h339v99h97v-99h80v-71h-80v-523h-97v320h-339v-320h-97v523h-80v71zM537 523h-339v-119h339v119z" />
+<glyph unicode="ħ" horiz-adv-x="575" d="M82 0v614h-74v69h74v77l93 16v-93h177v-69h-177v-108q26 10 55.5 15.5t58.5 5.5q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-288h-93v268q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -2t-30.5 -4.5t-26 -5.5t-16.5 -5v-428h-93z" />
+<glyph unicode="Ĩ" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM302 867q-5 -12 -13.5 -28t-21.5 -29.5t-30.5 -23t-38.5 -9.5q-20 0 -37.5 7t-33.5 15q-17 8 -29 12t-23 4q-17 0 -31.5 -14t-22.5 -30l-48 24q4 12 13 28t22 29.5t30.5 23t38.5 9.5q20 0 37.5 -7t33.5 -15q17 -8 29 -12t23 -4q17 0 31.5 14 t22.5 30z" />
+<glyph unicode="ĩ" horiz-adv-x="257" d="M175 0h-93v520h93v-520zM294 711q-5 -12 -13.5 -28t-21.5 -29.5t-30.5 -23t-38.5 -9.5q-20 0 -37.5 7t-33.5 15q-17 8 -29 12t-23 4q-17 0 -31.5 -14t-22.5 -30l-48 24q4 12 13 28t22 29.5t30.5 23t38.5 9.5q20 0 37.5 -7t33.5 -15q17 -8 29 -12t23 -4q17 0 31.5 14 t22.5 30z" />
+<glyph unicode="Ī" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM-5 867h284v-72h-284v72z" />
+<glyph unicode="ī" horiz-adv-x="257" d="M175 0h-93v520h93v-520zM-13 711h284v-72h-284v72z" />
+<glyph unicode="Ĭ" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM137 766q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="ĭ" horiz-adv-x="257" d="M175 0h-93v520h93v-520zM129 610q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="Į" horiz-adv-x="273" d="M88 693h97v-693l-23 -17q-11 -9 -23 -22q-14 -16 -23 -28t-9 -26q0 -29 40 -29q7 0 18.5 1.5t22.5 5.5l7 -61q-24 -11 -66 -11q-57 0 -83.5 20.5t-26.5 55.5q0 23 13 44.5t30 39.5l14 15l12 10v695z" />
+<glyph unicode="į" horiz-adv-x="257" d="M175 0q-24 -18 -44 -39q-14 -16 -23 -28t-9 -26q0 -29 40 -29q7 0 18.5 1.5t22.5 5.5l7 -61q-24 -11 -66 -11q-57 0 -83.5 20.5t-26.5 55.5q0 23 13 44t30 40q8 9 15 15.5t13 11.5v520h93v-520zM128 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5 t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="İ" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM137 770q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="ı" horiz-adv-x="257" d="M175 0h-93v520h93v-520z" />
+<glyph unicode="IJ" horiz-adv-x="772" d="M88 693h97v-693h-97v693zM694 223q0 -50 -10.5 -93t-37 -75.5t-71 -51t-111.5 -18.5q-34 0 -62.5 5.5t-51.5 14t-40 18t-27 18.5l38 77q21 -15 54.5 -31.5t83.5 -16.5q72 0 105 36.5t33 125.5v461h97v-470z" />
+<glyph unicode="ij" horiz-adv-x="514" d="M175 0h-93v520h93v-520zM128 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5zM254 -187q-12 0 -31 3t-32 8l12 76q10 -3 23 -5t24 -2q48 0 68.5 29.5t20.5 86.5v511h93v-510q0 -100 -45.5 -148.5t-132.5 -48.5z M385 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="Ĵ" horiz-adv-x="504" d="M421 223q0 -50 -10.5 -93t-37 -75.5t-71 -51t-111.5 -18.5q-34 0 -62.5 5.5t-51.5 14t-40 18t-27 18.5l38 77q21 -15 54.5 -31.5t83.5 -16.5q72 0 105 36.5t33 125.5v461h97v-470zM372 925l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="ĵ" horiz-adv-x="257" d="M-3 -185q-12 0 -31 3t-32 8l12 76q10 -3 23 -5t24 -2q48 0 68.5 29.5t20.5 86.5v509h93v-508q0 -100 -45.5 -148.5t-132.5 -48.5zM129 769l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="Ķ" horiz-adv-x="633" d="M601 693l-70 -75l-81 -86l-85 -85l-79 -78q43 -30 91 -74t94 -94t86.5 -102t67.5 -99h-114q-30 47 -69 94.5t-82.5 91t-88 80.5t-86.5 63v-329h-97v693h97v-306l77 75l83 83l77 81q37 38 62 67h117zM291 -50h89q1 -5 1 -12v-9q0 -32 -9.5 -54t-25.5 -36t-37.5 -20.5 t-45.5 -6.5q-13 0 -23.5 1t-13.5 3v56q15 0 27.5 2t20.5 8.5t12.5 19.5t4.5 35v13z" />
+<glyph unicode="ķ" horiz-adv-x="526" d="M270 286q30 -23 63.5 -57t66 -73.5t61.5 -80t49 -75.5h-109q-21 35 -48.5 71.5t-57.5 70t-61 61.5t-59 47v-250h-93v760l93 16v-474l53 53l57 59l53 58l43 48h109l-50 -55l-56 -61l-58 -60zM235 -50h89q1 -5 1 -12v-9q0 -32 -9.5 -54t-25.5 -36t-37.5 -20.5t-45.5 -6.5 q-13 0 -23.5 1t-13.5 3v56q15 0 27.5 2t20.5 8.5t12.5 19.5t4.5 35v13z" />
+<glyph unicode="ĸ" horiz-adv-x="541" d="M272 283q31 -22 67 -55.5t70.5 -72.5t64.5 -79.5t51 -75.5h-110q-22 34 -51.5 69.5t-61.5 68.5t-65 61t-62 47v-246h-93v520h93v-223l55 53l62 62l59 60l44 48h108l-51 -54l-62 -63l-62 -63z" />
+<glyph unicode="Ĺ" horiz-adv-x="523" d="M505 84v-84h-417v693h97v-609h320zM296 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="ĺ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v624l93 16v-625q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM249 879l-168 -60l-21 55l161 78z" />
+<glyph unicode="Ļ" horiz-adv-x="523" d="M505 84v-84h-417v693h97v-609h320zM255 -50h89q1 -5 1 -12v-9q0 -32 -9.5 -54t-25.5 -36t-37.5 -20.5t-45.5 -6.5q-13 0 -23.5 1t-13.5 3v56q15 0 27.5 2t20.5 8.5t12.5 19.5t4.5 35v13z" />
+<glyph unicode="ļ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v624l93 16v-625q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM106 -50h89q1 -5 1 -12v-9q0 -32 -9.5 -54t-25.5 -36t-37.5 -20.5t-45.5 -6.5q-13 0 -23.5 1t-13.5 3v56q15 0 27.5 2t20.5 8.5t12.5 19.5t4.5 35v13z" />
+<glyph unicode="Ľ" horiz-adv-x="523" d="M505 84v-84h-417v693h97v-609h320zM364 694l-27 -223h-62v223h89z" />
+<glyph unicode="ľ" horiz-adv-x="288" d="M238 -10q-86 2 -122 37t-36 109v624l93 16v-625q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM332 776l-27 -223h-62v223h89z" />
+<glyph unicode="Ŀ" horiz-adv-x="523" d="M505 84v-84h-417v693h97v-609h320zM397 302q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="ŀ" horiz-adv-x="373" d="M238 -10q-86 2 -122 37t-36 109v624l93 16v-625q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM313 302q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="Ł" horiz-adv-x="541" d="M523 84v-84h-417v286l-73 -37l-33 66l106 54v324h97v-274l116 60l32 -66l-148 -77v-252h320z" />
+<glyph unicode="ł" horiz-adv-x="291" d="M252 -10q-86 2 -122 37t-36 109v204l-57 -29l-32 62l89 45v342l93 16v-310l73 38l31 -62l-104 -54v-237q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="Ń" horiz-adv-x="732" d="M563 0l-51 83l-61 95l-69 101l-70 99l-68 89q-33 42 -61 74v-541h-95v693h77q47 -50 101 -117l106 -136l98 -139q47 -68 79 -121v513h95v-693h-81zM501 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="ń" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292h-93v272q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM427 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="Ņ" horiz-adv-x="732" d="M563 0l-51 83l-61 95l-69 101l-70 99l-68 89q-33 42 -61 74v-541h-95v693h77q47 -50 101 -117l106 -136l98 -139q47 -68 79 -121v513h95v-693h-81zM325 -50h89q1 -5 1 -12v-9q0 -32 -9.5 -54t-25.5 -36t-37.5 -20.5t-45.5 -6.5q-13 0 -23.5 1t-13.5 3v56q15 0 27.5 2 t20.5 8.5t12.5 19.5t4.5 35v13z" />
+<glyph unicode="ņ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292h-93v272q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM251 -50h89q1 -5 1 -12v-9q0 -32 -9.5 -54t-25.5 -36t-37.5 -20.5t-45.5 -6.5 q-13 0 -23.5 1t-13.5 3v56q15 0 27.5 2t20.5 8.5t12.5 19.5t4.5 35v13z" />
+<glyph unicode="Ň" horiz-adv-x="732" d="M563 0l-51 83l-61 95l-69 101l-70 99l-68 89q-33 42 -61 74v-541h-95v693h77q47 -50 101 -117l106 -136l98 -139q47 -68 79 -121v513h95v-693h-81zM230 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ň" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292h-93v272q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM156 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ʼn" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292h-93v272q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM139 776v-18q0 -8 -1 -18q-4 -51 -21 -93.5t-41 -80.5l-67 23q19 38 27.5 74.5 t8.5 74.5q0 10 -0.5 21t-1.5 17h96z" />
+<glyph unicode="Ŋ" horiz-adv-x="732" d="M549 24l-81 128l-97 142l-99 136q-49 66 -89 111v-541h-95v693h77q47 -50 101 -117l106 -136l98 -139q47 -68 79 -121v513h95v-693q0 -46 -6 -81t-22 -58.5t-45 -35.5t-74 -12q-14 0 -32.5 2.5t-29.5 5.5l9 73q8 -3 21.5 -4t21.5 -1q37 0 49.5 24.5t12.5 69.5v41z" />
+<glyph unicode="ŋ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292q0 -46 -6.5 -81t-23 -58.5t-45.5 -35.5t-74 -12q-14 0 -32.5 2.5t-29.5 5.5l9 73q8 -3 21.5 -4t21.5 -1q37 0 51.5 24.5t14.5 69.5v289q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1 t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505z" />
+<glyph unicode="Ō" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM249 867h284v-72h-284v72z" />
+<glyph unicode="ō" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM155 711h284v-72h-284v72z" />
+<glyph unicode="Ŏ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM391 766q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24 h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="ŏ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM297 610q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="Ő" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM436 876l-123 -140l-48 36l115 160zM601 876l-123 -140l-48 36l115 160z" />
+<glyph unicode="ő" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM342 720l-123 -140l-48 36l115 160zM507 720l-123 -140l-48 36l115 160z" />
+<glyph unicode="Œ" horiz-adv-x="997" d="M163 347q0 -64 19 -114t54.5 -84.5t86.5 -53t114 -18.5q23 0 39.5 0.5t27.5 1.5q12 1 21 3v529q-22 3 -44 4t-44 1q-63 0 -114 -18.5t-86.5 -53t-54.5 -84.5t-19 -113zM437 -7q-81 0 -150 22t-119.5 66t-79 110.5t-28.5 155.5t29 155t79.5 110t119.5 66t150 22 q23 0 51 -2t53 -5h391v-81h-311v-209h275v-79h-275v-243h336v-81h-416q-25 -3 -53.5 -5t-51.5 -2z" />
+<glyph unicode="œ" horiz-adv-x="951" d="M703 -12q-79 0 -131.5 29t-81.5 80q-32 -54 -81 -82t-112 -28q-53 0 -98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5q63 0 112.5 -29.5t80.5 -80.5q33 56 83.5 83t104.5 27q104 0 160.5 -66t56.5 -199q0 -8 -0.5 -13.5t-0.5 -10.5v-9 h-356q6 -80 47.5 -122.5t127.5 -42.5q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5t107.5 -51.5t107.5 51.5t39.5 139.5zM798 310q1 63 -31.5 103.5t-89.5 40.5 q-32 0 -56.5 -12.5t-41 -32.5t-26.5 -46t-13 -53h258z" />
+<glyph unicode="Ŕ" horiz-adv-x="633" d="M427 290l41 -52q24 -33 50 -72.5t51.5 -82.5t43.5 -83h-106q-20 38 -43.5 77t-47.5 74.5t-48 66.5l-42 54q-13 -1 -26 -1h-28h-87v-271h-97v683q41 10 91.5 13.5t92.5 3.5q146 0 222.5 -55t76.5 -164q0 -69 -36.5 -118t-107.5 -73zM280 615q-62 0 -95 -3v-261h69 q50 0 90 5t67.5 19t42.5 39.5t15 67.5q0 39 -15 65t-40.5 41t-60 21t-73.5 6zM431 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="ŕ" horiz-adv-x="390" d="M274 531q12 0 27.5 -1.5t30.5 -4t27.5 -5t18.5 -4.5l-16 -81q-11 4 -36.5 9.5t-65.5 5.5q-26 0 -51.5 -5.5t-33.5 -7.5v-437h-93v498q33 12 82 22.5t110 10.5zM367 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="Ŗ" horiz-adv-x="633" d="M427 290l41 -52q24 -33 50 -72.5t51.5 -82.5t43.5 -83h-106q-20 38 -43.5 77t-47.5 74.5t-48 66.5l-42 54q-13 -1 -26 -1h-28h-87v-271h-97v683q41 10 91.5 13.5t92.5 3.5q146 0 222.5 -55t76.5 -164q0 -69 -36.5 -118t-107.5 -73zM280 615q-62 0 -95 -3v-261h69 q50 0 90 5t67.5 19t42.5 39.5t15 67.5q0 39 -15 65t-40.5 41t-60 21t-73.5 6zM288 -50h89q1 -5 1 -12v-9q0 -32 -9.5 -54t-25.5 -36t-37.5 -20.5t-45.5 -6.5q-13 0 -23.5 1t-13.5 3v56q15 0 27.5 2t20.5 8.5t12.5 19.5t4.5 35v13z" />
+<glyph unicode="ŗ" horiz-adv-x="390" d="M274 531q12 0 27.5 -1.5t30.5 -4t27.5 -5t18.5 -4.5l-16 -81q-11 4 -36.5 9.5t-65.5 5.5q-26 0 -51.5 -5.5t-33.5 -7.5v-437h-93v498q33 12 82 22.5t110 10.5zM85 -50h89q1 -5 1 -12v-9q0 -32 -9.5 -54t-25.5 -36t-37.5 -20.5t-45.5 -6.5q-13 0 -23.5 1t-13.5 3v56 q15 0 27.5 2t20.5 8.5t12.5 19.5t4.5 35v13z" />
+<glyph unicode="Ř" horiz-adv-x="633" d="M427 290l41 -52q24 -33 50 -72.5t51.5 -82.5t43.5 -83h-106q-20 38 -43.5 77t-47.5 74.5t-48 66.5l-42 54q-13 -1 -26 -1h-28h-87v-271h-97v683q41 10 91.5 13.5t92.5 3.5q146 0 222.5 -55t76.5 -164q0 -69 -36.5 -118t-107.5 -73zM280 615q-62 0 -95 -3v-261h69 q50 0 90 5t67.5 19t42.5 39.5t15 67.5q0 39 -15 65t-40.5 41t-60 21t-73.5 6zM160 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ř" horiz-adv-x="390" d="M274 531q12 0 27.5 -1.5t30.5 -4t27.5 -5t18.5 -4.5l-16 -81q-11 4 -36.5 9.5t-65.5 5.5q-26 0 -51.5 -5.5t-33.5 -7.5v-437h-93v498q33 12 82 22.5t110 10.5zM95 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="Ś" horiz-adv-x="536" d="M249 69q152 0 152 104q0 32 -13.5 54.5t-36.5 39t-52.5 28.5t-62.5 24q-38 13 -72 29.5t-59 39t-39.5 53.5t-14.5 75q0 91 62 142t171 51q63 0 114.5 -13.5t75.5 -29.5l-31 -79q-21 13 -62.5 25.5t-96.5 12.5q-28 0 -52 -6t-42 -18t-28.5 -30.5t-10.5 -43.5q0 -28 11 -47 t31 -33.5t46.5 -26.5t58.5 -24q45 -18 82.5 -36t65 -43t42.5 -59.5t15 -83.5q0 -91 -66.5 -140t-187.5 -49q-41 0 -75.5 5.5t-61.5 13t-46.5 16t-30.5 14.5l29 80q23 -13 70 -29t115 -16zM413 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="ś" horiz-adv-x="450" d="M203 67q57 0 84.5 15t27.5 48q0 34 -27 54t-89 45q-30 12 -57.5 24.5t-47.5 29.5t-32 41t-12 59q0 69 51 109.5t139 40.5q22 0 44 -2.5t41 -6t33.5 -7.5t22.5 -7l-17 -80q-15 8 -47 16.5t-77 8.5q-39 0 -68 -15.5t-29 -48.5q0 -17 6.5 -30t20 -23.5t33.5 -19.5t48 -19 q37 -14 66 -27.5t49.5 -31.5t31.5 -43.5t11 -62.5q0 -72 -53.5 -109t-152.5 -37q-69 0 -108 11.5t-53 17.5l17 80q16 -6 51 -18t93 -12zM364 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="Ŝ" horiz-adv-x="536" d="M249 69q152 0 152 104q0 32 -13.5 54.5t-36.5 39t-52.5 28.5t-62.5 24q-38 13 -72 29.5t-59 39t-39.5 53.5t-14.5 75q0 91 62 142t171 51q63 0 114.5 -13.5t75.5 -29.5l-31 -79q-21 13 -62.5 25.5t-96.5 12.5q-28 0 -52 -6t-42 -18t-28.5 -30.5t-10.5 -43.5q0 -28 11 -47 t31 -33.5t46.5 -26.5t58.5 -24q45 -18 82.5 -36t65 -43t42.5 -59.5t15 -83.5q0 -91 -66.5 -140t-187.5 -49q-41 0 -75.5 5.5t-61.5 13t-46.5 16t-30.5 14.5l29 80q23 -13 70 -29t115 -16zM278 925l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="ŝ" horiz-adv-x="450" d="M203 67q57 0 84.5 15t27.5 48q0 34 -27 54t-89 45q-30 12 -57.5 24.5t-47.5 29.5t-32 41t-12 59q0 69 51 109.5t139 40.5q22 0 44 -2.5t41 -6t33.5 -7.5t22.5 -7l-17 -80q-15 8 -47 16.5t-77 8.5q-39 0 -68 -15.5t-29 -48.5q0 -17 6.5 -30t20 -23.5t33.5 -19.5t48 -19 q37 -14 66 -27.5t49.5 -31.5t31.5 -43.5t11 -62.5q0 -72 -53.5 -109t-152.5 -37q-69 0 -108 11.5t-53 17.5l17 80q16 -6 51 -18t93 -12zM229 769l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="Ş" horiz-adv-x="536" d="M249 69q152 0 152 104q0 32 -13.5 54.5t-36.5 39t-52.5 28.5t-62.5 24q-38 13 -72 29.5t-59 39t-39.5 53.5t-14.5 75q0 91 62 142t171 51q63 0 114.5 -13.5t75.5 -29.5l-31 -79q-21 13 -62.5 25.5t-96.5 12.5q-28 0 -52 -6t-42 -18t-28.5 -30.5t-10.5 -43.5q0 -28 11 -47 t31 -33.5t46.5 -26.5t58.5 -24q45 -18 82.5 -36t65 -43t42.5 -59.5t15 -83.5q0 -81 -53.5 -129t-153.5 -58l-11 -24q29 -14 42 -30.5t13 -48.5q0 -11 -5 -24t-17 -24t-32 -18t-49 -7q-26 0 -47.5 4t-34.5 9l11 57q12 -4 25.5 -7t30.5 -3q36 0 36 23q0 11 -11 18.5t-31 15.5 l-7 3q4 11 10 25.5t13 28.5q-38 1 -69.5 6.5t-56.5 13t-43 15.5t-28 14l29 80q23 -13 70 -29t115 -16z" />
+<glyph unicode="ş" horiz-adv-x="450" d="M203 67q57 0 84.5 15t27.5 48q0 34 -27 54t-89 45q-30 12 -57.5 24.5t-47.5 29.5t-32 41t-12 59q0 69 51 109.5t139 40.5q22 0 44 -2.5t41 -6t33.5 -7.5t22.5 -7l-17 -80q-15 8 -47 16.5t-77 8.5q-39 0 -68 -15.5t-29 -48.5q0 -18 6.5 -30.5t20 -22.5t33.5 -19.5 t48 -19.5q36 -14 65 -27.5t50 -31.5t32 -43.5t11 -62.5q0 -62 -40 -98t-115 -45l-8 -15q-3 -7 -5 -13q29 -14 42 -30.5t13 -48.5q0 -11 -5 -24t-17 -24t-32 -18t-49 -7q-26 0 -47.5 4t-34.5 9l11 57q12 -4 25.5 -7t30.5 -3q36 0 36 23q0 11 -11 18.5t-31 15.5l-7 3 q4 12 10.5 27.5t13.5 29.5q-63 2 -98.5 12.5t-48.5 16.5l17 80q16 -6 51 -18t93 -12z" />
+<glyph unicode="Š" horiz-adv-x="536" d="M249 69q152 0 152 104q0 32 -13.5 54.5t-36.5 39t-52.5 28.5t-62.5 24q-38 13 -72 29.5t-59 39t-39.5 53.5t-14.5 75q0 91 62 142t171 51q63 0 114.5 -13.5t75.5 -29.5l-31 -79q-21 13 -62.5 25.5t-96.5 12.5q-28 0 -52 -6t-42 -18t-28.5 -30.5t-10.5 -43.5q0 -28 11 -47 t31 -33.5t46.5 -26.5t58.5 -24q45 -18 82.5 -36t65 -43t42.5 -59.5t15 -83.5q0 -91 -66.5 -140t-187.5 -49q-41 0 -75.5 5.5t-61.5 13t-46.5 16t-30.5 14.5l29 80q23 -13 70 -29t115 -16zM142 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="š" horiz-adv-x="450" d="M203 67q57 0 84.5 15t27.5 48q0 34 -27 54t-89 45q-30 12 -57.5 24.5t-47.5 29.5t-32 41t-12 59q0 69 51 109.5t139 40.5q22 0 44 -2.5t41 -6t33.5 -7.5t22.5 -7l-17 -80q-15 8 -47 16.5t-77 8.5q-39 0 -68 -15.5t-29 -48.5q0 -17 6.5 -30t20 -23.5t33.5 -19.5t48 -19 q37 -14 66 -27.5t49.5 -31.5t31.5 -43.5t11 -62.5q0 -72 -53.5 -109t-152.5 -37q-69 0 -108 11.5t-53 17.5l17 80q16 -6 51 -18t93 -12zM89 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="Ţ" horiz-adv-x="569" d="M296 -37q29 -14 42 -30.5t13 -48.5q0 -11 -5 -24t-17 -24t-32 -18t-49 -7q-26 0 -47.5 4t-34.5 9l11 57q12 -4 25.5 -7t30.5 -3q36 0 36 23q0 11 -11 18.5t-31 15.5l-7 3q4 14 13 34t17 35h-14v609h-218v84h533v-84h-218v-609h-19l-10 -20q-5 -9 -8 -17z" />
+<glyph unicode="ţ" horiz-adv-x="406" d="M265 -37q29 -14 42 -30.5t13 -48.5q0 -11 -5 -24t-17 -24t-32 -18t-49 -7q-26 0 -47.5 4t-34.5 9l11 57q12 -4 25.5 -7t30.5 -3q36 0 36 23q0 11 -11 18.5t-31 15.5l-7 3q4 13 10.5 29.5t14.5 31.5q-40 5 -66.5 21t-42.5 42t-22.5 62.5t-6.5 83.5v464l93 16v-161h197v-78 h-197v-240q0 -39 6 -64.5t18 -40t30 -20.5t42 -6q42 0 67.5 9.5t35.5 13.5l18 -77q-13 -6 -41.5 -15.5t-66.5 -11.5l-8 -14q-3 -7 -5 -13z" />
+<glyph unicode="Ť" horiz-adv-x="569" d="M551 693v-84h-218v-609h-97v609h-218v84h533zM148 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ť" horiz-adv-x="406" d="M169 520h197v-78h-197v-240q0 -39 6 -64.5t18 -40t30 -20.5t42 -6q42 0 67.5 9.5t35.5 13.5l18 -77q-14 -7 -49 -17.5t-80 -10.5q-53 0 -87.5 13.5t-55.5 40.5t-29.5 66.5t-8.5 91.5v464l93 16v-161zM328 776l-27 -194h-62v194h89z" />
+<glyph unicode="Ŧ" horiz-adv-x="569" d="M551 693v-84h-218v-216h130v-75h-130v-318h-97v318h-130v75h130v216h-218v84h533z" />
+<glyph unicode="ŧ" horiz-adv-x="406" d="M169 520h197v-78h-197v-136h197v-70h-197v-34q0 -39 6 -64.5t18 -40t30 -20.5t42 -6q42 0 67.5 9.5t35.5 13.5l18 -77q-14 -7 -49 -17.5t-80 -10.5q-53 0 -87.5 13.5t-55.5 40.5t-29.5 66.5t-8.5 91.5v464l93 16v-161z" />
+<glyph unicode="Ũ" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM511 867q-5 -12 -13.5 -28t-21.5 -29.5t-30.5 -23t-38.5 -9.5 q-20 0 -37.5 7t-33.5 15q-17 8 -29 12t-23 4q-17 0 -31.5 -14t-22.5 -30l-48 24q4 12 13 28t22 29.5t30.5 23t38.5 9.5q20 0 37.5 -7t33.5 -15q17 -8 29 -12t23 -4q17 0 31.5 14t22.5 30z" />
+<glyph unicode="ũ" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM453 711q-5 -12 -13.5 -28t-21.5 -29.5t-30.5 -23t-38.5 -9.5q-20 0 -37.5 7t-33.5 15q-17 8 -29 12 t-23 4q-17 0 -31.5 -14t-22.5 -30l-48 24q4 12 13 28t22 29.5t30.5 23t38.5 9.5q20 0 37.5 -7t33.5 -15q17 -8 29 -12t23 -4q17 0 31.5 14t22.5 30z" />
+<glyph unicode="Ū" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM204 867h284v-72h-284v72z" />
+<glyph unicode="ū" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM144 711h284v-72h-284v72z" />
+<glyph unicode="Ŭ" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM346 766q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60 q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="ŭ" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM286 610q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24t11.5 -23.5t22 -17.5 t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="Ů" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM449 833q0 -24 -8.5 -42.5t-22.5 -32t-32.5 -20.5t-39.5 -7 t-39.5 7t-32.5 20.5t-22.5 32t-8.5 42.5t8.5 42.5t22.5 32t32.5 20.5t39.5 7t39.5 -7t32.5 -20.5t22.5 -32t8.5 -42.5zM399 833q0 26 -15.5 40.5t-37.5 14.5t-37.5 -14.5t-15.5 -40.5t15.5 -40.5t37.5 -14.5t37.5 14.5t15.5 40.5z" />
+<glyph unicode="ů" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM389 677q0 -24 -8.5 -42.5t-22.5 -32t-32.5 -20.5t-39.5 -7t-39.5 7t-32.5 20.5t-22.5 32t-8.5 42.5 t8.5 42.5t22.5 32t32.5 20.5t39.5 7t39.5 -7t32.5 -20.5t22.5 -32t8.5 -42.5zM339 677q0 26 -15.5 40.5t-37.5 14.5t-37.5 -14.5t-15.5 -40.5t15.5 -40.5t37.5 -14.5t37.5 14.5t15.5 40.5z" />
+<glyph unicode="Ű" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM391 876l-123 -140l-48 36l115 160zM556 876l-123 -140l-48 36 l115 160z" />
+<glyph unicode="ű" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM331 720l-123 -140l-48 36l115 160zM496 720l-123 -140l-48 36l115 160z" />
+<glyph unicode="Ų" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -81 -29.5 -144t-92.5 -99l-41 -26q-19 -12 -34 -28q-14 -16 -21.5 -28t-7.5 -26q0 -29 40 -29q7 0 18.5 1.5 t22.5 5.5l7 -61q-11 -5 -28.5 -8t-37.5 -3q-56 0 -83 20.5t-27 55.5q0 28 18.5 53.5t37.5 42.5h-5z" />
+<glyph unicode="ų" d="M496 12q-12 -9 -26.5 -22t-29.5 -29q-14 -16 -23 -28t-9 -26q0 -29 40 -29q7 0 18.5 1.5t22.5 5.5l7 -61q-11 -5 -28.5 -8t-37.5 -3q-56 0 -83 20.5t-27 55.5q0 23 14 44.5t31 39.5q5 6 12.5 12t12.5 11q-23 -3 -47.5 -5t-52.5 -2q-60 0 -101 17.5t-66 49.5t-36 75.5 t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-508z" />
+<glyph unicode="Ŵ" horiz-adv-x="933" d="M467 470q-42 -134 -85 -248l-86 -222h-97q-53 153 -93.5 323t-75.5 370h102l29 -156q15 -78 31 -151l32 -141q16 -67 33 -124l85 231q45 125 84 259h84q39 -134 85 -259l86 -231q16 56 32 123t31.5 140.5l30.5 151.5l29 157h99q-36 -200 -76.5 -370t-92.5 -323h-97 q-44 108 -86 222t-84 248zM466 925l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="ŵ" horiz-adv-x="781" d="M507 0q-28 72 -59.5 164.5t-57.5 192.5q-26 -100 -57 -192.5t-59 -164.5h-81q-46 103 -90 235t-83 285h100q10 -47 24 -102t29.5 -110t32.5 -106t32 -89q17 47 33.5 99.5t31.5 105.5l29 106q13 51 23 96h77q9 -45 22 -96.5t28 -105t31.5 -106t33.5 -99.5q15 38 31.5 89 t32.5 106t30 110t24 102h96q-39 -153 -83 -285t-90 -235h-81zM390 769l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="Ŷ" horiz-adv-x="602" d="M253 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97zM301 925l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="ŷ" horiz-adv-x="501" d="M21 -97q11 -5 28.5 -9.5t34.5 -4.5q55 0 86 24.5t56 79.5q-63 120 -117.5 254.5t-90.5 272.5h100q11 -45 26.5 -97t34.5 -107t41 -110t46 -106q38 105 66 208t53 212h96q-36 -147 -80 -282.5t-95 -253.5q-20 -45 -41.5 -77.5t-47.5 -53.5t-58.5 -31t-73.5 -10 q-11 0 -23 1.5t-23.5 4t-21 5.5t-13.5 5zM263 769l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="Ÿ" horiz-adv-x="602" d="M253 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97zM206 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM396 772 q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ź" horiz-adv-x="577" d="M528 616l-54 -62l-64 -82l-70 -94l-70 -100q-35 -50 -66 -100t-56 -95h390v-83h-503v65q21 40 49 88l62 98l67 101l69 98l68 88q32 41 59 72h-356v83h475v-77zM429 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="ź" horiz-adv-x="475" d="M427 450q-21 -23 -55 -65l-74 -93l-80 -107q-39 -56 -69 -107h286v-78h-397v62q24 44 59 97t73 105l76 100l63 78h-257v78h375v-70zM368 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="Ż" horiz-adv-x="577" d="M528 616l-54 -62l-64 -82l-70 -94l-70 -100q-35 -50 -66 -100t-56 -95h390v-83h-503v65q21 40 49 88l62 98l67 101l69 98l68 88q32 41 59 72h-356v83h475v-77zM294 770q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z " />
+<glyph unicode="ż" horiz-adv-x="475" d="M427 450q-21 -23 -55 -65l-74 -93l-80 -107q-39 -56 -69 -107h286v-78h-397v62q24 44 59 97t73 105l76 100l63 78h-257v78h375v-70zM233 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="Ž" horiz-adv-x="577" d="M528 616l-54 -62l-64 -82l-70 -94l-70 -100q-35 -50 -66 -100t-56 -95h390v-83h-503v65q21 40 49 88l62 98l67 101l69 98l68 88q32 41 59 72h-356v83h475v-77zM158 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ž" horiz-adv-x="475" d="M427 450q-21 -23 -55 -65l-74 -93l-80 -107q-39 -56 -69 -107h286v-78h-397v62q24 44 59 97t73 105l76 100l63 78h-257v78h375v-70zM97 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ſ" horiz-adv-x="277" d="M285 776q41 0 70.5 -6t41.5 -11l-17 -80q-12 6 -34 11.5t-54 5.5q-65 0 -91 -35.5t-26 -95.5v-565h-93v567q0 100 49 154.5t154 54.5z" />
+<glyph unicode="ƀ" horiz-adv-x="593" d="M175 493q17 11 51.5 23t79.5 12q56 0 99.5 -19.5t73.5 -55t45.5 -85t15.5 -109.5q0 -63 -18.5 -113t-52.5 -85.5t-82 -54t-108 -18.5q-65 0 -115 9t-82 18v599h-74v69h74v77l93 16v-93h177v-69h-177v-121zM175 81q14 -4 39.5 -7.5t63.5 -3.5q75 0 120 49t45 140 q0 40 -8 74.5t-26 59.5t-46.5 39t-68.5 14q-38 0 -70 -13t-49 -27v-325z" />
+<glyph unicode="Ɓ" horiz-adv-x="748" d="M376 -6q-21 0 -45.5 1t-49 3t-48.5 5t-44 8v598q-91 -5 -91 -77q0 -8 0.5 -16.5t1.5 -14.5l-77 -9q-2 7 -4 21t-2 28q0 59 29 91t78.5 47t114.5 18t137 3q60 0 112.5 -9t91.5 -30.5t61.5 -56.5t22.5 -86q0 -57 -28.5 -93.5t-76.5 -53.5q64 -18 100 -57t36 -111 q0 -104 -76.5 -156.5t-242.5 -52.5zM285 324v-246q11 -1 26 -2q13 -1 31 -1h40q43 0 81.5 5.5t67.5 19.5t46.5 39t17.5 63q0 34 -13 57.5t-37.5 38t-58.5 20.5t-76 6h-125zM285 400h98q41 0 74.5 5.5t57.5 18t37 34t13 53.5q0 30 -14.5 50.5t-39.5 33t-58.5 18.5t-70.5 6 q-23 0 -40.5 -0.5t-30.5 -0.5h-26v-218z" />
+<glyph unicode="Ƃ" horiz-adv-x="623" d="M185 610v-176h86q73 0 130.5 -12t97.5 -38.5t61 -68t21 -101.5q0 -110 -80 -165.5t-226 -55.5q-21 0 -45.5 1t-49 3t-48.5 5t-44 8v683h428v-83h-331zM283 78q39 0 74.5 6t62.5 21.5t43 41.5t16 66q0 42 -14.5 69t-41.5 43t-66.5 22.5t-89.5 6.5h-82v-273q11 -1 26 -2 q13 -1 31 -1h41z" />
+<glyph unicode="ƃ" horiz-adv-x="593" d="M175 693v-200q17 11 51.5 23t79.5 12q56 0 99.5 -19.5t73.5 -55t45.5 -85t15.5 -109.5q0 -63 -18.5 -113t-52.5 -85.5t-82 -54t-108 -18.5q-65 0 -115 9t-82 18v756h401v-78h-308zM175 81q14 -4 39.5 -7.5t63.5 -3.5q75 0 120 49t45 140q0 40 -8 74.5t-26 59.5t-46.5 39 t-68.5 14q-38 0 -70 -13t-49 -27v-325z" />
+<glyph unicode="Ƅ" horiz-adv-x="593" d="M175 497q17 11 51.5 23t79.5 12q56 0 99.5 -20t73.5 -56t45.5 -86t15.5 -110q0 -63 -18.5 -113.5t-52.5 -85.5t-82 -54t-108 -19q-65 0 -115 9t-82 18v617l-70 76q36 21 77.5 39t85.5 29v-279zM175 81q14 -4 39.5 -7.5t63.5 -3.5q75 0 120 49.5t45 140.5q0 40 -8 75 t-26 60.5t-46.5 40t-68.5 14.5q-38 0 -70 -13t-49 -27v-329z" />
+<glyph unicode="ƅ" horiz-adv-x="624" d="M483 217q0 42 -16 70t-44.5 44t-68 22.5t-87.5 6.5h-39q-19 0 -39 -2v-277q11 -1 25 -2q12 -1 30 -1h40q39 0 75 6t63.5 22t44 42.5t16.5 68.5zM189 441q20 2 40.5 2.5t40.5 0.5q315 0 315 -227q0 -112 -81.5 -168t-227.5 -56q-42 0 -92.5 3.5t-91.5 13.5v545l-70 76 q36 21 78.5 39t88.5 30v-259z" />
+<glyph unicode="Ɔ" horiz-adv-x="624" d="M564 347q0 -85 -23.5 -152.5t-66.5 -114t-102.5 -71t-132.5 -24.5q-42 0 -78 5t-63.5 12t-45.5 14.5t-25 12.5l25 80q22 -11 65.5 -25t109.5 -14q58 0 101.5 20t73 56.5t44.5 87.5t15 113t-14.5 113t-43.5 87.5t-73 56.5t-103 20q-66 0 -108.5 -13.5t-64.5 -24.5l-25 77 q7 5 24.5 13t44.5 15.5t62.5 12.5t77.5 5q73 0 133 -24.5t103 -71t66.5 -113.5t23.5 -153z" />
+<glyph unicode="Ƈ" horiz-adv-x="667" d="M386 -15q-73 0 -133 24t-103 70t-66.5 113.5t-23.5 154.5t26.5 154.5t71.5 113.5t105 70t128 24q41 -2 69 -7.5t52 -13.5q16 52 47.5 75t94.5 23q14 0 33 -3.5t30 -8.5l-16 -71q-8 3 -21.5 5t-21.5 2q-28 0 -44 -11t-25 -29t-13.5 -40.5t-10.5 -44.5q-9 4 -26 10.5 t-39 13t-47.5 11t-51.5 4.5q-55 0 -99 -19t-75 -55t-47.5 -87.5t-16.5 -115.5q0 -62 14.5 -113t43.5 -87.5t72.5 -56.5t101.5 -20q67 0 111 14t66 25l25 -80q-7 -5 -25 -12.5t-45 -14.5t-63 -12t-78 -5z" />
+<glyph unicode="ƈ" horiz-adv-x="512" d="M420 430q-6 2 -17.5 5.5t-26.5 7t-32 6t-33 2.5q-78 0 -119.5 -49t-41.5 -143q0 -42 9.5 -77t30 -60t52.5 -38.5t78 -13.5q37 0 67 7t47 15l13 -78q-8 -5 -23 -9.5t-34 -8t-40.5 -6t-41.5 -2.5q-63 0 -110.5 20t-80 56t-48.5 85.5t-16 109.5t17.5 110t49.5 86.5t78.5 57 t103.5 20.5q30 0 60 -6q18 56 49 79t90 23q14 0 32 -3.5t29 -8.5l-16 -67q-8 3 -20.5 5t-20.5 2q-26 0 -41 -11t-23.5 -29t-12.5 -41z" />
+<glyph unicode="Ɖ" horiz-adv-x="730" d="M670 347q0 -90 -28 -156.5t-79 -110t-122 -65t-156 -21.5q-42 0 -92.5 3.5t-91.5 13.5v313h-80v75h80v284q41 10 91.5 13.5t92.5 3.5q85 0 156 -21.5t122 -65t79 -110t28 -156.5zM293 79q138 0 206 70.5t68 197.5t-68 197.5t-206 70.5q-41 0 -63.5 -1t-31.5 -2v-213h130 v-75h-130v-242q9 -1 31.5 -2t63.5 -1z" />
+<glyph unicode="Ɗ" horiz-adv-x="818" d="M758 347q0 -90 -28 -156.5t-79 -110t-122 -65t-156 -21.5q-42 0 -92.5 3.5t-91.5 13.5v598q-92 -5 -92 -77q0 -8 0.5 -16.5t1.5 -14.5l-77 -9q-2 7 -4 21t-2 28q0 59 29.5 91t78.5 47t113.5 18t135.5 3q85 0 156 -21.5t122 -65t79 -110t28 -156.5zM381 79q138 0 206 70.5 t68 197.5t-68 197.5t-206 70.5q-45 0 -69.5 -0.5t-25.5 -0.5v-532q11 -1 25 -2q12 -1 29 -1h41z" />
+<glyph unicode="Ƌ" horiz-adv-x="629" d="M113 612v81h428v-683q-20 -5 -44 -8t-49 -5t-49 -3t-45 -1q-146 0 -226 55.5t-80 165.5q0 60 21 101.5t61 68t97.5 38.5t130.5 12h86v178h-331zM346 78h41q18 0 31 1q15 1 26 2v273h-82q-50 0 -89.5 -6.5t-66.5 -22.5t-41.5 -43t-14.5 -69q0 -40 16 -66t43 -41.5 t62.5 -21.5t74.5 -6z" />
+<glyph unicode="ƌ" horiz-adv-x="593" d="M418 406q-17 14 -49 27t-70 13q-40 0 -68.5 -14t-46.5 -39t-26 -59.5t-8 -74.5q0 -91 45 -140t120 -49q38 0 63.5 3.5t39.5 7.5v325zM110 693v78h401v-756q-32 -9 -82 -18t-115 -9q-60 0 -108 18.5t-82 54t-52.5 85.5t-18.5 113q0 60 15.5 109.5t45.5 85t73.5 55 t99.5 19.5q45 0 79.5 -12t51.5 -23v200h-308z" />
+<glyph unicode="ƍ" horiz-adv-x="586" d="M533 290q0 -35 -12 -69.5t-33.5 -66t-51.5 -57.5t-66 -42q33 -20 55 -45t22 -63q0 -36 -15.5 -61t-42 -41t-60.5 -23t-70 -7q-25 0 -50 2.5t-47 6.5t-38.5 8.5t-24.5 7.5l17 76q15 -7 52 -17t89 -10q48 0 74 10.5t26 39.5q0 21 -12.5 35t-33.5 26t-48.5 24.5t-57.5 29.5 q-69 38 -110.5 92t-41.5 138q0 42 11.5 86.5t39.5 80.5t75.5 59t119.5 23q59 0 103 -21t73 -55t43.5 -77.5t14.5 -89.5zM228 137q15 -11 32 -21t34 -19q32 13 59 33.5t46.5 46t30 54.5t10.5 59q0 33 -9 62.5t-26.5 52t-44 35.5t-61.5 13q-46 0 -75.5 -15.5t-46 -40t-23 -54 t-6.5 -56.5q0 -29 6 -51t16.5 -40t25 -32t32.5 -27z" />
+<glyph unicode="Ǝ" horiz-adv-x="575" d="M39 0v83h351v240h-290v81h290v206h-326v83h423v-693h-448z" />
+<glyph unicode="Ə" horiz-adv-x="709" d="M548 370q-9 129 -68.5 191.5t-181.5 62.5q-32 0 -58.5 -4.5t-47.5 -11t-36.5 -13.5t-25.5 -12l-24 80q8 6 26 13.5t44 15t60 12.5t73 5q87 0 151 -27t106 -75t62.5 -114t20.5 -143q0 -92 -24 -160t-66 -114t-98.5 -68.5t-122.5 -22.5q-131 0 -205.5 87t-74.5 260 q0 8 1 20t2 18h487zM160 291q0 -49 12 -90t34.5 -70.5t56 -46t77.5 -16.5q51 0 88.5 20t62.5 51.5t38 71.5t16 80h-385z" />
+<glyph unicode="Ɛ" horiz-adv-x="576" d="M429 326h-62q-45 0 -83.5 -5.5t-67 -20.5t-45 -40.5t-16.5 -65.5q0 -68 47.5 -96.5t132.5 -28.5q31 0 59 5t51 12t41.5 15t29.5 14l29 -80q-11 -6 -31 -15t-47 -16.5t-61 -13t-72 -5.5q-63 0 -115 11.5t-88.5 36.5t-57 64.5t-20.5 94.5q0 40 12.5 70t33 52.5t48 37 t57.5 22.5q-59 19 -89.5 61t-30.5 90q0 47 18 81.5t50 57t76 33.5t96 11q31 0 61.5 -3.5t56 -9.5t46 -13.5t32.5 -15.5l-31 -79q-21 13 -65 25.5t-99 12.5q-64 0 -102.5 -28.5t-38.5 -73.5q0 -35 18 -58t46 -36.5t62 -18.5t67 -5h52v-79z" />
+<glyph unicode="Ƒ" horiz-adv-x="541" d="M88 693h418v-81h-321v-212h285v-79h-285v-321q0 -46 -6.5 -81t-23 -58.5t-45.5 -35.5t-74 -12q-14 0 -32.5 2.5t-29.5 5.5l9 73q8 -3 21.5 -4t21.5 -1q37 0 49.5 24.5t12.5 69.5v710z" />
+<glyph unicode="ƒ" horiz-adv-x="568" d="M222 26q-8 -50 -23 -89.5t-39 -66.5t-59 -41t-82 -14q-39 0 -64.5 4.5t-37.5 9.5l19 79q9 -4 28 -8.5t46 -4.5q31 0 52 9.5t34 27t20.5 42t12.5 54.5l74 467q8 50 23.5 89.5t41 66.5t62 41t86.5 14q41 0 70.5 -7t41.5 -12l-19 -80q-12 6 -34 12.5t-54 6.5q-33 0 -55 -9.5 t-36 -27t-21.5 -42t-12.5 -54.5l-12 -73h179v-78h-191z" />
+<glyph unicode="Ɠ" horiz-adv-x="676" d="M511 338h97v-321q-12 -4 -34.5 -9t-52 -10t-64.5 -8.5t-71 -3.5q-73 0 -133 24t-103 70t-66.5 113t-23.5 154t26 154.5t70.5 113.5t104.5 70t129 24q45 0 74 -6.5t53 -14.5q16 52 47.5 75t94.5 23q14 0 33 -3.5t30 -8.5l-16 -71q-8 3 -21.5 5t-21.5 2q-28 0 -44 -11 t-25 -29t-13.5 -40.5t-10.5 -44.5q-9 4 -26.5 10.5t-40.5 13t-50.5 11t-57.5 4.5q-53 0 -96 -19t-73 -55t-46.5 -87.5t-16.5 -115.5q0 -62 14.5 -113t44 -87.5t73 -56.5t102.5 -20q42 0 71.5 4.5t42.5 8.5v255z" />
+<glyph unicode="Ɣ" horiz-adv-x="654" d="M274 158l-65 119l-64 126l-65 137l-70 153h101l105 -225l112 -226l111 226l106 225h99l-70 -153l-66 -136l-64 -125l-64 -118l12 -21q16 -29 31 -53.5t25.5 -46.5t17 -43t6.5 -43t-7 -46.5t-24 -44.5t-45 -33.5t-69 -13.5t-69 13.5t-45 33.5t-24 44.5t-7 46.5t7 43t18 43 t26 46.5t31 53.5zM327 87l-39 -64q-20 -32 -20 -64q0 -27 15 -46.5t44 -19.5t44 19.5t15 46.5q0 32 -20 64z" />
+<glyph unicode="ƕ" horiz-adv-x="895" d="M492 234q0 -88 28.5 -124.5t88.5 -36.5t88.5 36.5t28.5 124.5v286h93v-299q0 -44 -8.5 -86t-31.5 -74.5t-64 -52t-106 -19.5t-106 19.5t-64 52t-31.5 74.5t-8.5 86v51q0 48 -5.5 82t-19.5 55t-38.5 30.5t-61.5 9.5q-30 0 -59 -6t-40 -11v-432h-93v760l93 16v-266 q26 10 53 15.5t56 5.5q63 0 103.5 -17.5t64 -49t32 -75.5t8.5 -97v-58z" />
+<glyph unicode="Ɩ" horiz-adv-x="380" d="M88 693h97v-508q0 -62 23.5 -89t71.5 -27q26 0 43.5 4.5t28.5 8.5l18 -80q-13 -6 -41.5 -11.5t-62.5 -5.5q-96 0 -137 48.5t-41 155.5v504z" />
+<glyph unicode="Ɨ" horiz-adv-x="329" d="M16 399h100v294h97v-294h100v-75h-100v-324h-97v324h-100v75z" />
+<glyph unicode="Ƙ" horiz-adv-x="668" d="M284 372q43 -31 92.5 -75.5t97.5 -94.5t89.5 -102.5t68.5 -99.5h-114q-30 47 -70 94.5t-84.5 91t-90.5 80.5t-88 63v-329h-97v693h97v-310l47 59l56 66l58 69l58 63q30 32 57.5 49.5t72.5 17.5q42 0 71 -15.5t44 -32.5l-44 -69q-17 16 -35.5 24t-32.5 8 q-22 0 -37.5 -10.5t-35.5 -31.5q-57 -58 -100 -109z" />
+<glyph unicode="ƙ" horiz-adv-x="526" d="M270 286q30 -23 63.5 -57t66 -73.5t61.5 -80t49 -75.5h-109q-21 35 -48.5 71.5t-57.5 70t-61 61.5t-59 47v-250h-93v589q0 46 6.5 81t23 58.5t45.5 35.5t74 12q14 0 32.5 -2.5t29.5 -5.5l-9 -73q-8 3 -21.5 4t-21.5 1q-37 0 -51.5 -24.5t-14.5 -69.5v-304l53 53l57 59 l53 58l43 48h109l-50 -55l-56 -61l-58 -60z" />
+<glyph unicode="ƚ" horiz-adv-x="291" d="M252 -10q-86 2 -122 37t-36 109v231h-78v70h78v323l93 16v-339h92v-70h-92v-216q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ƛ" horiz-adv-x="514" d="M266 426q-27 -54 -50.5 -111.5t-43 -113t-34.5 -107t-25 -94.5h-95q14 58 36 124t49 135t58.5 137t63.5 130l-23 53l-106 -36l-23 63l100 34q-17 29 -36.5 44t-48.5 15q-14 0 -24.5 -2t-15.5 -4l-13 75q5 2 23.5 5t42.5 3q60 0 96.5 -29.5t60.5 -77.5l124 43l23 -63 l-119 -41q34 -82 64.5 -163.5t57 -159.5t48 -150t38.5 -135h-97l-59 205q-32 111 -72 221z" />
+<glyph unicode="Ɯ" horiz-adv-x="979" d="M502 45q-11 -7 -29.5 -17.5t-43 -20t-54.5 -16t-64 -6.5q-69 0 -112.5 20.5t-68 57.5t-33.5 88t-9 111v431h97v-406q0 -57 6 -98t21 -67.5t41.5 -39t68.5 -12.5q22 0 43.5 4t39.5 10.5t32 14.5t23 15q-10 32 -14.5 70.5t-4.5 77.5v431h97v-406q0 -57 6 -98t21 -67.5 t41.5 -39t67.5 -12.5q16 0 34 1t35 3t30.5 4t20.5 4v611h97v-681q-37 -10 -98 -18.5t-130 -8.5q-51 0 -91 14t-70 46z" />
+<glyph unicode="Ɲ" horiz-adv-x="732" d="M563 0l-51 83l-61 95l-69 101l-70 99l-68 89q-33 42 -61 74v-541q0 -46 -6 -81t-22 -58.5t-45 -35.5t-74 -12q-14 0 -32.5 2.5t-29.5 5.5l9 73q8 -3 21.5 -4t21.5 -1q37 0 49.5 24.5t12.5 69.5v710h77q47 -50 101 -117l106 -136l98 -139q47 -68 79 -121v513h95v-693h-81z " />
+<glyph unicode="ƞ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505z" />
+<glyph unicode="Ɵ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM391 70q49 0 89 17t69 48.5t46.5 76t21.5 100.5h-454 q9 -112 68.5 -177t159.5 -65zM391 624q-100 0 -159 -63t-69 -174h454q-5 55 -22.5 98.5t-47 74.5t-69 47.5t-87.5 16.5z" />
+<glyph unicode="Ơ" horiz-adv-x="782" d="M162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5q52 0 94.5 19.5t72 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-72 55.5t-94.5 19.5q-53 0 -95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM723 765q0 -48 -20.5 -91t-58.5 -79q36 -45 57 -107t21 -141 q0 -89 -26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157t26.5 157t72 113.5t106 68.5t128.5 23q55 0 105 -15.5t92 -47.5q26 29 33 55.5t7 61.5q0 10 -0.5 21t-1.5 17h94q1 -11 1 -21v-15z" />
+<glyph unicode="ơ" horiz-adv-x="594" d="M53 260q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5q46 0 86 -15t71 -43q24 29 31 54.5t7 60.5q0 10 -0.5 21t-1.5 17h92q1 -11 1 -20v-16q0 -101 -82 -174q19 -32 29.5 -72t10.5 -86q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86 t-18 112zM150 260q0 -88 39 -139.5t108 -51.5t108 51.5t39 139.5t-39 139.5t-108 51.5t-108 -51.5t-39 -139.5z" />
+<glyph unicode="Ƣ" horiz-adv-x="1028" d="M377 708q51 0 98.5 -15t86.5 -44q23 19 65.5 39t100.5 20q69 0 110.5 -19t64 -53.5t30 -84t7.5 -109.5v-442h-97v417q0 57 -6.5 96t-20.5 63.5t-38 35.5t-58 11q-32 0 -56.5 -10.5t-41.5 -22.5q33 -45 52.5 -105.5t19.5 -137.5q0 -89 -25 -156.5t-68.5 -113t-101 -68.5 t-122.5 -23t-122.5 23t-101 68.5t-69 113t-25.5 156.5t25.5 156.5t69 113t101.5 68.5t122 23zM377 71q51 0 91 19.5t67.5 55.5t42 87t14.5 114t-14.5 114t-42 87t-67.5 55.5t-91 19.5t-91 -19.5t-68 -55.5t-42.5 -87t-14.5 -114t14.5 -114t42.5 -87t68 -55.5t91 -19.5z" />
+<glyph unicode="ƣ" horiz-adv-x="825" d="M528 260q0 -62 -18 -112t-49.5 -86t-75 -55.5t-94.5 -19.5t-94.5 19.5t-75.5 55.5t-50 86t-18 112q0 61 18 111.5t50 86.5t75.5 55.5t94.5 19.5q39 0 73.5 -12t63.5 -34q20 14 56.5 29t80.5 15q60 0 96 -17.5t55.5 -49.5t26 -76t6.5 -96v-477h-93v457q0 46 -4 79t-15 55 t-31 32.5t-51 10.5q-26 0 -43 -6.5t-29 -14.5q21 -34 33 -76t12 -92zM432 260q0 88 -38 139.5t-103 51.5t-103 -51.5t-38 -139.5t38 -139.5t103 -51.5t103 51.5t38 139.5z" />
+<glyph unicode="Ƥ" horiz-adv-x="714" d="M374 700q146 0 224.5 -55.5t78.5 -165.5q0 -60 -21.5 -101.5t-62 -68t-98.5 -38.5t-131 -12h-77v-259h-97v609q-92 -5 -92 -77q0 -8 0.5 -16.5t1.5 -14.5l-77 -9q-2 7 -4 21t-2 28q0 59 29.5 91t78.5 47t113.5 18t135.5 3zM382 615q-46 0 -69 -0.5t-26 -0.5v-275h73 q50 0 90 6.5t67.5 22.5t42.5 43t15 69q0 40 -15.5 66t-42 41.5t-61.5 21.5t-74 6z" />
+<glyph unicode="ƥ" horiz-adv-x="593" d="M443 259q0 91 -45 140.5t-120 49.5q-15 0 -31 -2t-30.5 -4.5t-25.5 -5.5t-16 -5v-322q17 -14 49 -27t70 -13q40 0 68.5 14.5t46.5 40t26 60t8 74.5zM540 259q0 -59 -15.5 -109t-45.5 -86t-73.5 -56t-99.5 -20q-45 0 -79.5 12t-51.5 23v-208h-93v774q0 46 6.5 81t23 58.5 t45.5 35.5t74 12q14 0 32.5 -2.5t29.5 -5.5l-9 -73q-8 3 -21.5 4t-21.5 1q-37 0 -51.5 -24.5t-14.5 -69.5v-95q26 9 54.5 14.5t54.5 5.5q57 0 104.5 -19t81 -54t52 -85.5t18.5 -113.5z" />
+<glyph unicode="Ʀ" horiz-adv-x="633" d="M424 292q17 -21 45 -59.5t60.5 -90.5t67.5 -116t66 -135h-104q-72 146 -133 241t-100 141h-141v-273h-97v776h97v-82q37 3 87 3q146 0 222.5 -53.5t76.5 -162.5q0 -68 -38.5 -116.5t-108.5 -72.5zM280 615h-54q-22 0 -41 -2v-261h69q50 0 90 4.5t67.5 18.5t42.5 39.5 t15 67.5q0 39 -15 65t-40.5 41t-60 21t-73.5 6z" />
+<glyph unicode="Ƨ" horiz-adv-x="536" d="M287 69q68 0 115 16t70 29l29 -80q-11 -6 -30.5 -14.5t-46.5 -16t-61.5 -13t-75.5 -5.5q-121 0 -187.5 49t-66.5 140q0 49 15 83.5t42.5 59.5t65 43t82.5 36q31 12 58 24t47 26.5t31 33.5t11 47q0 25 -10.5 43.5t-28.5 30.5t-42 18t-52 6q-55 0 -96.5 -12.5t-62.5 -25.5 l-31 79q24 16 75.5 29.5t114.5 13.5q109 0 171 -51t62 -142q0 -44 -14.5 -75t-39.5 -53.5t-59 -39t-72 -29.5q-33 -12 -62.5 -24t-52.5 -28.5t-36.5 -39t-13.5 -54.5q0 -104 152 -104z" />
+<glyph unicode="ƨ" horiz-adv-x="450" d="M247 67q58 0 93 12t51 18l17 -80q-14 -6 -53 -17.5t-108 -11.5q-98 0 -152 37t-54 109q0 37 11 62.5t32 43.5t50 31.5t65 27.5q55 21 81.5 39t26.5 53q0 33 -29 48.5t-68 15.5q-45 0 -77 -8.5t-47 -16.5l-17 80q8 3 22.5 7t33.5 7.5t40.5 6t44.5 2.5q88 0 139 -40.5 t51 -109.5q0 -35 -12 -59t-32 -41t-47.5 -29.5t-57.5 -24.5q-62 -25 -89 -45t-27 -54q0 -33 27.5 -48t84.5 -15z" />
+<glyph unicode="Ʃ" horiz-adv-x="567" d="M374 361q-55 -72 -117 -141.5t-109 -136.5h377v-83h-490v73q19 31 45 65l58 70l62 75l62 77l-60 76l-58 74l-54 66q-24 31 -41 56v61h475v-83h-347q14 -21 37 -50l48 -60l56 -68z" />
+<glyph unicode="ƪ" horiz-adv-x="290" d="M208 -26q0 -23 4 -38t13 -24t24 -13.5t37 -7.5l-13 -78q-86 2 -122 37t-36 109v569q-33 -20 -76 -20q-34 0 -58.5 12t-40 30.5t-23 42.5t-7.5 48q0 18 6.5 41.5t23 44.5t44 35t69.5 14q85 0 120 -48t35 -133v-621zM115 621q0 40 -17 61.5t-51 21.5q-32 0 -48.5 -20.5 t-16.5 -43.5q0 -11 3.5 -22.5t11 -21.5t20 -16t30.5 -6q22 0 38 8.5t30 24.5v14z" />
+<glyph unicode="ƫ" horiz-adv-x="406" d="M169 520h197v-78h-197v-240q0 -39 6 -64.5t18 -40t30 -20.5t42 -6q43 0 72 5t39 7q1 -6 2 -17l2 -23q1 -12 1.5 -23.5t0.5 -19.5q0 -43 -5 -77.5t-19.5 -59t-41.5 -37.5t-71 -13q-14 0 -32 2.5t-29 5.5l8 68q6 -2 20 -3.5t22 -1.5q38 0 51 25t13 70q0 2 -0.5 5.5 t-0.5 6.5v6l-29 -3q-17 -1 -34 -1q-85 0 -121.5 51.5t-36.5 156.5v464l93 16v-161z" />
+<glyph unicode="Ƭ" horiz-adv-x="596" d="M193 612q-42 0 -67 -21.5t-25 -58.5q0 -8 0.5 -16.5t1.5 -14.5l-80 -9q-2 7 -4 21t-2 28q0 45 16 74.5t40.5 46.5t55 24t60.5 7h389v-81h-218v-612h-97v612h-70z" />
+<glyph unicode="ƭ" horiz-adv-x="406" d="M169 520h203v-78h-203v-240q0 -39 6 -64.5t18 -40t30 -20.5t42 -6q43 0 68 9.5t34 13.5l19 -76q-14 -7 -49 -18t-80 -11q-53 0 -87.5 13.5t-55.5 40.5t-29.5 66.5t-8.5 91.5v366q0 100 48.5 154.5t154.5 54.5q42 0 71 -6t41 -11l-17 -80q-12 6 -34 11.5t-54 5.5 q-65 0 -91 -35.5t-26 -95.5v-45z" />
+<glyph unicode="Ʈ" horiz-adv-x="569" d="M333 -17q0 -45 12.5 -69.5t49.5 -24.5q8 0 21.5 1t21.5 4l9 -73q-11 -3 -29.5 -5.5t-32.5 -2.5q-45 0 -74 12t-45.5 35.5t-23 58.5t-6.5 81v612h-218v81h533v-81h-218v-629z" />
+<glyph unicode="Ư" horiz-adv-x="714" d="M735 801q1 -11 1 -21v-15q0 -23 -6 -46t-21 -42.5t-39.5 -33t-60.5 -17.5v-368q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21t-118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -52 12 -89.5t34 -61.5t52.5 -35.5t67.5 -11.5t67.5 11.5t52.5 35.5t34 61.5 t12 89.5v424h73q23 0 40.5 17t17.5 53q0 10 -0.5 21t-1.5 17h94z" />
+<glyph unicode="ư" horiz-adv-x="601" d="M621 592q0 -23 -6 -46t-20 -42t-38.5 -32.5t-60.5 -17.5v-439q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30.5 2.5t25.5 3t16 3.5v439h69q23 0 40.5 17t17.5 53q0 10 -0.5 21t-1.5 17h92 q1 -11 1 -20v-16z" />
+<glyph unicode="Ʊ" horiz-adv-x="788" d="M394 -16q-65 0 -123.5 21.5t-103 64t-71 105.5t-26.5 146q0 47 11 90t29 80t41 67.5t46 52.5h-143v82h267v-68q-32 -26 -59 -56.5t-47 -67.5t-31.5 -81.5t-11.5 -98.5q0 -59 16 -106t45 -79.5t70 -49.5t91 -17t91 17t70 49.5t45 79.5t16 106q0 54 -11.5 98.5t-31.5 81.5 t-47.5 67.5t-58.5 56.5v68h267v-82h-143q23 -22 46 -52.5t41 -67.5t29 -80t11 -90q0 -83 -26.5 -146t-71 -105.5t-103.5 -64t-123 -21.5z" />
+<glyph unicode="Ʋ" horiz-adv-x="698" d="M630 356q0 -66 -13.5 -132t-47 -119.5t-89.5 -86.5t-141 -33q-69 0 -117.5 21t-79.5 57.5t-45 86.5t-14 108v435h97v-424q0 -52 12 -89.5t33 -61.5t49.5 -35.5t61.5 -11.5q97 0 145.5 67.5t48.5 210.5q0 133 -32.5 199t-109.5 66q-14 0 -22.5 -0.5t-14.5 -1.5l-3 81 q12 2 27.5 2.5t29.5 0.5q64 0 107 -25.5t69 -71t37.5 -108t11.5 -135.5z" />
+<glyph unicode="Ƴ" horiz-adv-x="676" d="M327 0v272l-41 78l-44 82l-44 78l-39 68q-14 24 -24.5 32t-30.5 8q-19 0 -33.5 -9t-31.5 -26l-48 66q20 21 49.5 37.5t72.5 16.5q25 0 43.5 -4t32.5 -13t25.5 -24t23.5 -36l34 -62l38 -68l36 -68l32 -64q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97z" />
+<glyph unicode="ƴ" horiz-adv-x="574" d="M503 455q-29 0 -43 -15.5t-22 -45.5q-29 -118 -61.5 -219.5t-70.5 -190.5q-20 -45 -41 -77t-47 -52.5t-58.5 -30t-73.5 -9.5q-11 0 -23 1.5t-23.5 4t-21 5.5t-13.5 5l17 75q11 -5 28.5 -9.5t34.5 -4.5q27 0 48 5.5t37.5 17.5t30 31.5t25.5 46.5q-63 119 -117.5 254.5 t-90.5 272.5h100q11 -45 26.5 -97t34.5 -107t41 -110.5t47 -106.5q13 39 24.5 77t22 76.5t20.5 79.5l21 84q13 55 42 86t91 31q20 0 40.5 -4t41.5 -11l-16 -72q-18 9 -51 9z" />
+<glyph unicode="Ƶ" horiz-adv-x="577" d="M528 616q-32 -36 -78 -92.5t-95 -124.5h153v-75h-206l-84 -125q-39 -62 -68 -118h388v-81h-503v65q29 55 70.5 122.5t88.5 136.5h-119v75h172l87 118q42 55 77 95h-358v81h475v-77z" />
+<glyph unicode="ƶ" horiz-adv-x="475" d="M427 451q-20 -21 -52.5 -58.5t-69.5 -85.5h112v-66h-162l-59 -84q-28 -42 -51 -81h290v-76h-397v58q21 41 51.5 88t65.5 95h-88v66h137l59 76l50 61h-261v76h375v-69z" />
+<glyph unicode="Ʒ" horiz-adv-x="571" d="M186 391l52 55l54 60l49 58l39 48h-321v81h444v-58q-15 -22 -38 -51t-51 -60l-58 -64l-58 -62q45 -5 85.5 -19t70.5 -38.5t47.5 -61.5t17.5 -86q0 -54 -20.5 -93.5t-57 -65t-88.5 -37.5t-115 -12q-38 0 -72 5.5t-61 13t-47 16.5t-31 15l29 80q11 -6 29.5 -14t41.5 -15 t51 -12t59 -5q85 0 132.5 29t47.5 97q0 40 -16.5 66.5t-45 42.5t-67 22.5t-83.5 6.5h-19v58z" />
+<glyph unicode="Ƹ" horiz-adv-x="571" d="M385 333h-19q-45 0 -83.5 -6.5t-67 -22.5t-45 -42.5t-16.5 -66.5q0 -68 47.5 -97t132.5 -29q31 0 59 5t51 12t41.5 15t29.5 14l29 -80q-11 -6 -31 -15t-47 -16.5t-61 -13t-72 -5.5q-63 0 -115 12t-88.5 37.5t-57 65t-20.5 93.5q0 49 17.5 86t47.5 61.5t70.5 38.5t85.5 19 l-59 62l-57 64q-28 31 -51 60t-38 51v58h444v-81h-321l39 -48l49 -58l53 -60l53 -55v-58z" />
+<glyph unicode="ƹ" horiz-adv-x="475" d="M353 159h-17q-38 0 -74 -5t-64 -19t-44.5 -38.5t-16.5 -63.5q0 -65 43 -100.5t124 -35.5q47 0 88 9t64 20l20 -80q-25 -13 -71.5 -22t-101.5 -9q-59 0 -107 13.5t-82.5 40.5t-53 67.5t-18.5 94.5q0 49 16 83.5t43.5 57t65 35.5t79.5 19l-52 60l-50 66l-44 62 q-21 29 -35 52v54h388v-78h-273q13 -21 34 -48l44 -58l48 -61l47 -55v-61z" />
+<glyph unicode="ƺ" horiz-adv-x="478" d="M10 -114q0 33 11.5 53.5t31 34t44.5 21.5t53 15q36 9 69 16t58.5 19t41 31.5t15.5 51.5q0 45 -44 68.5t-151 26.5v62q51 45 92.5 86.5t66.5 70.5h-274v78h387v-57q-32 -41 -75.5 -86.5t-97.5 -93.5q48 -7 84 -18.5t59.5 -30.5t35.5 -47t12 -67q0 -48 -18.5 -77.5t-51 -49 t-76 -31t-93.5 -23.5q-14 -3 -31 -7t-32 -11.5t-25 -19.5t-10 -31q0 -15 3.5 -27t5.5 -17l-73 -15q-6 11 -12 29t-6 46z" />
+<glyph unicode="ƻ" horiz-adv-x="549" d="M87 361h189q35 35 59.5 71.5t24.5 80.5q0 30 -9 51t-24.5 35t-36 20.5t-44.5 6.5q-33 0 -59 -8t-46 -18.5t-33 -21.5l-20 -18l-46 68q14 14 33.5 28.5t44.5 26t56.5 19t69.5 7.5q103 0 159.5 -48.5t56.5 -140.5q0 -42 -20.5 -81.5t-52.5 -77.5h87v-73h-154l-56 -57 q-42 -43 -72 -80.5t-32 -69.5h319v-81h-425q-1 12 -1 24q0 33 8 62q11 39 32 74t49.5 66.5t58.5 61.5h-116v73z" />
+<glyph unicode="Ƽ" horiz-adv-x="542" d="M199 426q152 -7 230.5 -66.5t78.5 -162.5q0 -46 -16 -85t-49.5 -67t-84.5 -44t-120 -16q-29 0 -58.5 4t-55 10t-44.5 12t-27 10l17 82q8 -4 24.5 -10t38 -11.5t48 -9.5t54.5 -4q47 0 79.5 10t53 27t29.5 39.5t9 47.5q0 38 -15.5 67t-51 49t-93.5 30t-143 10l7 72 q4 34 6.5 66t4.5 63l4 63h-97v81h452v-81h-266q-1 -14 -3 -39l-4 -53l-4 -53q-2 -26 -4 -41z" />
+<glyph unicode="ƽ" horiz-adv-x="500" d="M454 150q0 -75 -58.5 -118.5t-170.5 -43.5q-28 0 -56.5 3.5t-53 8t-42.5 9.5t-25 8l17 78q6 -3 21.5 -7.5t37 -9.5t47 -8.5t52.5 -3.5q71 0 104.5 21.5t33.5 62.5q0 28 -10 47.5t-35 31.5t-67 17.5t-106 5.5h-50q7 56 11 101t7 93h-81v74h402v-74h-240q-1 -12 -2 -28.5 t-2.5 -34t-3.5 -33t-3 -26.5h21q57 0 103.5 -10t79.5 -31.5t51 -54.5t18 -78z" />
+<glyph unicode="ƾ" horiz-adv-x="467" d="M76 665l94 16v-161h197v-77h-197v-38q0 -20 5 -35.5t16.5 -28t30 -23t46.5 -20.5q36 -14 65 -27.5t50 -31.5t32 -43t11 -62q0 -72 -56.5 -109t-154.5 -37q-69 0 -110.5 11.5t-55.5 17.5l17 80q15 -7 53 -18.5t96 -11.5q57 0 87 15t30 48q0 34 -27 54.5t-89 45.5 q-30 12 -56 24.5t-44.5 31.5t-29 47.5t-10.5 72.5v259z" />
+<glyph unicode="ƿ" horiz-adv-x="575" d="M426 300q0 69 -39 108.5t-109 39.5q-42 0 -65.5 -6t-37.5 -11v-398q44 16 89 36t81 51t58.5 74.5t22.5 105.5zM523 298q0 -80 -28 -136.5t-76 -97t-111 -69t-133 -51.5v-129h-93v675q32 12 82 26.5t115 14.5q57 0 102 -16t76.5 -46.5t48.5 -73.5t17 -97z" />
+<glyph unicode="ǀ" horiz-adv-x="283" d="M98 783h87v-968h-87v968z" />
+<glyph unicode="ǁ" horiz-adv-x="487" d="M302 783h87v-968h-87v968zM98 783h87v-968h-87v968z" />
+<glyph unicode="ǂ" horiz-adv-x="573" d="M243 783h87v-347h197v-74h-197v-118h197v-74h-197v-355h-87v355h-197v74h197v118h-197v74h197v347z" />
+<glyph unicode="ǃ" horiz-adv-x="280" d="M190 505q0 -84 -6 -152.5t-15 -136.5h-58q-9 68 -15 136.5t-6 152.5v188h100v-188zM207 54q0 -27 -18 -47t-49 -20t-49 20t-18 47t18 47t49 20t49 -20t18 -47z" />
+<glyph unicode="DŽ" horiz-adv-x="1294" d="M657 347q0 -90 -28 -156.5t-79 -110t-122 -65t-156 -21.5q-42 0 -92.5 3.5t-91.5 13.5v672q41 10 91.5 13.5t92.5 3.5q85 0 156 -21.5t122 -65t79 -110t28 -156.5zM280 79q138 0 206 70.5t68 197.5t-68 197.5t-206 70.5q-41 0 -63.5 -1t-31.5 -2v-530q9 -1 31.5 -2 t63.5 -1zM1245 616l-54 -62l-64 -82l-70 -94l-70 -100q-35 -50 -66 -100t-56 -95h390v-83h-503v65q21 40 49 88l62 98l67 101l69 98l68 88q32 41 59 72h-356v83h475v-77zM875 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="Dž" horiz-adv-x="1192" d="M657 347q0 -90 -28 -156.5t-79 -110t-122 -65t-156 -21.5q-42 0 -92.5 3.5t-91.5 13.5v672q41 10 91.5 13.5t92.5 3.5q85 0 156 -21.5t122 -65t79 -110t28 -156.5zM280 79q138 0 206 70.5t68 197.5t-68 197.5t-206 70.5q-41 0 -63.5 -1t-31.5 -2v-530q9 -1 31.5 -2 t63.5 -1zM1144 450q-21 -23 -55 -65l-74 -93l-80 -107q-39 -56 -69 -107h286v-78h-397v62q24 44 59 97t73 105l76 100l63 78h-257v78h375v-70zM814 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="dž" horiz-adv-x="1068" d="M418 410q-17 14 -49 27t-70 13q-40 0 -68.5 -14.5t-46.5 -40t-26 -60.5t-8 -75q0 -91 45 -140.5t120 -49.5q38 0 63.5 3.5t39.5 7.5v329zM418 760l93 16v-761q-32 -9 -82 -18t-115 -9q-60 0 -108 19t-82 54t-52.5 85.5t-18.5 113.5q0 60 15.5 110t45.5 86t73.5 56 t99.5 20q45 0 79.5 -12t51.5 -23v263zM1020 450q-21 -23 -55 -65l-74 -93l-80 -107q-39 -56 -69 -107h286v-78h-397v62q24 44 59 97t73 105l76 100l63 78h-257v78h375v-70zM690 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="LJ" horiz-adv-x="1022" d="M505 84v-84h-417v693h97v-609h320zM944 223q0 -50 -10.5 -93t-37 -75.5t-71 -51t-111.5 -18.5q-34 0 -62.5 5.5t-51.5 14t-40 18t-27 18.5l38 77q21 -15 54.5 -31.5t83.5 -16.5q72 0 105 36.5t33 125.5v461h97v-470z" />
+<glyph unicode="Lj" horiz-adv-x="780" d="M505 84v-84h-417v693h97v-609h320zM520 -187q-12 0 -31 3t-32 8l12 76q10 -3 23 -5t24 -2q48 0 68.5 29.5t20.5 86.5v511h93v-510q0 -100 -45.5 -148.5t-132.5 -48.5zM651 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5 t-42.5 -16.5z" />
+<glyph unicode="lj" horiz-adv-x="534" d="M238 -10q-86 2 -122 37t-36 109v624l93 16v-625q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM274 -187q-12 0 -31 3t-32 8l12 76q10 -3 23 -5t24 -2q48 0 68.5 29.5t20.5 86.5v511h93v-510q0 -100 -45.5 -148.5t-132.5 -48.5zM405 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5 t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="NJ" horiz-adv-x="1231" d="M563 0l-51 83l-61 95l-69 101l-70 99l-68 89q-33 42 -61 74v-541h-95v693h77q47 -50 101 -117l106 -136l98 -139q47 -68 79 -121v513h95v-693h-81zM1153 223q0 -50 -10.5 -93t-37 -75.5t-71 -51t-111.5 -18.5q-34 0 -62.5 5.5t-51.5 14t-40 18t-27 18.5l38 77 q21 -15 54.5 -31.5t83.5 -16.5q72 0 105 36.5t33 125.5v461h97v-470z" />
+<glyph unicode="Nj" horiz-adv-x="989" d="M563 0l-51 83l-61 95l-69 101l-70 99l-68 89q-33 42 -61 74v-541h-95v693h77q47 -50 101 -117l106 -136l98 -139q47 -68 79 -121v513h95v-693h-81zM729 -187q-12 0 -31 3t-32 8l12 76q10 -3 23 -5t24 -2q48 0 68.5 29.5t20.5 86.5v511h93v-510q0 -100 -45.5 -148.5 t-132.5 -48.5zM860 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="nj" horiz-adv-x="835" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292h-93v272q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM575 -187q-12 0 -31 3t-32 8l12 76q10 -3 23 -5t24 -2q48 0 68.5 29.5t20.5 86.5 v511h93v-510q0 -100 -45.5 -148.5t-132.5 -48.5zM706 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="Ǎ" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM197 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ǎ" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM127 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="Ǐ" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM1 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ǐ" horiz-adv-x="257" d="M175 0h-93v520h93v-520zM-6 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="Ǒ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM255 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ǒ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM161 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="Ǔ" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM210 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ǔ" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM150 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="Ǖ" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM245 747q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15 t15.5 -40t-15.5 -40t-38.5 -15zM447 747q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15zM219 962h254v-64h-254v64z" />
+<glyph unicode="ǖ" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM185 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15z M387 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15zM159 802h254v-64h-254v64z" />
+<glyph unicode="Ǘ" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM450 910l-111 -127l-45 38l96 141zM482 747q-23 0 -38.5 15 t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM210 747q-22 0 -38 15t-16 40t16 40t38 15q23 0 38.5 -15t15.5 -40t-15.5 -40t-38.5 -15z" />
+<glyph unicode="ǘ" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM180 587q-22 0 -38 15t-16 40t16 40t38 15q23 0 38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM392 587 q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM339 854l60 -52l-111 -127l-45 38z" />
+<glyph unicode="Ǚ" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM211 747q-22 0 -38 15t-16 40t16 40t38 15q23 0 38.5 -15 t15.5 -40t-15.5 -40t-38.5 -15zM483 747q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM223 917l29 45l94 -61l94 61l29 -45l-123 -95z" />
+<glyph unicode="ǚ" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM181 587q-22 0 -38 15t-16 40t16 40t38 15q23 0 38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM393 587 q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM163 786l29 45l94 -61l94 61l29 -45l-123 -95z" />
+<glyph unicode="Ǜ" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM302 962l96 -141l-45 -38l-111 127zM210 747q-23 0 -38.5 15 t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM482 747q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15z" />
+<glyph unicode="ǜ" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM180 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15z M392 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15zM233 854l96 -141l-45 -38l-111 127z" />
+<glyph unicode="ǝ" horiz-adv-x="563" d="M507 262q0 -69 -20 -120.5t-53 -85.5t-76 -51t-88 -17q-104 0 -160.5 66t-56.5 199v24q0 5 1 9h356q-6 80 -47.5 122.5t-127.5 42.5q-49 0 -82.5 -8.5t-50.5 -16.5l-13 78q17 9 59.5 19t96.5 10q68 0 117.5 -20.5t81.5 -56.5t47.5 -86t15.5 -108zM150 211 q-1 -63 31.5 -103.5t89.5 -40.5q32 0 56.5 12.5t41 32.5t26.5 46t13 53h-258z" />
+<glyph unicode="Ǟ" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM232 747q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40 t-15.5 -40t-38.5 -15zM434 747q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15zM206 962h254v-64h-254v64z" />
+<glyph unicode="ǟ" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM164 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40 t-15.5 -40t-38.5 -15zM366 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15zM138 802h254v-64h-254v64z" />
+<glyph unicode="Ǡ" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM333 747q-23 0 -39 15t-16 41t16 41t39 15t39 -15t16 -41t-16 -41 t-39 -15zM206 962h254v-64h-254v64z" />
+<glyph unicode="ǡ" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM265 587q-23 0 -39 15t-16 41t16 41t39 15t39 -15t16 -41t-16 -41 t-39 -15zM138 802h254v-64h-254v64z" />
+<glyph unicode="Ǣ" horiz-adv-x="939" d="M875 612h-301v-209h265v-79h-265v-243h326v-81h-422v178h-273l-47 -88l-46 -90h-104l112 204l106 180l102 162l101 147h446v-81zM478 617q-53 -72 -110 -163l-118 -197h228v360zM439 867h284v-72h-284v72z" />
+<glyph unicode="ǣ" horiz-adv-x="863" d="M615 -12q-57 0 -99.5 13.5t-74.5 39.5q-10 -7 -26.5 -16t-39.5 -17.5t-51.5 -14t-62.5 -5.5q-50 0 -89.5 9t-67.5 29t-43 52t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t28 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5 q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 59.5 15.5t89.5 7.5q69 0 109.5 -23.5t60.5 -65.5q33 45 78 67t94 22q104 0 160.5 -66t56.5 -199q0 -8 -0.5 -13.5t-0.5 -10.5v-9h-356q6 -80 47.5 -122.5t127.5 -42.5q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19 t-96.5 -10zM263 67q52 0 82 11.5t46 22.5q-15 28 -23.5 60t-9.5 68q-11 5 -32 8.5t-53 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -51 32.5 -70t90.5 -19zM710 310q1 63 -31.5 103.5t-89.5 40.5q-32 0 -56.5 -12.5t-41 -32.5t-26.5 -46t-13 -53h258zM283 711h284 v-72h-284v72z" />
+<glyph unicode="Ǥ" horiz-adv-x="706" d="M511 364h97v-96h80v-73h-80v-178q-12 -4 -34.5 -9t-52 -10t-64.5 -8.5t-71 -3.5q-73 0 -133 24t-103 70t-66.5 113t-23.5 154t26 154.5t70.5 113.5t104.5 70t129 24q47 0 84 -6t63.5 -14t43.5 -16t23 -12l-31 -81q-28 20 -77 32t-101 12q-53 0 -96 -19t-73 -55 t-46.5 -87.5t-16.5 -115.5q0 -62 14.5 -113t44 -87.5t73 -56.5t102.5 -20q42 0 71.5 4.5t42.5 8.5v112h-110v73h110v96z" />
+<glyph unicode="ǥ" horiz-adv-x="594" d="M408 52q-12 -8 -46.5 -20.5t-80.5 -12.5q-47 0 -88.5 15t-72.5 46.5t-49 78.5t-18 112q0 57 17 104.5t49.5 82t79.5 54t106 19.5q65 0 113.5 -9.5t81.5 -17.5v-196h78v-68h-78v-197q0 -120 -62 -174t-188 -54q-49 0 -92.5 8t-75.5 19l17 81q28 -11 68.5 -19.5t84.5 -8.5 q83 0 119.5 33t36.5 105v19zM407 438q-14 4 -37.5 7.5t-63.5 3.5q-75 0 -115.5 -49t-40.5 -130q0 -45 11.5 -77t31 -53t45 -31t52.5 -10q37 0 68 10.5t49 24.5v106h-112v68h112v130z" />
+<glyph unicode="Ǧ" horiz-adv-x="676" d="M511 341h97v-324q-12 -4 -34.5 -9t-52 -10t-64.5 -8.5t-71 -3.5q-73 0 -133 24t-103 70t-66.5 113t-23.5 154t26.5 154.5t71.5 113.5t105.5 70t129.5 24q47 0 83.5 -6t62.5 -14t42.5 -16t22.5 -12l-31 -81q-29 19 -77 31.5t-98 12.5q-53 0 -96.5 -19t-74 -55t-47.5 -87.5 t-17 -115.5q0 -62 14.5 -113t44 -87.5t73 -56.5t102.5 -20q42 0 71.5 4.5t42.5 8.5v258zM242 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ǧ" horiz-adv-x="582" d="M408 52q-12 -8 -46.5 -20.5t-80.5 -12.5q-47 0 -88.5 15t-72.5 46.5t-49 78.5t-18 112q0 57 17 104.5t49.5 82t79.5 54t106 19.5q65 0 113.5 -9.5t81.5 -17.5v-464q0 -120 -62 -174t-188 -54q-49 0 -92.5 8t-75.5 19l17 81q28 -11 68.5 -19.5t84.5 -8.5q83 0 119.5 33 t36.5 105v22zM407 438q-14 4 -37.5 7.5t-63.5 3.5q-75 0 -115.5 -49t-40.5 -130q0 -45 11.5 -77t31 -53t45 -31t52.5 -10q37 0 68 10.5t49 24.5v304zM155 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="Ǩ" horiz-adv-x="633" d="M601 693l-70 -75l-81 -86l-85 -85l-79 -78q43 -30 91 -74t94 -94t86.5 -102t67.5 -99h-114q-30 47 -69 94.5t-82.5 91t-88 80.5t-86.5 63v-329h-97v693h97v-306l77 75l83 83l77 81q37 38 62 67h117zM185 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ǩ" horiz-adv-x="526" d="M270 286q30 -23 63.5 -57t66 -73.5t61.5 -80t49 -75.5h-109q-21 35 -48.5 71.5t-57.5 70t-61 61.5t-59 47v-250h-93v760l93 16v-474l53 53l57 59l53 58l43 48h109l-50 -55l-56 -61l-58 -60zM54 917l29 45l94 -61l94 61l29 -45l-123 -95z" />
+<glyph unicode="Ǫ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157q0 -64 -13.5 -116.5t-38.5 -94.5t-59 -72t-75 -49q-23 -11 -42 -24.5t-34 -29.5q-14 -16 -21.5 -28t-7.5 -26q0 -29 40 -29q7 0 18.5 1.5t22.5 5.5l7 -61 q-11 -5 -28.5 -8t-37.5 -3q-56 0 -83 20.5t-27 55.5q0 23 13 44.5t30 39.5l6 6q3 3 7 6h-6q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5 t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5z" />
+<glyph unicode="ǫ" horiz-adv-x="594" d="M541 260q0 -86 -35 -150.5t-95 -94.5q-43 -22 -74 -54q-14 -16 -21.5 -28t-7.5 -26q0 -29 40 -29q7 0 18.5 1.5t22.5 5.5l7 -61q-11 -5 -28.5 -8t-37.5 -3q-56 0 -83 20.5t-27 55.5q0 23 13 44.5t30 39.5q3 3 8 7.5t9 7.5q-50 3 -91.5 24t-71.5 56.5t-47 84t-17 107.5 q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5t107.5 -51.5t107.5 51.5t39.5 139.5z" />
+<glyph unicode="Ǭ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157q0 -64 -13.5 -116.5t-38.5 -94.5t-59 -72t-75 -49q-23 -11 -42 -24.5t-34 -29.5q-14 -16 -21.5 -28t-7.5 -26q0 -29 40 -29q7 0 18.5 1.5t22.5 5.5l7 -61 q-11 -5 -28.5 -8t-37.5 -3q-56 0 -83 20.5t-27 55.5q0 23 13 44.5t30 39.5l6 6q3 3 7 6h-6q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5 t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM249 867h284v-72h-284v72z" />
+<glyph unicode="ǭ" horiz-adv-x="594" d="M541 260q0 -86 -35 -150.5t-95 -94.5q-43 -22 -74 -54q-14 -16 -21.5 -28t-7.5 -26q0 -29 40 -29q7 0 18.5 1.5t22.5 5.5l7 -61q-11 -5 -28.5 -8t-37.5 -3q-56 0 -83 20.5t-27 55.5q0 23 13 44.5t30 39.5q3 3 8 7.5t9 7.5q-50 3 -91.5 24t-71.5 56.5t-47 84t-17 107.5 q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5t107.5 -51.5t107.5 51.5t39.5 139.5zM155 711h284v-72h-284v72z" />
+<glyph unicode="Ǯ" horiz-adv-x="571" d="M186 391l52 55l54 60l49 58l39 48h-321v81h444v-58q-15 -22 -38 -51t-51 -60l-58 -64l-58 -62q45 -5 85.5 -19t70.5 -38.5t47.5 -61.5t17.5 -86q0 -54 -20.5 -93.5t-57 -65t-88.5 -37.5t-115 -12q-38 0 -72 5.5t-61 13t-47 16.5t-31 15l29 80q11 -6 29.5 -14t41.5 -15 t51 -12t59 -5q85 0 132.5 29t47.5 97q0 40 -16.5 66.5t-45 42.5t-67 22.5t-83.5 6.5h-19v58zM145 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ǯ" horiz-adv-x="475" d="M122 220l47 55l49 61l43 58q20 27 34 48h-273v78h388v-54q-14 -23 -34 -52l-45 -62q-24 -33 -51 -66l-51 -60q42 -6 79.5 -19t65 -35.5t43.5 -57t16 -83.5q0 -54 -18.5 -94.5t-53 -67.5t-82.5 -40.5t-107 -13.5q-55 0 -101.5 9t-71.5 22l20 80q23 -11 64 -20t88 -9 q81 0 124 35.5t43 100.5q0 39 -17 63.5t-44.5 38.5t-63.5 19t-74 5h-17v61zM68 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ǰ" horiz-adv-x="257" d="M-3 -185q-12 0 -31 3t-32 8l12 76q10 -3 23 -5t24 -2q48 0 68.5 29.5t20.5 86.5v509h93v-508q0 -100 -45.5 -148.5t-132.5 -48.5zM-6 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="DZ" horiz-adv-x="1294" d="M657 347q0 -90 -28 -156.5t-79 -110t-122 -65t-156 -21.5q-42 0 -92.5 3.5t-91.5 13.5v672q41 10 91.5 13.5t92.5 3.5q85 0 156 -21.5t122 -65t79 -110t28 -156.5zM280 79q138 0 206 70.5t68 197.5t-68 197.5t-206 70.5q-41 0 -63.5 -1t-31.5 -2v-530q9 -1 31.5 -2 t63.5 -1zM1245 616l-54 -62l-64 -82l-70 -94l-70 -100q-35 -50 -66 -100t-56 -95h390v-83h-503v65q21 40 49 88l62 98l67 101l69 98l68 88q32 41 59 72h-356v83h475v-77z" />
+<glyph unicode="Dz" horiz-adv-x="1192" d="M657 347q0 -90 -28 -156.5t-79 -110t-122 -65t-156 -21.5q-42 0 -92.5 3.5t-91.5 13.5v672q41 10 91.5 13.5t92.5 3.5q85 0 156 -21.5t122 -65t79 -110t28 -156.5zM280 79q138 0 206 70.5t68 197.5t-68 197.5t-206 70.5q-41 0 -63.5 -1t-31.5 -2v-530q9 -1 31.5 -2 t63.5 -1zM1144 450q-21 -23 -55 -65l-74 -93l-80 -107q-39 -56 -69 -107h286v-78h-397v62q24 44 59 97t73 105l76 100l63 78h-257v78h375v-70z" />
+<glyph unicode="dz" horiz-adv-x="1068" d="M418 410q-17 14 -49 27t-70 13q-40 0 -68.5 -14.5t-46.5 -40t-26 -60.5t-8 -75q0 -91 45 -140.5t120 -49.5q38 0 63.5 3.5t39.5 7.5v329zM418 760l93 16v-761q-32 -9 -82 -18t-115 -9q-60 0 -108 19t-82 54t-52.5 85.5t-18.5 113.5q0 60 15.5 110t45.5 86t73.5 56 t99.5 20q45 0 79.5 -12t51.5 -23v263zM1020 450q-21 -23 -55 -65l-74 -93l-80 -107q-39 -56 -69 -107h286v-78h-397v62q24 44 59 97t73 105l76 100l63 78h-257v78h375v-70z" />
+<glyph unicode="Ǵ" horiz-adv-x="676" d="M511 341h97v-324q-12 -4 -34.5 -9t-52 -10t-64.5 -8.5t-71 -3.5q-73 0 -133 24t-103 70t-66.5 113t-23.5 154t26.5 154.5t71.5 113.5t105.5 70t129.5 24q47 0 83.5 -6t62.5 -14t42.5 -16t22.5 -12l-31 -81q-29 19 -77 31.5t-98 12.5q-53 0 -96.5 -19t-74 -55t-47.5 -87.5 t-17 -115.5q0 -62 14.5 -113t44 -87.5t73 -56.5t102.5 -20q42 0 71.5 4.5t42.5 8.5v258zM518 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="ǵ" horiz-adv-x="582" d="M408 52q-12 -8 -46.5 -20.5t-80.5 -12.5q-47 0 -88.5 15t-72.5 46.5t-49 78.5t-18 112q0 57 17 104.5t49.5 82t79.5 54t106 19.5q65 0 113.5 -9.5t81.5 -17.5v-464q0 -120 -62 -174t-188 -54q-49 0 -92.5 8t-75.5 19l17 81q28 -11 68.5 -19.5t84.5 -8.5q83 0 119.5 33 t36.5 105v22zM407 438q-14 4 -37.5 7.5t-63.5 3.5q-75 0 -115.5 -49t-40.5 -130q0 -45 11.5 -77t31 -53t45 -31t52.5 -10q37 0 68 10.5t49 24.5v304zM431 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="Ƕ" horiz-adv-x="1061" d="M88 693h97v-290h339v290h97v-434q0 -98 30.5 -143.5t103.5 -45.5t103.5 45.5t30.5 143.5v261h96v-281q0 -55 -10 -101.5t-36 -80.5t-70.5 -53t-113.5 -19q-68 0 -112.5 19t-71 53t-37 80.5t-10.5 101.5v83h-339v-322h-97v693z" />
+<glyph unicode="Ƿ" horiz-adv-x="647" d="M185 -185h-97v839q18 7 42.5 15.5t53 15t60.5 11t65 4.5q137 0 212.5 -65.5t75.5 -191.5q0 -87 -32 -154.5t-87.5 -120.5t-130.5 -93.5t-162 -73.5v-186zM185 92q65 29 121.5 59.5t98 71t65.5 95t24 129.5q0 81 -49.5 124.5t-134.5 43.5q-48 0 -78 -7t-47 -13v-503z" />
+<glyph unicode="Ǹ" horiz-adv-x="732" d="M563 0l-51 83l-61 95l-69 101l-70 99l-68 89q-33 42 -61 74v-541h-95v693h77q47 -50 101 -117l106 -136l98 -139q47 -68 79 -121v513h95v-693h-81zM285 932l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ǹ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292h-93v272q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM211 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Ǻ" horiz-adv-x="667" d="M174 178l-63 -178h-101l70 192l66 168l62 153l64 144q-15 12 -24 30t-9 42q0 43 27.5 67.5t65.5 24.5q37 0 65 -24.5t28 -67.5q0 -23 -8.5 -40.5t-22.5 -29.5l64 -144l63 -153l65 -170l71 -192h-106q-17 45 -32 89l-31 89h-314zM460 257l-64 169q-31 81 -65 156 q-35 -75 -67 -156l-62 -169h258zM380 729q0 23 -14 36t-34 13t-34 -13t-14 -36t14 -36.5t34 -13.5t34 13.5t14 36.5zM425 889l-158 -60l-21 55l151 78z" />
+<glyph unicode="ǻ" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM358 837l-158 -60l-21 55l151 78zM358 667q0 -43 -28 -67.5t-65 -24.5 q-38 0 -65.5 24.5t-27.5 67.5t27.5 67.5t65.5 24.5q37 0 65 -24.5t28 -67.5zM313 667q0 23 -14 36t-34 13t-34 -13t-14 -36t14 -36.5t34 -13.5t34 13.5t14 36.5z" />
+<glyph unicode="Ǽ" horiz-adv-x="939" d="M875 612h-301v-209h265v-79h-265v-243h326v-81h-422v178h-273l-47 -88l-46 -90h-104l112 204l106 180l102 162l101 147h446v-81zM478 617q-53 -72 -110 -163l-118 -197h228v360zM706 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="ǽ" horiz-adv-x="863" d="M615 -12q-57 0 -99.5 13.5t-74.5 39.5q-10 -7 -26.5 -16t-39.5 -17.5t-51.5 -14t-62.5 -5.5q-50 0 -89.5 9t-67.5 29t-43 52t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t28 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5 q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 59.5 15.5t89.5 7.5q69 0 109.5 -23.5t60.5 -65.5q33 45 78 67t94 22q104 0 160.5 -66t56.5 -199q0 -8 -0.5 -13.5t-0.5 -10.5v-9h-356q6 -80 47.5 -122.5t127.5 -42.5q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19 t-96.5 -10zM263 67q52 0 82 11.5t46 22.5q-15 28 -23.5 60t-9.5 68q-11 5 -32 8.5t-53 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -51 32.5 -70t90.5 -19zM710 310q1 63 -31.5 103.5t-89.5 40.5q-32 0 -56.5 -12.5t-41 -32.5t-26.5 -46t-13 -53h258zM560 707 l-179 -127l-40 52l166 144z" />
+<glyph unicode="Ǿ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q106 0 188 -56l59 77l62 -46l-64 -83q39 -45 61.5 -108.5t22.5 -145.5q0 -89 -26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-53 0 -100.5 13.5t-88.5 40.5l-58 -75l-62 46l62 80q-40 45 -63 109t-23 148zM162 347 q0 -109 44 -179l319 413q-55 43 -134 43q-53 0 -95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM391 70q53 0 95 19.5t71.5 55.5t45.5 87.5t16 114.5q0 53 -11 96.5t-31 78.5l-318 -411q53 -41 132 -41zM526 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="ǿ" horiz-adv-x="594" d="M482 445q28 -35 43.5 -81.5t15.5 -103.5q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5q-79 0 -137 41l-49 -64l-53 40l54 70q-28 35 -43.5 82t-15.5 104q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5q39 0 73.5 -11t63.5 -31l49 64l53 -40zM149 260q0 -65 21 -110 l212 274q-36 28 -85 28q-69 0 -108.5 -51.5t-39.5 -140.5zM445 260q0 62 -22 109l-211 -274q34 -27 85 -27q69 0 108.5 51.5t39.5 140.5zM432 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="Ȁ" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM349 932l115 -160l-48 -36l-123 140zM184 932l115 -160l-48 -36 l-123 140z" />
+<glyph unicode="ȁ" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM276 776l115 -160l-48 -36l-123 140zM111 776l115 -160l-48 -36 l-123 140z" />
+<glyph unicode="Ȃ" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM329 905q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60 q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="ȃ" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM263 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60 q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="Ȅ" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM333 932l115 -160l-48 -36l-123 140zM168 932l115 -160l-48 -36l-123 140z" />
+<glyph unicode="ȅ" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5 t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258zM299 776l115 -160l-48 -36l-123 140zM134 776l115 -160l-48 -36l-123 140z" />
+<glyph unicode="Ȇ" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM299 905q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="ȇ" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5 t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258zM288 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z " />
+<glyph unicode="Ȉ" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM148 932l115 -160l-48 -36l-123 140zM-17 932l115 -160l-48 -36l-123 140z" />
+<glyph unicode="ȉ" horiz-adv-x="257" d="M175 0h-93v520h93v-520zM140 776l115 -160l-48 -36l-123 140zM-25 776l115 -160l-48 -36l-123 140z" />
+<glyph unicode="Ȋ" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM138 905q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="ȋ" horiz-adv-x="257" d="M175 0h-93v520h93v-520zM130 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="Ȍ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM402 932l115 -160l-48 -36l-123 140zM237 932l115 -160l-48 -36l-123 140z" />
+<glyph unicode="ȍ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM308 776l115 -160l-48 -36l-123 140zM143 776l115 -160l-48 -36l-123 140z" />
+<glyph unicode="Ȏ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM391 905q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5 t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="ȏ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM297 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="Ȑ" horiz-adv-x="633" d="M427 290l41 -52q24 -33 50 -72.5t51.5 -82.5t43.5 -83h-106q-20 38 -43.5 77t-47.5 74.5t-48 66.5l-42 54q-13 -1 -26 -1h-28h-87v-271h-97v683q41 10 91.5 13.5t92.5 3.5q146 0 222.5 -55t76.5 -164q0 -69 -36.5 -118t-107.5 -73zM280 615q-62 0 -95 -3v-261h69 q50 0 90 5t67.5 19t42.5 39.5t15 67.5q0 39 -15 65t-40.5 41t-60 21t-73.5 6zM307 932l115 -160l-48 -36l-123 140zM142 932l115 -160l-48 -36l-123 140z" />
+<glyph unicode="ȑ" horiz-adv-x="390" d="M274 531q12 0 27.5 -1.5t30.5 -4t27.5 -5t18.5 -4.5l-16 -81q-11 4 -36.5 9.5t-65.5 5.5q-26 0 -51.5 -5.5t-33.5 -7.5v-437h-93v498q33 12 82 22.5t110 10.5zM243 776l115 -160l-48 -36l-123 140zM78 776l115 -160l-48 -36l-123 140z" />
+<glyph unicode="Ȓ" horiz-adv-x="633" d="M427 290l41 -52q24 -33 50 -72.5t51.5 -82.5t43.5 -83h-106q-20 38 -43.5 77t-47.5 74.5t-48 66.5l-42 54q-13 -1 -26 -1h-28h-87v-271h-97v683q41 10 91.5 13.5t92.5 3.5q146 0 222.5 -55t76.5 -164q0 -69 -36.5 -118t-107.5 -73zM280 615q-62 0 -95 -3v-261h69 q50 0 90 5t67.5 19t42.5 39.5t15 67.5q0 39 -15 65t-40.5 41t-60 21t-73.5 6zM296 905q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27 t52.5 9.5z" />
+<glyph unicode="ȓ" horiz-adv-x="390" d="M274 531q12 0 27.5 -1.5t30.5 -4t27.5 -5t18.5 -4.5l-16 -81q-11 4 -36.5 9.5t-65.5 5.5q-26 0 -51.5 -5.5t-33.5 -7.5v-437h-93v498q33 12 82 22.5t110 10.5zM231 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7 t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="Ȕ" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM357 932l115 -160l-48 -36l-123 140zM192 932l115 -160l-48 -36 l-123 140z" />
+<glyph unicode="ȕ" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM297 776l115 -160l-48 -36l-123 140zM132 776l115 -160l-48 -36l-123 140z" />
+<glyph unicode="Ȗ" horiz-adv-x="692" d="M346 -15q-68 0 -118 21t-82 57.5t-47.5 86.5t-15.5 108v435h97v-424q0 -104 46 -151t120 -47q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v424h97v-435q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21zM346 905q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60 q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="ȗ" d="M496 15q-32 -8 -84.5 -17t-121.5 -9q-60 0 -101 17.5t-66 49.5t-36 75.5t-11 96.5v292h93v-272q0 -95 30 -136t101 -41q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505zM286 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5 t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="Ș" horiz-adv-x="536" d="M249 69q152 0 152 104q0 32 -13.5 54.5t-36.5 39t-52.5 28.5t-62.5 24q-38 13 -72 29.5t-59 39t-39.5 53.5t-14.5 75q0 91 62 142t171 51q63 0 114.5 -13.5t75.5 -29.5l-31 -79q-21 13 -62.5 25.5t-96.5 12.5q-28 0 -52 -6t-42 -18t-28.5 -30.5t-10.5 -43.5q0 -28 11 -47 t31 -33.5t46.5 -26.5t58.5 -24q45 -18 82.5 -36t65 -43t42.5 -59.5t15 -83.5q0 -91 -66.5 -140t-187.5 -49q-41 0 -75.5 5.5t-61.5 13t-46.5 16t-30.5 14.5l29 80q23 -13 70 -29t115 -16zM224 -50h89q1 -5 1 -12v-9q0 -32 -9.5 -54t-25.5 -36t-37.5 -20.5t-45.5 -6.5 q-13 0 -23.5 1t-13.5 3v56q15 0 27.5 2t20.5 8.5t12.5 19.5t4.5 35v13z" />
+<glyph unicode="ș" horiz-adv-x="450" d="M203 67q57 0 84.5 15t27.5 48q0 34 -27 54t-89 45q-30 12 -57.5 24.5t-47.5 29.5t-32 41t-12 59q0 69 51 109.5t139 40.5q22 0 44 -2.5t41 -6t33.5 -7.5t22.5 -7l-17 -80q-15 8 -47 16.5t-77 8.5q-39 0 -68 -15.5t-29 -48.5q0 -17 6.5 -30t20 -23.5t33.5 -19.5t48 -19 q37 -14 66 -27.5t49.5 -31.5t31.5 -43.5t11 -62.5q0 -72 -53.5 -109t-152.5 -37q-69 0 -108 11.5t-53 17.5l17 80q16 -6 51 -18t93 -12zM173 -50h89q1 -5 1 -12v-9q0 -32 -9.5 -54t-25.5 -36t-37.5 -20.5t-45.5 -6.5q-13 0 -23.5 1t-13.5 3v56q15 0 27.5 2t20.5 8.5 t12.5 19.5t4.5 35v13z" />
+<glyph unicode="Ț" horiz-adv-x="569" d="M551 693v-84h-218v-609h-97v609h-218v84h533zM243 -50h89q1 -5 1 -12v-9q0 -32 -9.5 -54t-25.5 -36t-37.5 -20.5t-45.5 -6.5q-13 0 -23.5 1t-13.5 3v56q15 0 27.5 2t20.5 8.5t12.5 19.5t4.5 35v13z" />
+<glyph unicode="ț" horiz-adv-x="406" d="M169 520h197v-78h-197v-240q0 -39 6 -64.5t18 -40t30 -20.5t42 -6q42 0 67.5 9.5t35.5 13.5l18 -77q-14 -7 -49 -17.5t-80 -10.5q-53 0 -87.5 13.5t-55.5 40.5t-29.5 66.5t-8.5 91.5v464l93 16v-161zM191 -50h89q1 -5 1 -12v-9q0 -32 -9.5 -54t-25.5 -36t-37.5 -20.5 t-45.5 -6.5q-13 0 -23.5 1t-13.5 3v56q15 0 27.5 2t20.5 8.5t12.5 19.5t4.5 35v13z" />
+<glyph unicode="Ȝ" horiz-adv-x="539" d="M81 -100q57 0 111 8.5t96 30.5t68 58.5t26 93.5q0 50 -22.5 82.5t-55.5 51.5t-72 26.5t-72 7.5h-38v78h30q40 0 76.5 9t64.5 27.5t44.5 47t16.5 66.5q0 66 -38.5 102t-107.5 36q-55 0 -96.5 -12.5t-62.5 -25.5l-31 79q24 16 76 29t115 13q54 0 99 -12.5t77.5 -39.5 t51 -68.5t18.5 -99.5q0 -27 -9 -54t-25.5 -51t-41.5 -44t-56 -33q76 -23 118.5 -80t42.5 -129q0 -80 -33.5 -134t-89 -87t-127.5 -47t-150 -14q-11 0 -30 0.5t-30 2.5l6 84q8 -1 22.5 -1.5t28.5 -0.5z" />
+<glyph unicode="ȝ" horiz-adv-x="440" d="M165 533q44 0 82 -9.5t65.5 -31.5t43.5 -55.5t16 -81.5q0 -23 -8 -44.5t-22.5 -41t-35 -35t-44.5 -25.5q32 -7 57 -22t42 -36t25.5 -45.5t8.5 -51.5q0 -70 -34 -116t-88 -73t-121 -38.5t-132 -11.5l-6 79q25 1 56 4t62.5 9t62 16t54 27t38 41.5t14.5 58.5q0 38 -19.5 60 t-47 33.5t-58.5 15t-54 3.5h-12v77q32 0 62.5 6t54 19.5t37.5 35.5t14 54q0 48 -29.5 74.5t-83.5 26.5q-45 0 -82 -10.5t-52 -18.5l-17 80q8 3 24 8t37 9t44 7t46 3z" />
+<glyph unicode="Ȟ" horiz-adv-x="709" d="M524 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM218 885l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ȟ" horiz-adv-x="575" d="M82 0v760l93 16v-266q26 10 55.5 15.5t58.5 5.5q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292h-93v272q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -2t-30.5 -4.5t-26 -5.5t-16.5 -5v-432h-93zM54 917l29 45l94 -61l94 61l29 -45l-123 -95z" />
+<glyph unicode="Ƞ" horiz-adv-x="680" d="M597 -185h-98v591q0 114 -41 165.5t-131 51.5q-18 0 -38 -1t-39 -3t-36 -5t-28 -6v-608h-98v675q20 6 47.5 11.5t60 10.5t68.5 8t74 3q72 0 121 -20.5t80 -57.5t44.5 -88t13.5 -111v-616z" />
+<glyph unicode="ȡ" horiz-adv-x="731" d="M419 10q-23 -8 -51 -13.5t-54 -5.5q-60 0 -108 18.5t-82 53t-52.5 84.5t-18.5 113q0 60 15.5 110t45.5 86t73.5 56t99.5 20q45 0 79.5 -12t51.5 -23v263l93 16v-704q20 14 42 21.5t48 7.5q30 0 54.5 -11.5t42 -31t27 -45.5t9.5 -54q0 -25 -8.5 -50.5t-26.5 -46.5t-46 -34 t-67 -13q-57 0 -93 23.5t-54 64.5l-76 -91l-48 42l105 127q-1 7 -1 14v15zM418 410q-17 14 -49 27t-70 13q-40 0 -68.5 -14.5t-46.5 -40t-26 -60.5t-8 -75q0 -91 45 -139t120 -48q38 0 63.5 5.5t39.5 9.5v322zM587 31q-25 0 -42 -11t-34 -29v-25q0 -36 20 -58t55 -22 t53.5 21.5t18.5 51.5t-18 51t-53 21z" />
+<glyph unicode="Ȣ" horiz-adv-x="674" d="M337 335q-41 0 -74.5 -7t-58.5 -23t-38.5 -40.5t-13.5 -58.5q0 -35 15 -60t40.5 -40.5t59 -22.5t70.5 -7t70.5 7t59 22.5t40.5 40.5t15 60q0 34 -13.5 58.5t-38.5 40.5t-59 23t-74 7zM577 539q0 -57 -22.5 -99t-70.5 -59q29 -9 54.5 -24.5t44 -37t29.5 -50t11 -63.5 q0 -98 -67 -154.5t-218 -56.5q-77 0 -131 14.5t-89 42t-51 66.5t-16 88q0 36 10.5 64t29.5 49.5t44 37t55 24.5q-48 17 -70.5 59t-22.5 99q0 48 4.5 82t12.5 72h94q-6 -35 -11 -70t-5 -70q0 -67 34.5 -102.5t110.5 -35.5t110.5 35.5t34.5 102.5q0 35 -5 70t-11 70h94 q8 -38 12.5 -72t4.5 -82z" />
+<glyph unicode="ȣ" horiz-adv-x="595" d="M445 235q0 77 -39.5 122t-107.5 45t-107.5 -45t-39.5 -122t39.5 -122t107.5 -45t107.5 45t39.5 122zM507 611q0 -57 -24 -101t-63 -61q25 -12 47 -32.5t38.5 -48t26 -61t9.5 -72.5q0 -56 -18 -101.5t-50.5 -78t-77 -50.5t-97.5 -18t-98 18t-77.5 50.5t-50.5 78t-18 101.5 q0 39 9.5 72.5t26 61t38.5 48t47 32.5q-39 17 -63 61t-24 101q0 42 4.5 82.5t10.5 82.5h91q-6 -35 -9.5 -70.5t-3.5 -70.5q0 -81 29.5 -117t87.5 -36q57 0 86.5 36t29.5 117q0 35 -3.5 70.5t-9.5 70.5h91q6 -42 10.5 -82.5t4.5 -82.5z" />
+<glyph unicode="Ȥ" horiz-adv-x="577" d="M528 616q-35 -38 -84 -101l-103 -137q-53 -74 -103.5 -152t-86.5 -145h387v-81q0 -46 -6 -81t-22 -58.5t-45 -35.5t-74 -12q-14 0 -32.5 2.5t-29.5 5.5l9 73q8 -3 21.5 -4t21.5 -1q37 0 50.5 24.5t13.5 69.5v17h-410v65q21 40 49 88l62 99l67 101l69 98l68 89 q32 41 60 72h-357v81h475v-77z" />
+<glyph unicode="ȥ" horiz-adv-x="475" d="M427 450q-21 -23 -55 -65l-74 -93l-80 -107q-39 -56 -69 -107h286v-78q0 -43 -5 -77.5t-19.5 -59t-41.5 -37.5t-71 -13q-14 0 -32 2.5t-29 5.5l8 68q6 -2 20 -3.5t22 -1.5q38 0 51 25t13 70v21h-313v62q24 44 59 97t73 105l76 100l63 78h-257v78h375v-70z" />
+<glyph unicode="Ȧ" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM333 770q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5 t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="ȧ" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM265 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5 t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="Ȩ" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-182q-5 -9 -10 -19t-8 -18q29 -14 42 -30.5t13 -48.5q0 -11 -5 -24t-17 -24t-32 -18t-49 -7q-26 0 -47.5 4t-34.5 9l11 57q12 -4 25.5 -7t30.5 -3q36 0 36 23q0 11 -11 18.5t-31 15.5l-7 3q5 14 13.5 34t16.5 35 h-202z" />
+<glyph unicode="ȩ" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q104 0 160.5 -66t56.5 -199q0 -8 -0.5 -13.5t-0.5 -10.5v-9h-356q6 -80 47.5 -122.5t127.5 -42.5q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -8 -54.5 -17.5t-86.5 -11.5q-4 -7 -7 -13.5t-5 -11.5q29 -14 42 -30.5t13 -48.5 q0 -11 -5 -24t-17 -24t-32 -18t-49 -7q-26 0 -47.5 4t-34.5 9l11 57q12 -4 25.5 -7t30.5 -3q36 0 36 23q0 11 -11 18.5t-31 15.5l-7 3q4 12 11 29t14 31q-56 7 -96 29.5t-66.5 58t-39 81.5t-12.5 99zM410 310q1 63 -31.5 103.5t-89.5 40.5q-32 0 -56.5 -12.5t-41 -32.5 t-26.5 -46t-13 -53h258z" />
+<glyph unicode="Ȫ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM290 747q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM492 747q-23 0 -38.5 15t-15.5 40t15.5 40 t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15zM264 962h254v-64h-254v64z" />
+<glyph unicode="ȫ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM196 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM398 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15zM170 802h254v-64h-254v64z" />
+<glyph unicode="Ȭ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM545 836q-4 -12 -12.5 -26.5t-20.5 -27t-28 -21.5t-36 -9q-18 0 -35 6t-31 14q-17 8 -27.5 12t-21.5 4q-17 0 -30 -14t-20 -28l-45 20 q4 12 12.5 27t20.5 27.5t28 21.5t36 9q18 0 35 -6t31 -14q17 -9 27.5 -12.5t21.5 -3.5q17 0 30 13.5t20 27.5zM264 962h254v-64h-254v64z" />
+<glyph unicode="ȭ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM451 676q-4 -12 -12.5 -26.5t-20.5 -27t-28 -21.5t-36 -9q-18 0 -35 6t-31 14q-17 8 -27.5 12t-21.5 4q-17 0 -30 -14t-20 -28l-45 20q4 12 12.5 27t20.5 27.5t28 21.5t36 9q18 0 35 -6t31 -14q17 -9 27.5 -12.5t21.5 -3.5q17 0 30 13.5 t20 27.5zM170 802h254v-64h-254v64z" />
+<glyph unicode="Ȯ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM391 787q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="ȯ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM297 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="Ȱ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM391 747q-23 0 -39 15t-16 41t16 41t39 15t39 -15t16 -41t-16 -41t-39 -15zM264 962h254v-64h-254v64z" />
+<glyph unicode="ȱ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM297 587q-23 0 -39 15t-16 41t16 41t39 15t39 -15t16 -41t-16 -41t-39 -15zM170 802h254v-64h-254v64z" />
+<glyph unicode="Ȳ" horiz-adv-x="602" d="M253 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97zM159 867h284v-72h-284v72z" />
+<glyph unicode="ȳ" horiz-adv-x="501" d="M21 -97q11 -5 28.5 -9.5t34.5 -4.5q55 0 86 24.5t56 79.5q-63 120 -117.5 254.5t-90.5 272.5h100q11 -45 26.5 -97t34.5 -107t41 -110t46 -106q38 105 66 208t53 212h96q-36 -147 -80 -282.5t-95 -253.5q-20 -45 -41.5 -77.5t-47.5 -53.5t-58.5 -31t-73.5 -10 q-11 0 -23 1.5t-23.5 4t-21 5.5t-13.5 5zM121 711h284v-72h-284v72z" />
+<glyph unicode="ȴ" horiz-adv-x="414" d="M194 72q20 14 42 21.5t48 7.5q30 0 54.5 -11.5t42 -31t27 -45.5t9.5 -54q0 -25 -8.5 -50.5t-26.5 -46.5t-46 -34t-67 -13q-57 0 -93 23.5t-55 64.5l-75 -91l-48 42l104 126q-1 8 -1 16v16v748l93 16v-704zM270 31q-25 0 -42 -11t-34 -29v-25q0 -36 20 -58t55 -22 t53.5 21.5t18.5 51.5t-18 51t-53 21z" />
+<glyph unicode="ȵ" horiz-adv-x="722" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-220q20 14 42 21.5t48 7.5q30 0 54.5 -11.5t42 -31t27 -45.5t9.5 -54q0 -25 -8.5 -50.5t-26.5 -46.5t-46 -34t-67 -13q-57 0 -93 23.5t-55 64.5l-75 -91l-48 42l104 126q-1 8 -1 16v16v260 q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM578 31q-25 0 -42 -11t-34 -29v-25q0 -36 20 -58t55 -22t53.5 21.5t18.5 51.5t-18 51t-53 21z" />
+<glyph unicode="ȶ" horiz-adv-x="414" d="M194 72q20 14 42 21.5t48 7.5q30 0 54.5 -11.5t42 -31t27 -45.5t9.5 -54q0 -25 -8.5 -50.5t-26.5 -46.5t-46 -34t-67 -13q-57 0 -93 23.5t-55 64.5l-75 -91l-48 42l104 126q-1 8 -1 16v16v653l93 16v-161h182v-78h-182v-370zM270 31q-25 0 -42 -11t-34 -29v-25 q0 -36 20 -58t55 -22t53.5 21.5t18.5 51.5t-18 51t-53 21z" />
+<glyph unicode="ȷ" horiz-adv-x="257" d="M-3 -185q-12 0 -31 3t-32 8l12 76q10 -3 23 -5t24 -2q48 0 68.5 29.5t20.5 86.5v509h93v-508q0 -100 -45.5 -148.5t-132.5 -48.5z" />
+<glyph unicode="ȸ" horiz-adv-x="929" d="M511 83q14 -4 39.5 -8.5t63.5 -4.5q75 0 120 49.5t45 140.5q0 40 -8 75t-26 60.5t-46.5 40t-68.5 14.5q-38 0 -70 -13t-49 -27v-327zM418 410q-17 14 -49 27t-70 13q-40 0 -68.5 -14.5t-46.5 -40t-26 -60.5t-8 -75q0 -91 45 -140.5t120 -49.5q38 0 63.5 4.5t39.5 8.5v327 zM615 -12q-45 0 -84 8t-67 16q-28 -8 -66.5 -16t-83.5 -8q-60 0 -108 19t-82 54t-52.5 85.5t-18.5 113.5q0 60 15.5 110t45.5 86t73.5 56t99.5 20q45 0 79.5 -12t51.5 -23v263l93 16v-279q17 11 51.5 23t79.5 12q56 0 99.5 -20t73.5 -56t45.5 -86t15.5 -110 q0 -63 -18.5 -113.5t-52.5 -85.5t-82 -54t-108 -19z" />
+<glyph unicode="ȹ" horiz-adv-x="929" d="M150 259q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5q38 0 70 13t49 27v326q-14 4 -37.5 8t-65.5 4q-75 0 -120 -49t-45 -140zM615 531q60 0 108 -19t82 -54t52.5 -85.5t18.5 -113.5q0 -59 -15.5 -109t-45.5 -86t-73.5 -56t-99.5 -20q-45 0 -79.5 12t-51.5 23v-208h-93 v208q-17 -11 -51.5 -23t-79.5 -12q-56 0 -99.5 20t-73.5 56t-45.5 86t-15.5 109q0 63 18.5 113.5t52.5 85.5t82 54t108 19q45 0 83.5 -8t66.5 -16q28 8 67 16t84 8zM511 110q17 -14 49 -27t70 -13q40 0 68.5 14.5t46.5 40t26 60t8 74.5q0 91 -45 140t-120 49q-42 0 -65.5 -4 t-37.5 -8v-326z" />
+<glyph unicode="Ⱥ" horiz-adv-x="667" d="M466 494q45 -106 90 -226l100 -268h-101q-17 45 -32 89l-31 89h-146l-104 -279l-68 25l95 254h-95l-63 -178h-99l75 204l69 177l66 161q33 76 69 151h86l47 -102l70 186l69 -24zM333 588q-35 -78 -68.5 -163t-64.5 -173h97l83 223zM466 252l-22 60l-24 62l-46 -122h92z " />
+<glyph unicode="Ȼ" horiz-adv-x="645" d="M201 36q-66 44 -103.5 122t-37.5 189q0 87 26 154.5t71 113.5t104 70t125 24q26 0 49.5 -2t43.5 -6l32 76l71 -30l-28 -65q23 -8 37 -15t20 -11l-29 -80q-9 5 -24.5 12t-36.5 14l-216 -516q39 -16 92 -16q66 0 111.5 15t67.5 26l25 -80q-7 -5 -25.5 -13t-46.5 -15.5 t-64.5 -12.5t-78.5 -5q-64 0 -116 18l-43 -104l-71 30zM163 347q0 -71 19 -127t57 -93l206 492q-28 5 -54 5q-51 0 -93 -19t-72 -55t-46.5 -87.5t-16.5 -115.5z" />
+<glyph unicode="ȼ" horiz-adv-x="481" d="M404 518l25 -8q12 -4 25 -9l-25 -78q-11 5 -23.5 10t-26.5 9l-117 -365q24 -7 58 -7q37 0 69 7.5t49 15.5l13 -78q-8 -5 -23.5 -9.5t-35.5 -8.5t-42 -6.5t-42 -2.5q-37 0 -72 8l-25 -80l-62 21l26 81q-61 33 -91.5 95.5t-30.5 145.5q0 60 17.5 110t49.5 86.5t78.5 57 t103.5 20.5q9 0 18 -0.5t19 -1.5l27 84l62 -21zM150 259q0 -50 12.5 -88.5t40.5 -63.5l110 344h-2q-78 0 -119.5 -49t-41.5 -143z" />
+<glyph unicode="Ƚ" horiz-adv-x="536" d="M518 84v-84h-417v324h-80v75h80v294h97v-294h155v-75h-155v-240h320z" />
+<glyph unicode="Ⱦ" horiz-adv-x="624" d="M517 693l46 66l63 -41l-294 -427v-291h-94v171l-146 -211l-63 40l208 301v311h-219v81h499zM330 421l132 191h-132v-191z" />
+<glyph unicode="ȿ" horiz-adv-x="450" d="M203 67q112 0 112 65q0 17 -6.5 29.5t-20.5 23.5t-36 21.5t-53 22.5q-30 12 -57.5 24.5t-47.5 29.5t-32 41t-12 59q0 69 51 109.5t139 40.5q22 0 44 -2.5t41 -6t33.5 -7.5t22.5 -7l-17 -80q-15 8 -47 16.5t-77 8.5q-39 0 -68 -15.5t-29 -48.5q0 -18 6.5 -30.5t20 -22.5 t33.5 -19.5t48 -19.5q36 -14 65 -27t49.5 -30.5t31.5 -42.5t11 -62q0 -36 -14 -61.5t-39 -42t-59.5 -24t-75.5 -7.5q-8 0 -25.5 1t-25.5 1l45 -54q20 -24 49 -40.5t74 -16.5q9 0 21.5 1t24.5 3l9 -75q-13 -3 -32 -5t-31 -2q-33 0 -56 5t-41 15.5t-34 25.5t-35 35 q-17 17 -32 36l-30 37q-15 18 -30.5 33t-33.5 24l28 70q12 -5 46 -17t92 -12z" />
+<glyph unicode="ɀ" horiz-adv-x="473" d="M427 450q-21 -23 -55 -64l-74 -92l-80 -110q-41 -57 -74 -112q23 -5 43 -14.5t36 -20.5t29 -22.5t22 -20.5l34 -34q16 -17 33.5 -30.5t37 -22.5t43.5 -9q4 0 16.5 0.5t24.5 2.5l10 -79q-13 -3 -32 -5t-31 -2q-33 0 -57.5 8.5t-44.5 22t-38 31.5l-38 38q-11 11 -27.5 25.5 t-37.5 28t-48 22.5t-59 9h-20v62q24 44 59 97l73 105l74 100l63 78h-257v78h375v-70z" />
+<glyph unicode="Ɂ" horiz-adv-x="481" d="M223 0h-97v209q0 41 8 70.5t24.5 53t41 42t57.5 37.5q19 11 35.5 22t29 24.5t20 30t7.5 37.5q0 25 -10.5 43.5t-29.5 30.5t-44 18t-54 6q-55 0 -99 -15.5t-65 -28.5l-31 80q12 8 32.5 16.5t47 16t56.5 12t61 4.5q115 0 175.5 -47.5t60.5 -130.5q0 -38 -10 -65.5 t-27.5 -48.5t-41 -37.5t-50.5 -33.5q-26 -17 -44.5 -31t-30 -30t-17 -37t-5.5 -51v-197z" />
+<glyph unicode="ɂ" horiz-adv-x="421" d="M201 0h-89v128q0 33 8.5 57t23.5 43.5t36 34.5t46 30q29 17 52 38.5t23 51.5q0 38 -32 54t-79 16q-20 0 -42 -4t-42.5 -10t-37.5 -13.5t-27 -13.5l-29 77q10 6 29.5 14t44.5 14.5t52.5 11t53.5 4.5q98 0 149.5 -38.5t51.5 -106.5q0 -31 -9 -54t-23.5 -40.5t-33.5 -31.5 t-40 -27l-34 -23q-16 -12 -27.5 -25t-18 -29t-6.5 -37v-121z" />
+<glyph unicode="Ƀ" horiz-adv-x="660" d="M288 -6q-21 0 -45.5 1t-49 3t-48.5 5t-44 8v150h-80v70h80v452q20 5 44 8t48.5 5t49 3t45.5 1q60 0 112.5 -9t91.5 -30.5t61.5 -56.5t22.5 -86q0 -57 -28.5 -93.5t-76.5 -53.5q64 -18 100 -57t36 -111q0 -104 -76.5 -156.5t-242.5 -52.5zM196 325v-94h119v-70h-119v-84 q11 -1 26 -2q13 -1 31 -1h41q43 0 81.5 5.5t67.5 20t46.5 39.5t17.5 63q0 34 -13 58t-37.5 38t-58.5 20.5t-76 6.5h-126zM196 399h99q41 0 74.5 5.5t57.5 18.5t37 34.5t13 53.5q0 30 -14.5 50.5t-39.5 33t-58.5 18.5t-70.5 6q-23 0 -41 -0.5t-31 -1.5q-15 -1 -26 -2v-216z " />
+<glyph unicode="Ʉ" horiz-adv-x="718" d="M21 416h75v277h97v-277h332v277h97v-277h75v-75h-75v-83q0 -58 -15.5 -108t-48 -86.5t-82 -57.5t-117.5 -21t-118 21t-82 57.5t-47.5 86.5t-15.5 108v83h-75v75zM359 71q37 0 67.5 11.5t52.5 35.5t34 61.5t12 89.5v72h-332v-72q0 -104 46 -151t120 -47z" />
+<glyph unicode="Ʌ" horiz-adv-x="656" d="M10 0q37 110 72 204l68 177l66 161l66 151h91l67 -151l66 -161l68 -177l72 -204h-107l-106 304q-52 146 -107 274q-55 -127 -107 -274l-105 -304h-104z" />
+<glyph unicode="Ɇ" horiz-adv-x="599" d="M256 0l-49 -118l-69 26l38 92h-88v693h378l29 69l70 -26l-140 -334h70v-77h-103l-102 -245h256v-80h-290zM185 402h159l89 212h-248v-212zM185 80h25l102 245h-127v-245z" />
+<glyph unicode="ɇ" d="M53 259q0 69 20.5 120.5t54.5 85.5t78 51t92 17q10 0 19 -0.5t18 -1.5l27 84l62 -21l-26 -80q124 -52 124 -246q0 -12 -0.5 -20t-0.5 -11h-212l-51 -159q16 -5 35.5 -7.5t41.5 -2.5q50 0 85.5 8t53.5 16q3 -20 7 -38t7 -38q-20 -9 -64.5 -18.5t-98.5 -9.5q-50 0 -92 11 l-26 -83l-62 21l27 85q-62 35 -90.5 96.5t-28.5 140.5zM264 305l48 151q-8 1 -15 1q-28 0 -51 -9q-29 -12 -49.5 -33.5t-32 -50t-13.5 -59.5h113zM426 305q0 49 -13.5 80t-39.5 51l-42 -131h95zM148 237q6 -84 53 -128l41 128h-94z" />
+<glyph unicode="Ɉ" horiz-adv-x="519" d="M418 223q0 -50 -10.5 -93t-37 -75.5t-71 -51t-111.5 -18.5q-34 0 -62.5 5.5t-51.5 14t-40 18t-27 18.5l38 77q21 -15 54.5 -31.5t83.5 -16.5q72 0 105 36.5t33 125.5v92h-145v75h145v294h97v-294h80v-75h-80v-101z" />
+<glyph unicode="ɉ" horiz-adv-x="295" d="M23 -187q-12 0 -31 3t-32 8l12 76q10 -3 23 -5t24 -2q48 0 68.5 29.5t20.5 86.5v231h-92v70h92v210h93v-210h78v-70h-78v-230q0 -100 -45 -148.5t-133 -48.5zM154 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z " />
+<glyph unicode="Ɋ" horiz-adv-x="789" d="M719 -17q0 -45 12.5 -69.5t49.5 -24.5q8 0 21.5 1t21.5 4l9 -73q-11 -3 -29.5 -5.5t-32.5 -2.5q-45 0 -74 12t-45.5 35.5t-22.5 58.5t-6 81v99q-16 -26 -41.5 -47t-56.5 -36t-65 -23t-67 -8q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157t26.5 157t72 113.5t106 68.5 t128.5 23q67 0 126 -23t103.5 -68.5t70.5 -113.5t26 -157v-364zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5q52 0 94.5 19.5t72 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-72 55.5t-94.5 19.5q-53 0 -95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5z" />
+<glyph unicode="ɋ" horiz-adv-x="593" d="M150 259q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5q38 0 70 13t49 27v328q-14 4 -37.5 7t-65.5 3q-75 0 -120 -49t-45 -140zM511 -17q0 -45 14.5 -69.5t51.5 -24.5q8 0 21.5 1t21.5 4l9 -73q-11 -3 -29.5 -5.5t-32.5 -2.5q-45 0 -74 12t-45.5 35.5t-23 58.5t-6.5 81v23 q-17 -11 -51.5 -23t-79.5 -12q-56 0 -99.5 20t-73.5 56t-45.5 86t-15.5 109q0 63 18.5 113.5t52.5 85.5t82 54t108 19q65 0 114.5 -9.5t82.5 -17.5v-521z" />
+<glyph unicode="Ɍ" horiz-adv-x="646" d="M438 292l42 -54q25 -33 51 -72.5t51.5 -82.5t43.5 -83h-106q-20 38 -43.5 77.5t-47.5 75.5t-47.5 67.5t-42.5 54.5h-141v-275h-97v275h-80v75h80v333q41 10 91.5 13.5t92.5 3.5q146 0 222.5 -55t76.5 -164q0 -68 -38 -116.5t-108 -72.5zM293 615q-23 0 -40.5 -0.5 t-29.5 -1.5q-14 -1 -25 -1v-262h88q46 0 82 5.5t61.5 20.5t39 40.5t13.5 65.5q0 39 -15 65t-40.5 41t-60 21t-73.5 6z" />
+<glyph unicode="ɍ" horiz-adv-x="402" d="M282 531q12 0 27.5 -1.5t30.5 -4t27.5 -5t18.5 -4.5l-16 -81q-11 4 -36.5 9.5t-65.5 5.5q-26 0 -51.5 -5.5t-33.5 -7.5v-162h146v-70h-146v-205h-93v205h-74v70h74v223q33 12 82 22.5t110 10.5z" />
+<glyph unicode="Ɏ" horiz-adv-x="622" d="M18 544h83l-43 75l-40 74h110q17 -37 36 -74l39 -75h220l39 75l38 74h104l-41 -74l-43 -75h84v-73h-126l-58 -96l-60 -96v-279h-97v277l-61 97l-59 97h-125v73zM314 352l35 58q18 29 35 61h-141l35 -61z" />
+<glyph unicode="ɏ" horiz-adv-x="521" d="M19 315h75q-38 106 -65 205h97q11 -45 26.5 -97.5t34.5 -107.5h161q14 51 26 101l25 104h93l-28 -104l-28 -101h66v-68h-88q-23 -72 -47 -137.5t-50 -125.5q-20 -45 -41 -77t-47 -52.5t-58 -30t-74 -9.5q-11 0 -23 1.5t-23.5 4t-21 5.5t-13.5 5l17 75q11 -5 28.5 -9.5 t34.5 -4.5q54 0 85.5 23t55.5 78q-32 60 -61.5 123.5t-55.5 130.5h-101v68zM277 92q28 76 51 155h-117q31 -84 66 -155z" />
+<glyph unicode="ʒ" horiz-adv-x="475" d="M122 220l47 55l49 61l43 58q20 27 34 48h-273v78h388v-54q-14 -23 -34 -52l-45 -62q-24 -33 -51 -66l-51 -60q42 -6 79.5 -19t65 -35.5t43.5 -57t16 -83.5q0 -54 -18.5 -94.5t-53 -67.5t-82.5 -40.5t-107 -13.5q-55 0 -101.5 9t-71.5 22l20 80q23 -11 64 -20t88 -9 q81 0 124 35.5t43 100.5q0 39 -17 63.5t-44.5 38.5t-63.5 19t-74 5h-17v61z" />
+<glyph unicode="ʼ" horiz-adv-x="380" d="M248 776v-18q0 -8 -1 -18q-4 -51 -21 -93.5t-41 -80.5l-67 23q19 38 27.5 74.5t8.5 74.5q0 10 -0.5 21t-1.5 17h96z" />
+<glyph unicode="ˆ" horiz-adv-x="380" d="M190 769l136 -143l-39 -44l-97 88l-97 -88l-39 44z" />
+<glyph unicode="ˇ" horiz-adv-x="380" d="M54 729l39 44l97 -88l97 88l39 -44l-136 -143z" />
+<glyph unicode="ˉ" horiz-adv-x="380" d="M48 711h284v-72h-284v72z" />
+<glyph unicode="˘" horiz-adv-x="380" d="M193 610q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="˙" horiz-adv-x="380" d="M190 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="˚" horiz-adv-x="380" d="M293 677q0 -24 -8.5 -42.5t-22.5 -32t-32.5 -20.5t-39.5 -7t-39.5 7t-32.5 20.5t-22.5 32t-8.5 42.5t8.5 42.5t22.5 32t32.5 20.5t39.5 7t39.5 -7t32.5 -20.5t22.5 -32t8.5 -42.5zM243 677q0 26 -15.5 40.5t-37.5 14.5t-37.5 -14.5t-15.5 -40.5t15.5 -40.5t37.5 -14.5 t37.5 14.5t15.5 40.5z" />
+<glyph unicode="˛" horiz-adv-x="380" d="M183 -187q-56 0 -83 20.5t-27 55.5q0 23 13 44.5t30 39.5q12 13 21.5 21.5t17.5 13.5h93l-26 -20q-14 -11 -29 -27q-14 -16 -23 -28t-9 -26q0 -29 40 -29q7 0 18.5 1.5t22.5 5.5l7 -61q-11 -5 -28.5 -8t-37.5 -3z" />
+<glyph unicode="˜" horiz-adv-x="380" d="M354 711q-5 -12 -13.5 -28t-21.5 -29.5t-30.5 -23t-38.5 -9.5q-20 0 -37.5 7t-33.5 15q-17 8 -29 12t-23 4q-17 0 -31.5 -14t-22.5 -30l-48 24q4 12 13 28t22 29.5t30.5 23t38.5 9.5q20 0 37.5 -7t33.5 -15q17 -8 29 -12t23 -4q17 0 31.5 14t22.5 30z" />
+<glyph unicode="˝" horiz-adv-x="380" d="M209 720l-123 -140l-48 36l115 160zM374 720l-123 -140l-48 36l115 160z" />
+<glyph unicode="̑" horiz-adv-x="380" d="M190 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="΄" horiz-adv-x="380" d="M328 733l-130 -158l-54 38l113 170z" />
+<glyph unicode="΅" horiz-adv-x="380" d="M268 737l-104 -159l-52 31l89 171zM334 621q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM46 621q-22 0 -38 15t-16 40t16 40t38 15q23 0 38.5 -15t15.5 -40t-15.5 -40t-38.5 -15z" />
+<glyph unicode="Ά" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM199 686l-68 -194l-68 16l46 201z" />
+<glyph unicode="Έ" horiz-adv-x="638" d="M151 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM108 686l-68 -194l-68 16l46 201z" />
+<glyph unicode="Ή" horiz-adv-x="777" d="M592 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM108 686l-68 -194l-68 16l46 201z" />
+<glyph unicode="Ί" horiz-adv-x="341" d="M156 693h97v-693h-97v693zM108 686l-68 -194l-68 16l46 201z" />
+<glyph unicode="Ό" horiz-adv-x="807" d="M85 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM187 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM108 686l-68 -194l-68 16l46 201z" />
+<glyph unicode="Ύ" horiz-adv-x="728" d="M379 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97zM108 686l-68 -194l-68 16l46 201z" />
+<glyph unicode="Ώ" horiz-adv-x="810" d="M416 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM108 686l-68 -194l-68 16l46 201z" />
+<glyph unicode="ΐ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM206 737l-104 -159l-52 31l89 171zM272 621q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM-16 621q-22 0 -38 15t-16 40t16 40t38 15 q23 0 38.5 -15t15.5 -40t-15.5 -40t-38.5 -15z" />
+<glyph unicode="Α" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258z" />
+<glyph unicode="Β" horiz-adv-x="647" d="M275 -6q-21 0 -45.5 1t-49 3t-48.5 5t-44 8v672q20 5 44 8t48.5 5t48.5 3t45 1q60 0 112.5 -9t91 -30.5t60.5 -56.5t22 -86q0 -57 -27 -93.5t-72 -54.5q61 -18 97 -57t36 -110q0 -104 -76.5 -156.5t-242.5 -52.5zM184 323v-244q11 -1 26 -2q13 -1 30.5 -1.5t40.5 -0.5 q43 0 81.5 5.5t67.5 19.5t46.5 39t17.5 63q0 34 -13 57.5t-37.5 37.5t-58.5 20t-76 6h-125zM184 401h102q36 0 68 5t55.5 18t37 34t13.5 53q0 30 -14 50.5t-38.5 33t-57.5 18.5t-70 6t-58 -1t-38 -3v-214z" />
+<glyph unicode="Γ" horiz-adv-x="513" d="M495 693v-84h-310v-609h-97v693h407z" />
+<glyph unicode="Δ" horiz-adv-x="655" d="M10 0q34 108 66.5 199t65.5 173.5t68 160.5l73 160h89l74 -160l67 -160.5t65.5 -173.5t66.5 -199h-635zM325 582q-22 -45 -72 -166.5t-120 -333.5h383q-70 212 -120 333.5t-71 166.5z" />
+<glyph unicode="Ε" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448z" />
+<glyph unicode="Ζ" horiz-adv-x="577" d="M528 616l-54 -62l-64 -82l-70 -94l-70 -100q-35 -50 -66 -100t-56 -95h390v-83h-503v65q21 40 49 88l62 98l67 101l69 98l68 88q32 41 59 72h-356v83h475v-77z" />
+<glyph unicode="Η" horiz-adv-x="709" d="M524 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289z" />
+<glyph unicode="Θ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM243 389h295v-80h-295v80z" />
+<glyph unicode="Ι" horiz-adv-x="273" d="M88 693h97v-693h-97v693z" />
+<glyph unicode="Κ" horiz-adv-x="633" d="M601 693l-70 -75l-81 -86l-85 -85l-79 -78q43 -30 91 -74t94 -94t86.5 -102t67.5 -99h-114q-30 47 -69 94.5t-82.5 91t-88 80.5t-86.5 63v-329h-97v693h97v-306l77 75l83 83l77 81q37 38 62 67h117z" />
+<glyph unicode="Λ" horiz-adv-x="656" d="M10 0q37 110 72 204l68 177l66 161l66 151h91l67 -151l66 -161l68 -177l72 -204h-107l-106 304q-52 146 -107 274q-55 -127 -107 -274l-105 -304h-104z" />
+<glyph unicode="Μ" horiz-adv-x="875" d="M399 96l-27 61l-35 80l-41 89l-40 86l-35.5 72t-26.5 49q-11 -118 -18 -255.5t-12 -277.5h-95q4 90 9 181.5t11.5 180t14 172.5t16.5 159h85q27 -44 58 -104l62 -125l60 -132l53 -119l53 119l60 132l62 125q31 60 58 104h85q34 -335 51 -693h-95q-5 140 -12 277.5 t-18 255.5q-10 -17 -26.5 -49l-35.5 -72l-40 -86l-41 -89l-35 -80l-27 -61h-78z" />
+<glyph unicode="Ν" horiz-adv-x="732" d="M563 0l-51 83l-61 95l-69 101l-70 99l-68 89q-33 42 -61 74v-541h-95v693h77q47 -50 101 -117l106 -136l98 -139q47 -68 79 -121v513h95v-693h-81z" />
+<glyph unicode="Ξ" horiz-adv-x="556" d="M507 609h-458v84h458v-84zM39 84h478v-84h-478v84zM93 405h370v-84h-370v84z" />
+<glyph unicode="Ο" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5z" />
+<glyph unicode="Π" horiz-adv-x="703" d="M615 693v-693h-97v610h-333v-610h-97v693h527z" />
+<glyph unicode="Ρ" horiz-adv-x="612" d="M272 700q146 0 224.5 -55.5t78.5 -165.5q0 -60 -21.5 -102.5t-62 -69t-98.5 -38.5t-131 -12h-77v-257h-97v683q41 10 91.5 13.5t92.5 3.5zM280 615q-62 0 -95 -3v-272h73q50 0 90 6.5t67.5 22t42.5 42.5t15 69q0 40 -15.5 66t-42 41.5t-61.5 21.5t-74 6z" />
+<glyph unicode="Σ" horiz-adv-x="567" d="M374 361q-55 -72 -117 -141.5t-109 -136.5h377v-83h-490v73q19 31 45 65l58 70l62 75l62 77l-60 76l-58 74l-54 66q-24 31 -41 56v61h475v-83h-347q14 -21 37 -50l48 -60l56 -68z" />
+<glyph unicode="Τ" horiz-adv-x="569" d="M551 693v-84h-218v-609h-97v609h-218v84h533z" />
+<glyph unicode="Υ" horiz-adv-x="602" d="M253 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97z" />
+<glyph unicode="Φ" horiz-adv-x="868" d="M481 164q48 0 89.5 13.5t72 40t48.5 65t18 88.5t-18 88.5t-48.5 65t-72 40t-89.5 13.5v-414zM387 84q-64 0 -123.5 19t-105 55.5t-73 90t-27.5 122.5t27.5 122t73 89.5t105 55.5t123.5 20v80h94v-80q64 -1 123 -20t105 -55.5t73.5 -89.5t27.5 -122t-27.5 -122.5 t-73.5 -90t-105 -55.5t-123 -19v-84h-94v84zM387 578q-48 0 -89.5 -13.5t-72 -40t-48.5 -65t-18 -88.5t18 -88.5t48.5 -65t72 -40t89.5 -13.5v414z" />
+<glyph unicode="Χ" horiz-adv-x="635" d="M504 0q-15 30 -36 66.5t-46 75.5l-52 80l-52 74l-52 -74l-52 -80l-46 -76q-21 -36 -36 -66h-107q45 88 105 179l126 187l-222 327h112l171 -258l169 258h111l-218 -323l128 -189q60 -92 106 -181h-109z" />
+<glyph unicode="Ψ" horiz-adv-x="819" d="M457 0h-95v177q-81 0 -137 21.5t-91.5 59t-51 89.5t-15.5 112v234h94v-221q0 -113 53.5 -161.5t147.5 -48.5v431h95v-431q94 0 147.5 48.5t53.5 161.5v221h94v-234q0 -60 -15.5 -112t-51 -89.5t-91.5 -59t-137 -21.5v-177z" />
+<glyph unicode="Ω" horiz-adv-x="788" d="M394 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5z" />
+<glyph unicode="Ϊ" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM43 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM233 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ϋ" horiz-adv-x="602" d="M253 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97zM206 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM396 772 q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ά" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM419 733l-130 -158l-54 38l113 170z" />
+<glyph unicode="έ" horiz-adv-x="507" d="M294 533q24 0 48 -2.5t44.5 -6.5t36 -8t23.5 -8l-14 -79q-5 2 -19.5 6.5t-33.5 9t-41 7.5t-42 3q-54 0 -91 -17.5t-37 -55.5q0 -24 10 -38.5t25 -22.5t34 -10.5t37 -2.5h89v-73h-91q-23 0 -45 -4.5t-39 -14t-27 -26t-10 -40.5q0 -83 137 -83q29 0 56 4t49.5 10t39 12 t24.5 10l25 -77q-9 -5 -28 -11.5t-45 -12.5t-59.5 -10t-72.5 -4q-36 0 -75 6.5t-71 23.5t-53 48t-21 80q0 40 25 75t66 52q-11 4 -23.5 14.5t-23.5 25t-18 32.5t-7 39q0 37 15.5 65t44 47t69 28t89.5 9zM383 733l-130 -158l-54 38l113 170z" />
+<glyph unicode="ή" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM402 733l-130 -158l-54 38l113 170z" />
+<glyph unicode="ί" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM242 733l-130 -158l-54 38l113 170z" />
+<glyph unicode="ΰ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM368 737l-104 -159l-52 31l89 171zM434 621q-23 0 -38.5 15t-15.5 40t15.5 40 t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM146 621q-22 0 -38 15t-16 40t16 40t38 15q23 0 38.5 -15t15.5 -40t-15.5 -40t-38.5 -15z" />
+<glyph unicode="α" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5z" />
+<glyph unicode="β" horiz-adv-x="615" d="M175 -185h-93v728q0 50 12.5 92.5t39 74t68.5 49t101 17.5q46 0 84.5 -12.5t66.5 -37t43.5 -60.5t15.5 -84q0 -45 -27 -87.5t-78 -63.5q41 -11 70.5 -32.5t48 -49.5t27 -60t8.5 -65q0 -58 -18.5 -101.5t-53 -72.5t-82.5 -43.5t-107 -14.5q-41 0 -73.5 10t-52.5 21v-208z M175 109q15 -11 45.5 -23t81.5 -12q33 0 63 9t52.5 27t36 45.5t13.5 64.5q0 76 -46.5 120.5t-145.5 44.5h-7v76h8q30 0 56.5 7.5t46 22.5t30.5 37.5t11 52.5q0 49 -29.5 82t-87.5 33q-35 0 -59 -11.5t-39.5 -32.5t-22.5 -49.5t-7 -61.5v-432z" />
+<glyph unicode="γ" horiz-adv-x="507" d="M124 520l30 -86q17 -51 34 -108t32.5 -115.5t26.5 -109.5q23 43 44.5 95.5t40 108t32.5 111t23 104.5h93q-10 -50 -27.5 -113t-43 -132.5t-60 -142.5t-79.5 -143q16 -86 24 -174h-88q-4 58 -15.5 122.5t-27 130t-34 130t-37.5 122.5l-38 110l-34 90h104z" />
+<glyph unicode="δ" horiz-adv-x="593" d="M303 457q-72 -20 -113 -74.5t-41 -129.5q0 -36 8.5 -69.5t26.5 -59t46 -40.5t67 -15q36 0 63.5 14t46 38t28 56.5t9.5 70.5q0 45 -13.5 78.5t-34 57.5t-45.5 41.5t-48 31.5zM230 504q-38 27 -61.5 58t-23.5 74q0 70 50.5 105t137.5 35q27 0 51.5 -4t44.5 -9.5t35 -12.5 l25 -10l-21 -74q-5 3 -17 8.5t-29 11t-39 9.5t-46 4q-13 0 -30.5 -1.5t-33 -7.5t-26 -17.5t-10.5 -30.5q0 -27 25.5 -48.5t70.5 -51.5l77 -54q37 -28 66 -62t46.5 -78t17.5 -105q0 -47 -14 -92.5t-43.5 -82t-75.5 -59t-111 -22.5q-61 0 -106.5 21t-76 57t-45.5 84t-15 102 q0 46 13.5 86t37 72t56 56t70.5 39z" />
+<glyph unicode="ε" horiz-adv-x="507" d="M294 533q24 0 48 -2.5t44.5 -6.5t36 -8t23.5 -8l-14 -79q-5 2 -19.5 6.5t-33.5 9t-41 7.5t-42 3q-54 0 -91 -17.5t-37 -55.5q0 -24 10 -38.5t25 -22.5t34 -10.5t37 -2.5h89v-73h-91q-23 0 -45 -4.5t-39 -14t-27 -26t-10 -40.5q0 -83 137 -83q29 0 56 4t49.5 10t39 12 t24.5 10l25 -77q-9 -5 -28 -11.5t-45 -12.5t-59.5 -10t-72.5 -4q-36 0 -75 6.5t-71 23.5t-53 48t-21 80q0 40 25 75t66 52q-11 4 -23.5 14.5t-23.5 25t-18 32.5t-7 39q0 37 15.5 65t44 47t69 28t89.5 9z" />
+<glyph unicode="ζ" horiz-adv-x="447" d="M459 -53q0 -38 -15.5 -73.5t-33.5 -61.5l-80 25l10 19q7 12 13 25.5t10.5 28.5t4.5 28q0 34 -28.5 48t-93.5 25q-51 9 -87 25.5t-59.5 43.5t-34.5 65t-11 90q0 74 30 143.5t72.5 129t88 107t76.5 76.5h-237v78h357v-72l-53 -49q-30 -28 -62 -63t-63.5 -76t-56.5 -85 t-40.5 -91t-15.5 -94q0 -37 8.5 -63t25.5 -43.5t44 -28.5t65 -17q92 -16 129 -48t37 -92z" />
+<glyph unicode="η" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505z" />
+<glyph unicode="θ" horiz-adv-x="606" d="M303 776q61 0 107.5 -27.5t77 -79t46 -125t15.5 -164.5q0 -92 -15.5 -165t-46 -124.5t-77 -79t-107.5 -27.5q-62 0 -108 27.5t-76.5 79t-46 124.5t-15.5 165q0 91 15.5 164.5t46 125t76.5 79t108 27.5zM303 66q39 0 67 20t46 57t26.5 89t10.5 117h-301q1 -65 10 -117 t27 -89t46 -57t68 -20zM303 694q-39 0 -66.5 -19t-45.5 -53.5t-27 -84t-12 -110.5h301q-2 61 -11.5 110.5t-27.5 84t-45.5 53.5t-65.5 19z" />
+<glyph unicode="ι" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="κ" horiz-adv-x="541" d="M272 283q31 -22 67 -55.5t70.5 -72.5t64.5 -79.5t51 -75.5h-110q-22 34 -51.5 69.5t-61.5 68.5t-65 61t-62 47v-246h-93v520h93v-223l55 53l62 62l59 60l44 48h108l-51 -54l-62 -63l-62 -63z" />
+<glyph unicode="λ" horiz-adv-x="513" d="M266 426q-27 -54 -50.5 -111.5t-43 -113t-34.5 -107t-25 -94.5h-95q14 58 36 124t49 135t58.5 137t63.5 130l-32 74q-14 33 -29 55t-33 33t-43 11q-14 0 -24.5 -2t-15.5 -4l-13 75q5 2 23.5 5t42.5 3q34 0 60.5 -10t46.5 -28t35.5 -42.5t28.5 -54.5q37 -86 70 -171.5 t60.5 -168t50.5 -159t41 -142.5h-97l-59 205q-32 111 -72 221z" />
+<glyph unicode="μ" horiz-adv-x="584" d="M175 520v-278q0 -95 31 -133t100 -38q15 0 31 1t30 2.5t25.5 3t16.5 3.5v439h93v-505q-32 -8 -82.5 -17t-110.5 -9q-55 0 -87.5 11.5t-52.5 33.5q3 -28 4 -56.5t1 -59.5v-103h-92v705h93z" />
+<glyph unicode="ν" horiz-adv-x="506" d="M488 520q-39 -146 -91.5 -280t-101.5 -240h-84q-49 106 -101.5 240t-91.5 280h100q12 -49 28.5 -104.5t35.5 -109.5l37 -106q19 -51 36 -91q17 40 36 91l37 106q19 54 35.5 109.5t28.5 104.5h96z" />
+<glyph unicode="ξ" horiz-adv-x="474" d="M299 86q46 -8 78 -19.5t51.5 -28t28 -39t8.5 -52.5q0 -38 -15.5 -73.5t-33.5 -61.5l-80 25l10 19q7 12 13 25.5t10.5 28.5t4.5 28q0 34 -28.5 48t-93.5 25q-100 17 -150 67.5t-50 142.5q0 43 15.5 76t38.5 57t49 38.5t48 22.5q-28 9 -49.5 26.5t-36.5 39t-22.5 46.5 t-7.5 51q0 49 17 86t47 62t70.5 37.5t87.5 12.5q48 0 82.5 -7t50.5 -13l-16 -80q-16 6 -44.5 13t-66.5 7q-36 0 -61.5 -9.5t-41.5 -25.5t-23.5 -37.5t-7.5 -46.5q0 -31 12.5 -54.5t34 -39t51 -23t63.5 -7.5h70v-78h-61q-24 0 -58.5 -6t-66.5 -22.5t-55 -47t-23 -78.5 q0 -62 38 -92t113 -43z" />
+<glyph unicode="ο" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5z" />
+<glyph unicode="π" horiz-adv-x="582" d="M500 0h-93v442h-232v-442h-93v520h418v-520z" />
+<glyph unicode="ρ" horiz-adv-x="599" d="M307 -12q-44 0 -80.5 12t-57.5 25v-210h-93v476q0 54 14.5 98t43 75.5t69.5 49t95 17.5q119 0 183.5 -69.5t64.5 -202.5q0 -59 -16 -108.5t-46.5 -85.5t-75 -56.5t-101.5 -20.5zM169 110q31 -23 64 -32t62 -9q40 0 69 14.5t48 40t28 60.5t9 75q0 91 -34 140t-115 49 q-63 0 -97 -41t-34 -132v-165z" />
+<glyph unicode="ς" horiz-adv-x="452" d="M307 81q38 -8 64 -19.5t42.5 -27.5t23.5 -37.5t7 -49.5q0 -38 -15.5 -73.5t-33.5 -61.5l-80 25l11 19q6 12 12 25.5t10.5 28.5t4.5 28q0 29 -20 43.5t-65 23.5q-62 12 -103 33.5t-66 52.5t-35.5 72t-10.5 94q0 56 16 106t48 88t79.5 60t110.5 22q35 0 68.5 -6t64.5 -19 l-20 -79q-20 10 -47 16t-57 6q-82 0 -124 -52.5t-42 -139.5q0 -52 12 -83.5t33.5 -50.5t50 -28t61.5 -16z" />
+<glyph unicode="σ" horiz-adv-x="617" d="M535 238q0 -58 -17.5 -104.5t-49.5 -79t-76.5 -50t-97.5 -17.5q-50 0 -94 18t-76.5 52t-51.5 82t-19 107q0 74 22.5 126t60 85t87.5 48t104 15h272v-78h-143q16 -18 30.5 -41t25.5 -49.5t17 -55.5t6 -58zM440 238q0 62 -23 116t-61 88h-33q-26 0 -56 -7.5t-56.5 -28.5 t-44 -59.5t-17.5 -100.5q0 -41 11 -74t30.5 -56t46 -35t57.5 -12q68 0 107 45.5t39 123.5z" />
+<glyph unicode="τ" horiz-adv-x="449" d="M403 2q-14 -3 -34.5 -6.5t-40.5 -3.5q-53 0 -86 13.5t-52.5 39.5t-26.5 65.5t-7 91.5v240h-138v78h406v-78h-175v-239q0 -39 4.5 -64.5t14.5 -40t26.5 -20.5t40.5 -6q19 0 35.5 2.5t26.5 5.5z" />
+<glyph unicode="υ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5z" />
+<glyph unicode="φ" horiz-adv-x="774" d="M342 -185v176q-66 5 -119.5 25.5t-91 55t-58 82t-20.5 106.5q0 63 23.5 114t67 86t105.5 54t138 19q81 0 143 -19t104.5 -54t64.5 -86t22 -114q0 -118 -74.5 -188.5t-214.5 -80.5v-176h-90zM626 260q0 40 -11 73.5t-35 59t-60.5 41.5t-87.5 21v-387q102 10 148 61t46 131 zM148 260q0 -80 48.5 -130.5t145.5 -61.5v386q-97 -10 -145.5 -62.5t-48.5 -131.5z" />
+<glyph unicode="χ" horiz-adv-x="515" d="M393 0q-11 22 -27 49t-35 55l-39 57l-39 53l-39 -54l-38 -56l-35 -56q-16 -27 -27 -48h-96q35 68 84 138l96 135l-172 247h105l124 -182l125 182h99l-168 -241l99 -137q50 -73 85 -142h-102z" />
+<glyph unicode="ψ" horiz-adv-x="780" d="M435 520v-449q83 4 129.5 51t46.5 153v245h93v-258q0 -57 -15.5 -106t-48.5 -85.5t-84 -58t-121 -23.5v-174h-90v174q-71 2 -121.5 23.5t-83.5 58t-48.5 85.5t-15.5 106v258h93v-245q0 -106 46 -153t130 -51v449h90z" />
+<glyph unicode="ω" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z" />
+<glyph unicode="ϊ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM33 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM223 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5 t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ϋ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM195 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5 t-17.5 -42.5t-40.5 -16.5zM385 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ό" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM411 733l-130 -158l-54 38l113 170z" />
+<glyph unicode="ύ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM404 733l-130 -158l-54 38l113 170z" />
+<glyph unicode="ώ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M535 733l-130 -158l-54 38l113 170z" />
+<glyph unicode="Ѐ" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM241 932l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Ё" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM204 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM394 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5 t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ђ" horiz-adv-x="755" d="M715 208q0 -44 -13.5 -82.5t-39 -67t-63 -44.5t-86.5 -16q-14 0 -29.5 0.5t-27.5 2.5l3 77q6 -1 14.5 -1.5t22.5 -0.5q60 0 89.5 37t29.5 94q0 76 -47.5 111t-130.5 35q-35 0 -68.5 -5t-50.5 -9v-339h-97v609h-203v84h540v-84h-240v-190q9 3 23.5 6t32.5 5.5t37 4t36 1.5 q68 0 118.5 -16t83.5 -46t49.5 -72t16.5 -94z" />
+<glyph unicode="Ѓ" horiz-adv-x="513" d="M495 693v-84h-310v-609h-97v693h407zM426 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="Є" horiz-adv-x="624" d="M385 -15q-73 0 -133 24.5t-102.5 71t-66 114t-23.5 152.5q0 86 23.5 153t66.5 113.5t103 71t133 24.5q42 0 77.5 -5t62.5 -12.5t44.5 -15.5t24.5 -13l-25 -77q-22 11 -64.5 24.5t-108.5 13.5q-53 0 -94 -16.5t-70 -46.5t-45.5 -72t-21.5 -94h304v-82h-306 q4 -55 20.5 -99.5t46 -76.5t71 -49.5t95.5 -17.5q66 0 109.5 14t65.5 25l25 -80q-7 -5 -25 -12.5t-45.5 -14.5t-63.5 -12t-78 -5z" />
+<glyph unicode="Ѕ" horiz-adv-x="536" d="M249 69q152 0 152 104q0 32 -13.5 54.5t-36.5 39t-52.5 28.5t-62.5 24q-38 13 -72 29.5t-59 39t-39.5 53.5t-14.5 75q0 91 62 142t171 51q63 0 114.5 -13.5t75.5 -29.5l-31 -79q-21 13 -62.5 25.5t-96.5 12.5q-28 0 -52 -6t-42 -18t-28.5 -30.5t-10.5 -43.5q0 -28 11 -47 t31 -33.5t46.5 -26.5t58.5 -24q45 -18 82.5 -36t65 -43t42.5 -59.5t15 -83.5q0 -91 -66.5 -140t-187.5 -49q-41 0 -75.5 5.5t-61.5 13t-46.5 16t-30.5 14.5l29 80q23 -13 70 -29t115 -16z" />
+<glyph unicode="І" horiz-adv-x="273" d="M88 693h97v-693h-97v693z" />
+<glyph unicode="Ї" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM42 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM232 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ј" horiz-adv-x="504" d="M421 223q0 -50 -10.5 -93t-37 -75.5t-71 -51t-111.5 -18.5q-34 0 -62.5 5.5t-51.5 14t-40 18t-27 18.5l38 77q21 -15 54.5 -31.5t83.5 -16.5q72 0 105 36.5t33 125.5v461h97v-470z" />
+<glyph unicode="Љ" horiz-adv-x="1047" d="M526 610h-201q-4 -112 -10 -210.5t-34 -188.5q-14 -45 -34.5 -84.5t-51 -69t-72 -47.5t-97.5 -20l-11 84q70 8 108.5 44t63.5 110q28 85 35.5 202.5t7.5 262.5h393v-252q18 2 38.5 2.5t38.5 0.5q308 0 308 -227q0 -56 -21 -98t-60 -70t-95 -42t-126 -14q-42 0 -90 3.5 t-90 13.5v600zM906 217q0 42 -15 70t-43 44t-66.5 22.5t-84.5 6.5h-37q-19 0 -37 -2v-277q17 -2 40.5 -2.5t50.5 -0.5q37 0 72 6t61.5 22t42.5 42.5t16 68.5z" />
+<glyph unicode="Њ" horiz-adv-x="1030" d="M606 436q18 2 38.5 3t38.5 1q154 0 231 -54t77 -169q0 -56 -21 -98t-60 -70t-95 -42t-126 -14q-42 0 -90 3.5t-90 13.5v333h-324v-343h-97v693h97v-267h324v267h97v-257zM697 78q37 0 72 6t61.5 22t42.5 42.5t16 68.5t-15 69t-43 42.5t-66.5 21.5t-84.5 6 q-17 0 -36.5 -0.5t-37.5 -2.5v-272q17 -2 40.5 -2.5t50.5 -0.5z" />
+<glyph unicode="Ћ" horiz-adv-x="753" d="M558 693v-84h-240v-190q9 3 23.5 6t32.5 5.5t37 4t36 1.5q68 0 113.5 -16t73 -46t39 -72t11.5 -94v-208h-96v207q0 74 -34 109.5t-117 35.5q-35 0 -68.5 -5t-50.5 -9v-338h-97v609h-203v84h540z" />
+<glyph unicode="Ќ" horiz-adv-x="633" d="M601 693l-70 -75l-81 -86l-85 -85l-79 -78q43 -30 91 -74t94 -94t86.5 -102t67.5 -99h-114q-30 47 -69 94.5t-82.5 91t-88 80.5t-86.5 63v-329h-97v693h97v-306l77 75l83 83l77 81q37 38 62 67h117zM462 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="Ѝ" horiz-adv-x="732" d="M88 0v693h95v-513q32 53 79 121l98 139l106 136q54 67 101 117h77v-693h-95v541q-28 -32 -61 -74l-68 -89l-70 -99l-69 -101l-61 -95l-51 -83h-81zM285 932l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Ў" horiz-adv-x="591" d="M396 212q-20 -46 -41.5 -86.5t-51 -70.5t-71 -47t-102.5 -17q-12 0 -25 1.5t-25 4t-21 5.5t-13 6l17 82q13 -5 31.5 -10t38.5 -5q30 0 52.5 7.5t40.5 21t32 33t27 43.5q-44 71 -83 141.5t-72 136.5t-60 126l-48 109h110q33 -87 84.5 -194t114.5 -224q40 91 76.5 200.5 t68.5 217.5h105q-23 -72 -46 -135l-46 -122l-46 -114zM309 760q-63 0 -102.5 32t-47.5 89l71 19q8 -32 27 -52t52 -20t52 20t27 52l70 -19q-8 -57 -47 -89t-102 -32z" />
+<glyph unicode="Џ" horiz-adv-x="703" d="M88 0v693h97v-610h333v610h97v-693h-217v-185h-92v185h-218z" />
+<glyph unicode="А" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258z" />
+<glyph unicode="Б" horiz-adv-x="623" d="M185 610v-176h86q73 0 130.5 -12t97.5 -38.5t61 -68t21 -101.5q0 -110 -80 -165.5t-226 -55.5q-21 0 -45.5 1t-49 3t-48.5 5t-44 8v683h428v-83h-331zM283 78q39 0 74.5 6t62.5 21.5t43 41.5t16 66q0 42 -14.5 69t-41.5 43t-66.5 22.5t-89.5 6.5h-82v-273q11 -1 26 -2 q13 -1 31 -1h41z" />
+<glyph unicode="В" horiz-adv-x="647" d="M275 -6q-21 0 -45.5 1t-49 3t-48.5 5t-44 8v672q20 5 44 8t48.5 5t48.5 3t45 1q60 0 112.5 -9t91 -30.5t60.5 -56.5t22 -86q0 -57 -27 -93.5t-72 -54.5q61 -18 97 -57t36 -110q0 -104 -76.5 -156.5t-242.5 -52.5zM184 323v-244q11 -1 26 -2q13 -1 30.5 -1.5t40.5 -0.5 q43 0 81.5 5.5t67.5 19.5t46.5 39t17.5 63q0 34 -13 57.5t-37.5 37.5t-58.5 20t-76 6h-125zM184 401h102q36 0 68 5t55.5 18t37 34t13.5 53q0 30 -14 50.5t-38.5 33t-57.5 18.5t-70 6t-58 -1t-38 -3v-214z" />
+<glyph unicode="Г" horiz-adv-x="513" d="M495 693v-84h-310v-609h-97v693h407z" />
+<glyph unicode="Д" horiz-adv-x="727" d="M110 0v-185h-92v268h73q51 58 78.5 128.5t40 149t15 163t3.5 169.5h392v-610h87v-268h-92v185h-505zM323 610q-3 -66 -6.5 -134.5t-15 -136t-33.5 -132.5t-62 -124h317v527h-200z" />
+<glyph unicode="Е" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448z" />
+<glyph unicode="Ж" horiz-adv-x="909" d="M312 368l-66 78l-74 86l-70 85l-62 76h113l53 -65l64 -80l70 -84l68 -80v309h93v-309l67 80l70 84l66 80l52 65h112l-62 -76l-70 -85l-73 -86l-66 -77q40 -36 80 -80.5t77.5 -92.5t70.5 -98t59 -98h-110q-27 46 -61 92.5t-70 90t-72.5 81.5t-69.5 67v-331h-93v331 q-33 -29 -70 -67t-73 -81.5t-69.5 -90t-60.5 -92.5h-109q25 48 58 98t70.5 98t78 92t79.5 80z" />
+<glyph unicode="З" horiz-adv-x="576" d="M147 405h52q33 0 67 5t62 18.5t46 36.5t18 58q0 45 -38.5 73.5t-102.5 28.5q-55 0 -99 -12.5t-65 -25.5l-31 79q12 8 32.5 15.5t46 13.5t55.5 9.5t62 3.5q52 0 96 -11t76 -33.5t50 -57t18 -81.5q0 -48 -30.5 -90t-89.5 -61q30 -8 57.5 -22.5t48 -37t33 -52.5t12.5 -70 q0 -55 -20.5 -94.5t-57 -64.5t-88.5 -36.5t-115 -11.5q-38 0 -72 5.5t-61 13t-47 16.5t-31 15l29 80q11 -6 29.5 -14t41.5 -15t51 -12t59 -5q85 0 132.5 28.5t47.5 96.5q0 40 -16.5 65.5t-45 40.5t-67 20.5t-83.5 5.5h-62v79z" />
+<glyph unicode="И" horiz-adv-x="732" d="M88 0v693h95v-513q32 53 79 121l98 139l106 136q54 67 101 117h77v-693h-95v541q-28 -32 -61 -74l-68 -89l-70 -99l-69 -101l-61 -95l-51 -83h-81z" />
+<glyph unicode="Й" horiz-adv-x="732" d="M88 0v693h95v-513q32 53 79 121l98 139l106 136q54 67 101 117h77v-693h-95v541q-28 -32 -61 -74l-68 -89l-70 -99l-69 -101l-61 -95l-51 -83h-81zM367 760q-63 0 -102.5 32t-47.5 89l71 19q8 -32 27 -52t52 -20t52 20t27 52l70 -19q-8 -57 -47 -89t-102 -32z" />
+<glyph unicode="К" horiz-adv-x="633" d="M601 693l-70 -75l-81 -86l-85 -85l-79 -78q43 -30 91 -74t94 -94t86.5 -102t67.5 -99h-114q-30 47 -69 94.5t-82.5 91t-88 80.5t-86.5 63v-329h-97v693h97v-306l77 75l83 83l77 81q37 38 62 67h117z" />
+<glyph unicode="Л" horiz-adv-x="711" d="M325 610l-4 -108q-2 -53 -6 -102.5t-12 -96.5t-22 -92t-34.5 -84.5t-51 -69t-72 -47.5t-97.5 -20l-11 84q70 8 108.5 44t63.5 110q28 84 35.5 202.5t7.5 262.5h393v-693h-97v610h-201z" />
+<glyph unicode="М" horiz-adv-x="875" d="M399 96l-27 61l-35 80l-41 89l-40 86l-35.5 72t-26.5 49q-11 -118 -18 -255.5t-12 -277.5h-95q4 90 9 181.5t11.5 180t14 172.5t16.5 159h85q27 -44 58 -104l62 -125l60 -132l53 -119l53 119l60 132l62 125q31 60 58 104h85q34 -335 51 -693h-95q-5 140 -12 277.5 t-18 255.5q-10 -17 -26.5 -49l-35.5 -72l-40 -86l-41 -89l-35 -80l-27 -61h-78z" />
+<glyph unicode="Н" horiz-adv-x="709" d="M524 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289z" />
+<glyph unicode="О" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5z" />
+<glyph unicode="П" horiz-adv-x="703" d="M615 693v-693h-97v610h-333v-610h-97v693h527z" />
+<glyph unicode="Р" horiz-adv-x="612" d="M272 700q146 0 224.5 -55.5t78.5 -165.5q0 -60 -21.5 -102.5t-62 -69t-98.5 -38.5t-131 -12h-77v-257h-97v683q41 10 91.5 13.5t92.5 3.5zM280 615q-62 0 -95 -3v-272h73q50 0 90 6.5t67.5 22t42.5 42.5t15 69q0 40 -15.5 66t-42 41.5t-61.5 21.5t-74 6z" />
+<glyph unicode="С" horiz-adv-x="624" d="M386 -15q-73 0 -133 24t-103 70t-66.5 113.5t-23.5 154.5t26.5 154.5t71.5 113.5t105 70t128 24q43 0 77.5 -6t60 -14t41.5 -16t22 -12l-28 -80q-9 6 -26 13t-38.5 14t-47 11.5t-51.5 4.5q-55 0 -99 -19t-75 -55t-47.5 -87.5t-16.5 -115.5q0 -62 14.5 -113t43.5 -87.5 t72.5 -56.5t101.5 -20q67 0 111 14t66 25l25 -80q-7 -5 -25 -12.5t-45 -14.5t-63 -12t-78 -5z" />
+<glyph unicode="Т" horiz-adv-x="569" d="M551 693v-84h-218v-609h-97v609h-218v84h533z" />
+<glyph unicode="У" horiz-adv-x="591" d="M396 212q-20 -46 -41.5 -86.5t-51 -70.5t-71 -47t-102.5 -17q-12 0 -25 1.5t-25 4t-21 5.5t-13 6l17 82q13 -5 31.5 -10t38.5 -5q30 0 52.5 7.5t40.5 21t32 33t27 43.5q-44 71 -83 141.5t-72 136.5t-60 126l-48 109h110q33 -87 84.5 -194t114.5 -224q40 91 76.5 200.5 t68.5 217.5h105q-23 -72 -46 -135l-46 -122l-46 -114z" />
+<glyph unicode="Ф" horiz-adv-x="868" d="M481 164q48 0 89.5 13.5t72 40t48.5 65t18 88.5t-18 88.5t-48.5 65t-72 40t-89.5 13.5v-414zM387 84q-64 0 -123.5 19t-105 55.5t-73 90t-27.5 122.5t27.5 122t73 89.5t105 55.5t123.5 20v80h94v-80q64 -1 123 -20t105 -55.5t73.5 -89.5t27.5 -122t-27.5 -122.5 t-73.5 -90t-105 -55.5t-123 -19v-84h-94v84zM387 578q-48 0 -89.5 -13.5t-72 -40t-48.5 -65t-18 -88.5t18 -88.5t48.5 -65t72 -40t89.5 -13.5v414z" />
+<glyph unicode="Х" horiz-adv-x="635" d="M504 0q-15 30 -36 66.5t-46 75.5l-52 80l-52 74l-52 -74l-52 -80l-46 -76q-21 -36 -36 -66h-107q45 88 105 179l126 187l-222 327h112l171 -258l169 258h111l-218 -323l128 -189q60 -92 106 -181h-109z" />
+<glyph unicode="Ц" horiz-adv-x="722" d="M615 83h87v-268h-92v185h-522v693h97v-610h333v610h97v-610z" />
+<glyph unicode="Ч" horiz-adv-x="635" d="M156 493q0 -42 7.5 -73.5t26 -52t50 -30.5t79.5 -10q19 0 38.5 1.5t37.5 3.5t32 5l23 5v351h97v-693h-97v258q-19 -5 -58.5 -10t-84.5 -5q-76 0 -124 17.5t-75.5 50t-37.5 79t-10 103.5v200h96v-200z" />
+<glyph unicode="Ш" horiz-adv-x="987" d="M88 0v693h97v-610h260v610h97v-610h260v610h97v-693h-811z" />
+<glyph unicode="Щ" horiz-adv-x="1006" d="M88 0v693h97v-610h260v610h97v-610h260v610h97v-610h87v-268h-92v185h-806z" />
+<glyph unicode="Ъ" horiz-adv-x="730" d="M691 217q0 -112 -81 -168t-228 -56q-42 0 -92 3.5t-92 13.5v600h-180v83h277v-252q20 2 40.5 2.5t40.5 0.5q315 0 315 -227zM589 217q0 42 -16 70t-44.5 44t-68 22.5t-87.5 6.5h-39q-19 0 -39 -2v-277q18 -2 40.5 -2.5t54.5 -0.5q39 0 75 6t63.5 22t44 42.5t16.5 68.5z " />
+<glyph unicode="Ы" horiz-adv-x="860" d="M468 217q0 42 -15 70t-43 44t-66.5 22.5t-84.5 6.5h-37q-19 0 -37 -2v-277q34 -3 51 -3h40q37 0 72 6t61.5 22t42.5 42.5t16 68.5zM570 217q0 -56 -21 -98t-60 -70t-95 -42t-126 -14q-42 0 -90 3.5t-90 13.5v683h97v-252q18 2 38.5 2.5t38.5 0.5q308 0 308 -227zM675 693 h97v-693h-97v693z" />
+<glyph unicode="Ь" horiz-adv-x="620" d="M581 217q0 -112 -81 -168t-228 -56q-42 0 -92 3.5t-92 13.5v683h97v-252q20 2 40.5 2.5t40.5 0.5q315 0 315 -227zM479 217q0 42 -16 70t-44.5 44t-68 22.5t-87.5 6.5h-39q-19 0 -39 -2v-277q18 -2 40.5 -2.5t54.5 -0.5q39 0 75 6t63.5 22t44 42.5t16.5 68.5z" />
+<glyph unicode="Э" horiz-adv-x="624" d="M564 347q0 -85 -23.5 -152.5t-66.5 -114t-102.5 -71t-132.5 -24.5q-42 0 -78 5t-63.5 12t-45.5 14.5t-25 12.5l25 80q22 -11 65.5 -25t109.5 -14q54 0 95.5 17.5t71 49.5t46 76.5t20.5 99.5h-306v82h304q-5 52 -21.5 94t-45.5 72t-70 46.5t-94 16.5q-66 0 -108.5 -13.5 t-64.5 -24.5l-25 77q7 5 24.5 13t44.5 15.5t62.5 12.5t77.5 5q73 0 133 -24.5t103 -71t66.5 -113.5t23.5 -153z" />
+<glyph unicode="Ю" horiz-adv-x="1034" d="M657 708q64 0 121.5 -23t101 -68.5t69 -113t25.5 -156.5t-25 -156.5t-68.5 -113t-101 -68.5t-122.5 -23q-63 0 -119 21.5t-98.5 63.5t-69 104.5t-30.5 145.5h-155v-321h-97v693h97v-289h158q8 75 36 132t70 95t95.5 57.5t112.5 19.5zM657 71q51 0 91 19.5t67.5 55.5 t42 87t14.5 114t-14.5 114t-42 87t-67.5 55.5t-91 19.5t-91 -19.5t-68 -55.5t-42.5 -87t-14.5 -114t14.5 -114t42.5 -87t68 -55.5t91 -19.5z" />
+<glyph unicode="Я" horiz-adv-x="639" d="M357 615q-38 0 -72.5 -6t-61.5 -21t-43 -41t-16 -65q0 -74 47.5 -102.5t142.5 -28.5h100v261q-11 0 -26 1q-13 1 -30.5 1.5t-40.5 0.5zM365 700q21 0 45 -1t48.5 -3t48.5 -5t44 -8v-683h-97v271h-83q-14 0 -29.5 0.5t-41.5 3.5q-18 -24 -39 -56t-42 -68t-41.5 -75 t-37.5 -76h-102q16 39 38 81t46 80l44 71q22 32 38 53q-23 7 -48 20t-46 36t-34.5 57.5t-13.5 82.5q0 54 21 95t60.5 68.5t95.5 41.5t126 14z" />
+<glyph unicode="а" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5z" />
+<glyph unicode="б" horiz-adv-x="599" d="M166 460q31 25 72.5 38.5t79.5 13.5q112 0 169.5 -68.5t57.5 -190.5q0 -52 -14 -100t-43.5 -85t-74.5 -59t-107 -22q-71 0 -118 26t-74.5 71t-38.5 105t-11 127q0 87 12.5 162t45.5 132t91.5 94.5t150.5 50.5l48 7l36 4q15 2 28 4.5t27 5.5l10 -84q-7 -2 -14.5 -3t-21 -3 t-36 -5t-58.5 -7q-99 -11 -152 -60t-65 -154zM160 301q0 -47 6.5 -89t23 -74t44.5 -50.5t72 -18.5q38 0 65 14.5t44 39.5t25 58.5t8 71.5q0 34 -6.5 66t-23.5 57t-45.5 40t-71.5 15q-42 0 -80.5 -18t-59.5 -44q-1 -11 -1 -31v-37z" />
+<glyph unicode="в" horiz-adv-x="552" d="M173 70q6 -1 17 -2t25 -1.5t29.5 -1t29.5 -0.5q29 0 55.5 4t46 14t31 26.5t11.5 42.5q0 25 -10.5 41.5t-28.5 26.5t-42.5 14t-52.5 4h-111v-168zM272 307q27 0 49.5 3.5t39 12.5t26 24t9.5 38q0 24 -12 38t-31.5 21.5t-44 10t-49.5 2.5q-23 0 -46.5 -1t-39.5 -2v-147h99z M270 -9q-59 0 -109 5.5t-79 12.5v506q29 7 79 12.5t109 5.5q41 0 80 -7t69 -23.5t48.5 -45t18.5 -70.5q0 -38 -19 -65t-51 -42q43 -15 68.5 -44.5t25.5 -82.5q0 -47 -18.5 -78t-51 -50t-76.5 -26.5t-94 -7.5z" />
+<glyph unicode="г" horiz-adv-x="422" d="M404 442h-229v-442h-93v520h322v-78z" />
+<glyph unicode="д" horiz-adv-x="607" d="M18 76h56q33 48 52.5 99t29.5 105.5t13 114t4 125.5h341v-444h70v-221h-88v145h-390v-145h-88v221zM421 76v366h-163q-1 -47 -5 -94.5t-13 -94t-25.5 -91t-41.5 -86.5h248z" />
+<glyph unicode="е" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5 t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258z" />
+<glyph unicode="ж" horiz-adv-x="767" d="M723 520l-45 -54l-52 -62l-54 -62l-53 -59l62 -63q32 -34 62.5 -70.5t58.5 -75t49 -74.5h-104q-21 33 -48.5 69.5t-57 70.5t-59 63.5t-54.5 48.5v-252h-89v252q-25 -19 -54.5 -48.5t-59 -63.5t-57 -70.5t-48.5 -69.5h-103q21 36 48.5 74t58 74.5t62.5 70.5l62 63l-52 59 l-55 63l-52 60l-46 56h103l83 -100l110 -127v227h89v-227l110 127l83 100h102z" />
+<glyph unicode="з" horiz-adv-x="493" d="M214 533q45 0 84 -9t67 -27t44 -45t16 -63q0 -23 -8 -42t-20 -34t-26.5 -25.5t-27.5 -14.5q46 -14 72.5 -49.5t26.5 -89.5q0 -74 -60 -110t-163 -36q-63 0 -108.5 10t-64.5 19l16 79q16 -6 57.5 -16.5t99.5 -10.5q63 0 96 19.5t33 58.5q0 28 -12.5 45.5t-31.5 26.5 t-41 12t-41 3h-87v74h84q18 0 37.5 2.5t36 10.5t27.5 22.5t11 38.5q0 19 -9.5 32.5t-25.5 22.5t-37.5 13.5t-44.5 4.5q-18 0 -39 -3t-41 -7.5t-36 -9.5t-23 -9l-17 80q8 3 25 8t38.5 9t45.5 7t47 3z" />
+<glyph unicode="и" horiz-adv-x="601" d="M519 520v-520h-90v396q-30 -38 -66 -89l-72 -105l-69 -108l-57 -94h-83v520h90v-374l59 94l69 102l70 98q36 46 67 80h82z" />
+<glyph unicode="й" horiz-adv-x="601" d="M519 520v-520h-90v396q-30 -38 -66 -89l-72 -105l-69 -108l-57 -94h-83v520h90v-374l59 94l69 102l70 98q36 46 67 80h82zM301 604q-63 0 -102.5 32t-47.5 89l71 19q8 -32 27 -52t52 -20t52 20t27 52l70 -19q-8 -57 -47 -89t-102 -32z" />
+<glyph unicode="к" horiz-adv-x="541" d="M272 283q31 -22 67 -55.5t70.5 -72.5t64.5 -79.5t51 -75.5h-110q-22 34 -51.5 69.5t-61.5 68.5t-65 61t-62 47v-246h-93v520h93v-223l55 53l62 62l59 60l44 48h108l-51 -54l-62 -63l-62 -63z" />
+<glyph unicode="л" horiz-adv-x="602" d="M263 442q0 -33 -1.5 -70.5t-5.5 -75t-11 -74t-18 -68.5t-27.5 -60t-40.5 -49.5t-56 -36t-75 -18.5l-13 78q49 10 77.5 37t45.5 66q15 34 22 77t10 89.5t3.5 93.5t0.5 89h346v-520h-93v442h-164z" />
+<glyph unicode="м" horiz-adv-x="735" d="M181 383q-10 -99 -15 -197.5t-8 -185.5h-89q2 61 6 127.5t9 134t11 133t13 125.5h85q32 -52 75 -142l99 -209l99 209q43 90 75 142h86q7 -60 13 -125.5t11 -133t9 -134t6 -127.5h-92q-3 87 -8 185.5t-15 197.5l-37 -75l-42 -88l-38 -86l-28 -65h-78l-30 66l-38 87l-42 88 q-21 44 -37 73z" />
+<glyph unicode="н" horiz-adv-x="590" d="M508 0h-93v230h-240v-230h-93v520h93v-212h240v212h93v-520z" />
+<glyph unicode="о" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5z" />
+<glyph unicode="п" horiz-adv-x="582" d="M500 0h-93v442h-232v-442h-93v520h418v-520z" />
+<glyph unicode="р" horiz-adv-x="593" d="M443 259q0 91 -45 140t-120 49q-42 0 -65.5 -3t-37.5 -7v-328q17 -14 49 -27t70 -13q40 0 68.5 14.5t46.5 40t26 60t8 74.5zM540 259q0 -59 -15.5 -109t-45.5 -86t-73.5 -56t-99.5 -20q-45 0 -79.5 12t-51.5 23v-208h-93v689q33 8 82.5 17.5t114.5 9.5q60 0 108 -19 t82 -54t52.5 -85.5t18.5 -113.5z" />
+<glyph unicode="с" horiz-adv-x="469" d="M308 -12q-63 0 -110.5 20t-80 56t-48.5 85.5t-16 109.5t17.5 110t49.5 86.5t78.5 57t103.5 20.5q35 0 70 -6t67 -19l-21 -79q-21 10 -48.5 16t-58.5 6q-78 0 -119.5 -49t-41.5 -143q0 -42 9.5 -77t30 -60t52.5 -38.5t78 -13.5q37 0 67 7t47 15l13 -78q-8 -5 -23 -9.5 t-34 -8t-40.5 -6t-41.5 -2.5z" />
+<glyph unicode="т" horiz-adv-x="467" d="M449 520v-78h-169v-442h-93v442h-169v78h431z" />
+<glyph unicode="у" horiz-adv-x="501" d="M21 -97q11 -5 28.5 -9.5t34.5 -4.5q55 0 86 24.5t56 79.5q-63 120 -117.5 254.5t-90.5 272.5h100q11 -45 26.5 -97t34.5 -107t41 -110t46 -106q38 105 66 208t53 212h96q-36 -147 -80 -282.5t-95 -253.5q-20 -45 -41.5 -77.5t-47.5 -53.5t-58.5 -31t-73.5 -10 q-11 0 -23 1.5t-23.5 4t-21 5.5t-13.5 5z" />
+<glyph unicode="ф" horiz-adv-x="770" d="M147 260q0 -44 14.5 -78t40.5 -57.5t61.5 -36t76.5 -13.5v370q-41 -1 -76.5 -13.5t-61.5 -36.5t-40.5 -58t-14.5 -77zM430 75q41 1 76.5 13.5t61.5 36t40.5 57.5t14.5 78q0 43 -14.5 77t-40.5 58t-61.5 36.5t-76.5 13.5v-370zM430 -185h-90v182q-58 1 -110.5 19t-92 51.5 t-62.5 82t-23 110.5t23 110.5t62.5 82t92 51.5t110.5 19v237l90 16v-253q58 -1 110.5 -19t92 -51.5t62.5 -82t23 -110.5t-23 -110.5t-62.5 -82t-92 -51.5t-110.5 -19v-182z" />
+<glyph unicode="х" horiz-adv-x="515" d="M393 0q-11 22 -27 49t-35 55l-39 57l-39 53l-39 -54l-38 -56l-35 -56q-16 -27 -27 -48h-96q35 68 84 138l96 135l-172 247h105l124 -182l125 182h99l-168 -241l99 -137q50 -73 85 -142h-102z" />
+<glyph unicode="ц" horiz-adv-x="590" d="M497 77h70v-222h-88v145h-397v520h93v-443h229v443h93v-443z" />
+<glyph unicode="ч" horiz-adv-x="537" d="M141 520v-153q0 -59 30 -82.5t82 -23.5q38 0 63.5 4t45.5 9v246h93v-520h-93v202q-8 -2 -21 -5t-29.5 -5.5t-34.5 -4.5t-35 -2q-43 0 -78.5 9t-61 30t-40 55.5t-14.5 86.5v154h93z" />
+<glyph unicode="ш" horiz-adv-x="827" d="M82 0v520h93v-443h192v443h93v-443h192v443h93v-520h-663z" />
+<glyph unicode="щ" horiz-adv-x="838" d="M82 0v520h93v-443h192v443h93v-443h192v443h93v-443h70v-222h-88v145h-645z" />
+<glyph unicode="ъ" horiz-adv-x="602" d="M152 442h-134v78h227v-199q8 2 21.5 4t29 4t32.5 3t32 1q43 0 81 -9.5t66.5 -30t45.5 -53t17 -77.5q0 -47 -16 -80t-46 -54t-71.5 -30.5t-92.5 -9.5q-50 0 -98 5.5t-94 16.5v431zM349 65q59 0 93 23t34 74q0 25 -10 43t-27.5 29.5t-40.5 17t-49 5.5q-27 0 -55.5 -1.5 t-48.5 -6.5v-179q6 -1 18 -2t27 -2h30q15 -1 29 -1z" />
+<glyph unicode="ы" horiz-adv-x="762" d="M273 257q-27 0 -52.5 -1.5t-45.5 -6.5v-179q6 -1 17.5 -2t25.5 -2h27q14 -1 25 -1q61 0 94 23t33 74q0 25 -10.5 43t-28 29.5t-39.5 17t-46 5.5zM82 520h93v-199q17 4 49.5 8t62.5 4q41 0 78 -9.5t65 -30t44.5 -53t16.5 -77.5q0 -47 -16 -80t-45 -54t-70 -30.5t-90 -9.5 q-47 0 -95 5.5t-93 16.5v509zM680 0h-93v520h93v-520z" />
+<glyph unicode="ь" horiz-adv-x="532" d="M279 65q59 0 93 23t34 74q0 25 -10 43t-27.5 29.5t-40.5 17t-49 5.5q-27 0 -55.5 -1.5t-48.5 -6.5v-179q6 -1 18 -2t27 -2h30q15 -1 29 -1zM82 11v509h93v-199q8 2 21.5 4t29 4t32.5 3t32 1q43 0 81 -9.5t66.5 -30t45.5 -53t17 -77.5q0 -47 -16 -80t-46 -54t-71.5 -30.5 t-92.5 -9.5q-50 0 -98 5.5t-94 16.5z" />
+<glyph unicode="э" horiz-adv-x="502" d="M449 262q0 -60 -15.5 -110t-47.5 -86.5t-80 -57t-112 -20.5q-56 0 -99 9t-59 18l13 79q9 -5 24 -9t33.5 -7.5t38.5 -5.5t40 -2q81 0 121.5 42.5t46.5 117.5h-212v75h210q-9 67 -47.5 106.5t-113.5 39.5q-41 0 -72 -6.5t-48 -14.5l-20 75q10 5 26.5 10t36 9t40.5 6.5 t41 2.5q63 0 110.5 -21t79.5 -58t48.5 -86t16.5 -106z" />
+<glyph unicode="ю" horiz-adv-x="815" d="M175 305h114q6 52 26.5 94t51.5 72t71 46t86 16q51 0 94.5 -19.5t75.5 -55.5t50 -86.5t18 -111.5q0 -62 -18 -112t-50 -86t-75.5 -55.5t-94.5 -19.5q-48 0 -89.5 17.5t-72.5 49t-50.5 76.5t-23.5 100h-113v-230h-93v520h93v-215zM666 260q0 88 -38.5 139.5t-103.5 51.5 t-103.5 -51.5t-38.5 -139.5t38.5 -139.5t103.5 -51.5t103.5 51.5t38.5 139.5z" />
+<glyph unicode="я" horiz-adv-x="552" d="M297 202q-15 0 -29 0.5t-27 1.5q-32 -48 -61.5 -102.5t-52.5 -101.5h-94q12 29 28 60l33 59q16 29 33 55l32 47q-28 10 -46 24.5t-29 32.5t-15.5 38.5t-4.5 41.5q0 44 16.5 77t45.5 54.5t68.5 32.5t86.5 11q66 0 112 -6t77 -14v-513h-92v202h-81zM378 451q-11 2 -36.5 4 t-58.5 2q-57 0 -92 -23.5t-35 -74.5q0 -50 36 -69t93 -19h93v180z" />
+<glyph unicode="ѐ" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5 t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258zM207 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ё" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5 t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258zM193 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM383 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5 t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ђ" horiz-adv-x="575" d="M82 0v614h-74v69h74v77l93 16v-93h177v-69h-177v-107q26 10 55.5 15.5t58.5 5.5q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-289q0 -46 -6.5 -81t-23 -58.5t-45.5 -35.5t-74 -12q-14 0 -32.5 2.5t-29.5 5.5l9 73q8 -3 21.5 -4t21.5 -1q37 0 51.5 24.5t14.5 69.5v286 q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -2t-30.5 -4.5t-26 -5.5t-16.5 -5v-429h-93z" />
+<glyph unicode="ѓ" horiz-adv-x="422" d="M404 442h-229v-442h-93v520h322v-78zM405 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="є" horiz-adv-x="502" d="M53 262q0 57 16.5 106t48.5 86t79.5 58t110.5 21q19 0 40.5 -2.5t41 -6.5t36 -9t26.5 -10l-20 -75q-17 8 -48 14.5t-72 6.5q-75 0 -113.5 -39.5t-47.5 -106.5h210v-75h-212q6 -75 46.5 -117.5t121.5 -42.5q19 0 39.5 2t39 5.5t33.5 7.5t24 9l13 -79q-16 -9 -59 -18 t-99 -9q-65 0 -112.5 20.5t-79.5 57t-47.5 86.5t-15.5 110z" />
+<glyph unicode="ѕ" horiz-adv-x="450" d="M203 67q57 0 84.5 15t27.5 48q0 34 -27 54t-89 45q-30 12 -57.5 24.5t-47.5 29.5t-32 41t-12 59q0 69 51 109.5t139 40.5q22 0 44 -2.5t41 -6t33.5 -7.5t22.5 -7l-17 -80q-15 8 -47 16.5t-77 8.5q-39 0 -68 -15.5t-29 -48.5q0 -17 6.5 -30t20 -23.5t33.5 -19.5t48 -19 q37 -14 66 -27.5t49.5 -31.5t31.5 -43.5t11 -62.5q0 -72 -53.5 -109t-152.5 -37q-69 0 -108 11.5t-53 17.5l17 80q16 -6 51 -18t93 -12z" />
+<glyph unicode="і" horiz-adv-x="257" d="M175 0h-93v520h93v-520zM128 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="ї" horiz-adv-x="257" d="M175 0h-93v520h93v-520zM34 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM224 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ј" horiz-adv-x="257" d="M-3 -187q-12 0 -31 3t-32 8l12 76q10 -3 23 -5t24 -2q48 0 68.5 29.5t20.5 86.5v511h93v-510q0 -100 -45.5 -148.5t-132.5 -48.5zM128 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="љ" horiz-adv-x="867" d="M617 257q-27 0 -52.5 -1.5t-45.5 -6.5v-179q6 -1 17.5 -2t25.5 -2h27q14 -1 25 -1q61 0 94 23t33 74q0 25 -10.5 43t-28 29.5t-39.5 17t-46 5.5zM519 321q17 4 49.5 8t62.5 4q41 0 78 -9.5t65 -30t44.5 -53t16.5 -77.5q0 -47 -16 -80t-45 -54t-70 -30.5t-90 -9.5 q-47 0 -94.5 5.5t-92.5 16.5v431h-164q0 -33 -1.5 -70.5t-5.5 -75t-11 -74t-18 -68.5t-27.5 -60t-40.5 -49.5t-56 -36t-75 -18.5l-13 78q49 10 77.5 37t45.5 66q15 34 22 77t10 89.5t3.5 93.5t0.5 89h345v-199z" />
+<glyph unicode="њ" horiz-adv-x="855" d="M619 333q41 0 78 -9.5t65 -30t44.5 -53t16.5 -77.5q0 -47 -16 -80t-45 -54t-70 -30.5t-90 -9.5q-47 0 -94.5 5.5t-92.5 16.5v221h-240v-232h-93v520h93v-210h240v210h92v-199q17 4 49.5 8t62.5 4zM605 257q-27 0 -52.5 -1.5t-45.5 -6.5v-179q6 -1 17.5 -2t25.5 -2h27 q14 -1 25 -1q61 0 94 23t33 74q0 25 -10.5 43t-28 29.5t-39.5 17t-46 5.5z" />
+<glyph unicode="ћ" horiz-adv-x="575" d="M82 0v614h-74v69h74v77l93 16v-93h177v-69h-177v-108q26 10 55.5 15.5t58.5 5.5q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-288h-93v268q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -2t-30.5 -4.5t-26 -5.5t-16.5 -5v-428h-93z" />
+<glyph unicode="ќ" horiz-adv-x="541" d="M272 283q31 -22 67 -55.5t70.5 -72.5t64.5 -79.5t51 -75.5h-110q-22 34 -51.5 69.5t-61.5 68.5t-65 61t-62 47v-246h-93v520h93v-223l55 53l62 62l59 60l44 48h108l-51 -54l-62 -63l-62 -63zM422 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="ѝ" horiz-adv-x="601" d="M519 520v-520h-90v396q-30 -38 -66 -89l-72 -105l-69 -108l-57 -94h-83v520h90v-374l59 94l69 102l70 98q36 46 67 80h82zM222 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ў" horiz-adv-x="501" d="M21 -97q11 -5 28.5 -9.5t34.5 -4.5q55 0 86 24.5t56 79.5q-63 120 -117.5 254.5t-90.5 272.5h100q11 -45 26.5 -97t34.5 -107t41 -110t46 -106q38 105 66 208t53 212h96q-36 -147 -80 -282.5t-95 -253.5q-20 -45 -41.5 -77.5t-47.5 -53.5t-58.5 -31t-73.5 -10 q-11 0 -23 1.5t-23.5 4t-21 5.5t-13.5 5zM264 604q-63 0 -102.5 32t-47.5 89l71 19q8 -32 27 -52t52 -20t52 20t27 52l70 -19q-8 -57 -47 -89t-102 -32z" />
+<glyph unicode="џ" horiz-adv-x="579" d="M497 0h-163v-145h-88v145h-164v520h93v-443h229v443h93v-520z" />
+<glyph unicode="Ѣ" horiz-adv-x="730" d="M500 578h-205v-144h86q73 0 130.5 -12t97.5 -38.5t61 -68t21 -101.5q0 -110 -80 -165.5t-226 -55.5q-21 0 -45.5 1t-49 3t-48.5 5t-44 8v568h-180v80h180v80h97v-80h205v-80zM393 78q39 0 74.5 6t62.5 21.5t43 41.5t16 66q0 42 -14.5 69t-41.5 43t-66.5 22.5t-89.5 6.5 h-82v-273q11 -1 26 -2q13 -1 31 -1h41z" />
+<glyph unicode="ѣ" horiz-adv-x="602" d="M18 520h134v240l93 16v-256h177v-76h-177v-123q8 2 21.5 4t29 4t32.5 3t32 1q43 0 81 -9.5t66.5 -30t45.5 -53t17 -77.5q0 -47 -16 -80t-46 -54t-71.5 -30.5t-92.5 -9.5q-50 0 -98 5.5t-94 16.5v433h-134v76zM349 65q59 0 93 23t34 74q0 25 -10 43t-27.5 29.5t-40.5 17 t-49 5.5q-27 0 -55.5 -1.5t-48.5 -6.5v-179q6 -1 18 -2t27 -2h30q15 -1 29 -1z" />
+<glyph unicode="Ѳ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM530 342q26 0 48.5 9t39.5 23q-3 57 -20.5 103.5t-46.5 79 t-69.5 50t-90.5 17.5q-51 0 -92 -18t-70.5 -51.5t-46.5 -81.5t-20 -107q20 20 50 34t75 14q36 0 66 -11.5t58.5 -25t57 -24.5t61.5 -11zM522 266q-36 0 -66 11t-58.5 24.5t-57 25t-61.5 11.5q-38 0 -68 -18.5t-44 -40.5q16 -98 74 -153.5t150 -55.5q94 0 152 59.5t72 161.5 q-18 -12 -41 -18.5t-52 -6.5z" />
+<glyph unicode="ѳ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM376 207q-23 0 -42 7.5t-37 17t-35.5 17t-38.5 7.5q-24 0 -43 -12.5t-28 -27.5 q9 -69 47 -108.5t98 -39.5q62 0 100.5 43t45.5 118q-12 -10 -28.5 -16t-38.5 -6zM380 273q20 0 35.5 8.5t26.5 20.5q-9 70 -47 110t-98 40q-63 0 -101 -43t-46 -118q13 13 31.5 22t45.5 9q23 0 42 -7.5t37 -17t35.5 -17t38.5 -7.5z" />
+<glyph unicode="Ѵ" horiz-adv-x="757" d="M659 703q33 0 61.5 -12.5t48.5 -30.5l-43 -70q-16 14 -32 20.5t-29 6.5q-28 0 -44 -19t-35 -67l-210 -531h-91l-67 152l-66 160l-68 178q-35 93 -72 203h107l106 -304q52 -146 107 -274l167 446q12 32 24.5 58t30.5 45t43 29t62 10z" />
+<glyph unicode="ѵ" horiz-adv-x="568" d="M295 0h-84q-49 106 -101.5 240t-91.5 280h100q12 -49 28.5 -104.5t35.5 -109.5l37 -106q19 -51 36 -91l102 307q9 27 19.5 48.5t26 37t36.5 23.5t51 8q20 0 40.5 -4t41.5 -11l-16 -72q-18 9 -51 9q-28 0 -41 -16t-24 -45z" />
+<glyph unicode="Ҋ" horiz-adv-x="749" d="M88 0v693h95v-513q32 53 79 121l98 139l106 136q54 67 101 117h77v-610h92v-7q0 -32 -8 -65q-9 -37 -25.5 -73t-39 -68.5t-48.5 -58.5l-67 42q10 10 22.5 26t24.5 35.5t22 41.5t16 44h-84v541q-28 -32 -61 -74l-68 -89l-70 -99l-69 -101l-61 -95l-51 -83h-81zM367 760 q-62 0 -102 32t-48 89l71 19q8 -32 27 -52t52 -20t52 20t27 52l70 -19q-8 -57 -47.5 -89t-101.5 -32z" />
+<glyph unicode="ҋ" horiz-adv-x="612" d="M519 520v-443h88v-8q0 -31 -7 -61q-7 -35 -21.5 -66.5t-34 -59t-42.5 -48.5l-64 40q6 6 16.5 19.5t21.5 30.5t20.5 36.5t14.5 39.5h-82v396q-30 -38 -66 -89l-72 -105l-69 -108l-57 -94h-83v520h90v-374l59 94l69 102l70 98q36 46 67 80h82zM301 604q-62 0 -102 32 t-48 89l71 19q8 -32 27 -52t52 -20t52 20t27 52l70 -19q-8 -57 -47.5 -89t-101.5 -32z" />
+<glyph unicode="Ҍ" horiz-adv-x="633" d="M328 543h-130v-102q20 2 40.5 2.5t40.5 0.5q315 0 315 -227q0 -112 -81.5 -168t-227.5 -56q-42 0 -92.5 3.5t-91.5 13.5v533h-80v73h80v77h97v-77h130v-73zM492 217q0 42 -16 70t-44.5 44t-68 22.5t-87.5 6.5h-38q-20 0 -40 -2v-277q11 -1 25 -2q12 -1 29 -1h41 q39 0 75 6t63.5 22t44 42.5t16.5 68.5z" />
+<glyph unicode="ҍ" horiz-adv-x="528" d="M16 477h74v69h92v-69h152v-65h-152v-97q17 4 49.5 7t62.5 3q41 0 78.5 -9t66 -28.5t45.5 -51t17 -76.5q0 -47 -16.5 -79.5t-46 -52.5t-71 -29.5t-90.5 -9.5q-47 0 -94.5 5.5t-92.5 16.5v401h-74v65zM280 251q-27 0 -52.5 -1t-45.5 -6v-174q6 -1 17.5 -2t24.5 -2h28 q14 -1 25 -1q61 0 95.5 21.5t34.5 72.5q0 25 -11 42.5t-28.5 28.5t-40.5 16t-47 5z" />
+<glyph unicode="Ҏ" horiz-adv-x="612" d="M272 700q146 0 224.5 -55.5t78.5 -165.5q0 -78 -35 -125.5t-100 -71.5l64 -111l-64 -37l-75 130q-24 -4 -49.5 -5.5t-53.5 -1.5h-77v-257h-97v683q41 10 91.5 13.5t92.5 3.5zM280 615q-62 0 -95 -3v-272h73h32q16 0 30 2l-46 80l63 38l58 -101q38 14 58 43t20 78 q0 40 -15.5 66t-42 41.5t-61.5 21.5t-74 6z" />
+<glyph unicode="ҏ" horiz-adv-x="593" d="M443 259q0 91 -45 140t-120 49q-42 0 -65.5 -3t-37.5 -7v-328q17 -14 49 -27t70 -13q19 0 36 3l-59 103l61 37l61 -107q26 26 38 65.5t12 87.5zM540 259q0 -77 -26 -137t-75 -95l54 -92l-62 -36l-57 98q-32 -9 -68 -9q-45 0 -79.5 12t-51.5 23v-208h-93v689 q33 8 82.5 17.5t114.5 9.5q60 0 108 -19t82 -54t52.5 -85.5t18.5 -113.5z" />
+<glyph unicode="Ґ" horiz-adv-x="513" d="M407 693v132h88v-216h-310v-609h-97v693h319z" />
+<glyph unicode="ґ" horiz-adv-x="432" d="M330 520v130h84v-208h-239v-442h-93v520h248z" />
+<glyph unicode="Ғ" horiz-adv-x="526" d="M508 693v-84h-310v-216h155v-75h-155v-318h-97v318h-80v75h80v300h407z" />
+<glyph unicode="ғ" horiz-adv-x="430" d="M412 442h-229v-167h146v-70h-146v-205h-93v205h-74v70h74v245h322v-78z" />
+<glyph unicode="Ҕ" horiz-adv-x="628" d="M588 127q0 -65 -18 -121.5t-52.5 -99t-84 -67t-113.5 -24.5q-14 0 -29.5 0.5t-27.5 2.5l3 79q6 -1 14.5 -1.5t22.5 -0.5q40 0 74 15.5t58.5 45t38.5 72.5t14 99q0 114 -51.5 170t-132.5 56q-35 0 -70 -6t-49 -10v-337h-97v693h413v-83h-316v-193q9 3 23.5 6t32.5 6t37 5 t36 2q68 0 119.5 -22t86 -62t51.5 -97.5t17 -127.5z" />
+<glyph unicode="ҕ" horiz-adv-x="548" d="M290 320q115 0 167.5 -65.5t52.5 -185.5q0 -54 -13.5 -100.5t-40.5 -81t-67 -54t-92 -19.5q-11 0 -23.5 0.5t-21.5 2.5l5 74q10 -2 27 -2q63 0 97.5 43.5t34.5 136.5q0 95 -34.5 135t-109.5 40q-22 0 -49 -3.5t-48 -8.5v-232h-93v520h354v-77h-261v-139q8 3 21.5 5.5 t29 5t32.5 4t32 1.5z" />
+<glyph unicode="Җ" horiz-adv-x="925" d="M868 693l-62 -75l-72 -86l-72 -85l-64 -78q62 -58 123.5 -133t112.5 -153h83v-268h-92v185h-51q-27 46 -61 92.5t-70 90t-72.5 81.5t-69.5 67v-331h-93v331q-33 -29 -70 -67t-73 -81.5t-69.5 -90t-60.5 -92.5h-109q25 48 58.5 97.5t70.5 97.5t77 92.5t79 80.5l-63 78 l-73 86l-73 85l-62 76h113l53 -65l66 -80l70 -84l66 -80v309h93v-309l66 80l69 84l66 80l54 65h112z" />
+<glyph unicode="җ" horiz-adv-x="779" d="M723 520l-45 -54l-52 -62l-54 -62l-53 -59q45 -43 92.5 -96.5t88.5 -109.5h71v-222h-88v145h-36q-21 33 -48.5 69.5t-57 70.5t-59 63.5t-54.5 48.5v-252h-89v252q-25 -19 -54.5 -48.5t-59 -63.5t-57 -70.5t-48.5 -69.5h-103q21 36 48.5 74t58 74.5t62.5 70.5l62 63 l-52 59l-55 63l-52 60l-46 56h103l83 -100l110 -127v227h89v-227l110 127l83 100h102z" />
+<glyph unicode="Ҙ" horiz-adv-x="576" d="M147 405h52q33 0 67 5t62 18.5t46 36.5t18 58q0 45 -38.5 73.5t-102.5 28.5q-55 0 -99 -12.5t-65 -25.5l-31 79q12 8 32.5 15.5t46 13.5t55.5 9.5t62 3.5q52 0 96 -11t76 -33.5t50 -57t18 -81.5q0 -48 -30.5 -90t-89.5 -61q30 -8 57.5 -22.5t48 -37t33 -52.5t12.5 -70 q0 -48 -15.5 -84t-44 -61t-69 -39.5t-89.5 -19.5q-4 -7 -7 -13.5t-5 -11.5q29 -14 42 -30.5t13 -48.5q0 -11 -5 -24t-17 -24t-32 -18t-49 -7q-26 0 -47.5 4t-34.5 9l11 57q12 -4 25.5 -7t30.5 -3q36 0 36 23q0 11 -11 18.5t-31 15.5l-7 3q4 11 10 25.5t13 28.5 q-38 0 -71.5 5.5t-60.5 13.5t-46.5 16.5t-30.5 14.5l29 80q11 -6 29.5 -14t41.5 -15t51 -12t59 -5q85 0 132.5 28.5t47.5 96.5q0 40 -16.5 65.5t-45 40.5t-67 20.5t-83.5 5.5h-62v79z" />
+<glyph unicode="ҙ" horiz-adv-x="493" d="M214 533q45 0 84 -9t67 -27t44 -45t16 -63q0 -23 -8 -42t-20 -34t-26.5 -25.5t-27.5 -14.5q46 -14 72.5 -49.5t26.5 -89.5q0 -64 -45.5 -99.5t-126.5 -43.5l-8 -15q-3 -7 -5 -13q29 -14 42 -30.5t13 -48.5q0 -11 -5 -24t-17 -24t-32 -18t-49 -7q-26 0 -47.5 4t-34.5 9 l11 57q12 -4 25.5 -7t30.5 -3q36 0 36 23q0 11 -11 18.5t-31 15.5l-7 3q4 12 10.5 27.5t13.5 29.5q-57 2 -99.5 11t-59.5 18l16 79q16 -6 57.5 -16.5t99.5 -10.5q63 0 96 19.5t33 58.5q0 28 -12.5 45.5t-31.5 26.5t-41 12t-41 3h-87v74h84q18 0 37.5 2.5t36 10.5t27.5 22.5 t11 38.5q0 19 -9.5 32.5t-25.5 22.5t-37.5 13.5t-44.5 4.5q-18 0 -39 -3t-41 -7.5t-36 -9.5t-23 -9l-17 80q8 3 25 8t38.5 9t45.5 7t47 3z" />
+<glyph unicode="Қ" horiz-adv-x="660" d="M511 0q-30 47 -69 94.5t-82.5 91t-88 80.5t-86.5 63v-329h-97v693h97v-306l77 75l83 83l77 81q37 38 62 67h117l-70 -75l-81 -86l-85 -85l-79 -78q34 -24 71 -56.5t74.5 -70t73 -78.5t65.5 -81h82v-268h-92v185h-49z" />
+<glyph unicode="қ" horiz-adv-x="550" d="M175 297l55 53l62 62l59 60l44 48h108l-51 -54l-62 -63l-62 -63l-56 -57q23 -16 49 -39.5t52.5 -50.5t52 -57t47.5 -59h69v-222h-88v145h-37q-22 34 -51.5 69.5t-62 68.5t-65.5 61t-63 47v-246h-93v520h93v-223z" />
+<glyph unicode="Ҝ" horiz-adv-x="711" d="M321 403l64 76l65 79l60 74l48 61h112l-62 -76l-70 -85l-73 -86l-66 -77q40 -36 80 -80.5t77.5 -92.5t70.5 -98t59 -98h-109q-26 45 -57.5 89.5t-65.5 85.5t-68 77.5t-65 64.5v-148h-72v151h-64v-320h-97v693h97v-298h64v152h72v-144z" />
+<glyph unicode="ҝ" horiz-adv-x="623" d="M304 419v-108q57 65 98 116l75 93h102l-45 -54l-52 -62l-54 -62l-53 -59l62 -63q32 -34 62.5 -70.5t58.5 -75t49 -74.5h-104l-45 64q-24 34 -50 66t-53 61t-51 50v-115h-68v114h-61v-240h-93v520h93v-216h61v115h68z" />
+<glyph unicode="Ҟ" horiz-adv-x="645" d="M613 693l-70 -75l-81 -86l-85 -85l-79 -78q43 -30 91 -74t94 -94t86.5 -102t67.5 -99h-114q-30 47 -69 94.5t-82.5 91t-88 80.5t-86.5 63v-329h-96v546h-80v70h80v77h96v-77h97v-70h-97v-159l77 75l83 83l77 81q37 38 62 67h117z" />
+<glyph unicode="ҟ" horiz-adv-x="560" d="M291 283q31 -22 67 -55.5t70.5 -72.5t64.5 -79.5t51 -75.5h-108q-22 34 -51.5 70t-63 69.5t-69 63t-69.5 51.5v-254h-93v413h-74v64h74v69h93v-69h78v-64h-78v-127l63 60l65 65l59 61l44 48h108l-52 -54l-60 -63l-63 -63z" />
+<glyph unicode="Ҡ" horiz-adv-x="743" d="M711 693l-70 -75l-81 -86l-85 -85l-79 -78q43 -30 91 -74t94 -94t86.5 -102t67.5 -99h-114q-30 47 -69 94.5t-82.5 91t-88 80.5t-86.5 63v-329h-97v610h-180v83h277v-306l77 75l83 83l77 81q37 38 62 67h117z" />
+<glyph unicode="ҡ" horiz-adv-x="611" d="M342 283q31 -22 67 -55.5t70.5 -72.5t64.5 -79.5t51 -75.5h-108q-22 34 -51.5 69.5t-62 68.5t-65.5 61t-63 47v-246h-93v442h-134v78h227v-223l55 53l62 62l59 60l44 48h108l-51 -54l-62 -63l-62 -63z" />
+<glyph unicode="Ң" horiz-adv-x="728" d="M524 693h97v-610h87v-268h-92v185h-92v320h-339v-320h-97v693h97v-289h339v289z" />
+<glyph unicode="ң" horiz-adv-x="601" d="M508 77h70v-222h-88v145h-75v230h-240v-230h-93v520h93v-212h240v212h93v-443z" />
+<glyph unicode="Ҥ" horiz-adv-x="819" d="M524 693h277v-84h-180v-609h-97v320h-339v-320h-97v693h97v-289h339v289z" />
+<glyph unicode="ҥ" horiz-adv-x="660" d="M508 0h-93v230h-240v-230h-93v520h93v-212h240v212h227v-78h-134v-442z" />
+<glyph unicode="Ҧ" horiz-adv-x="1036" d="M595 0h-97v610h-313v-610h-97v693h507v-276q9 3 23.5 6t32.5 6t37 5t36 2q68 0 119.5 -22t86 -62t51.5 -97.5t17 -127.5q0 -65 -18 -121.5t-52.5 -99t-84 -67t-113.5 -24.5q-14 0 -29.5 0.5t-27.5 2.5l3 79q6 -1 14.5 -1.5t22.5 -0.5q40 0 74 15.5t58.5 45t38.5 72.5 t14 99q0 114 -51.5 170t-132.5 56q-35 0 -70 -6t-49 -10v-337z" />
+<glyph unicode="ҧ" horiz-adv-x="864" d="M500 305q17 5 50 10t62 5q115 0 167.5 -65.5t52.5 -185.5q0 -54 -13.5 -100.5t-40.5 -81t-67 -54t-92 -19.5q-11 0 -23.5 0.5t-21.5 2.5l5 74q10 -2 27 -2q63 0 97.5 43.5t34.5 136.5q0 95 -34.5 135t-109.5 40q-21 0 -47 -3.5t-47 -8.5v-232h-93v442h-232v-442h-93v520 h418v-215z" />
+<glyph unicode="Ҩ" horiz-adv-x="790" d="M545 601q-28 10 -61.5 16.5t-67.5 6.5q-57 0 -104 -18t-80.5 -53t-52 -86.5t-18.5 -119.5q0 -112 49.5 -182t137.5 -90q-12 38 -18.5 83t-6.5 97q0 55 10.5 104t35 86t64 58.5t97.5 21.5q54 0 92.5 -20t62.5 -54t35.5 -79t11.5 -94q0 -50 -17 -96.5t-49.5 -84.5t-78 -65 t-102.5 -38q18 -30 47 -48.5t61 -30t61.5 -16t47.5 -5.5l-12 -78q-39 1 -82.5 10.5t-84.5 30t-76.5 52.5t-58.5 78q-69 3 -129 28t-104 70t-69.5 110.5t-25.5 151.5q0 87 27.5 154.5t74.5 113.5t110 70t134 24q47 0 92 -8.5t71 -19.5zM635 280q0 33 -5 62t-17 51t-32 34.5 t-50 12.5q-57 0 -84 -46.5t-27 -146.5q0 -57 6.5 -100t19.5 -78q42 5 77 22.5t60 45t38.5 64t13.5 79.5z" />
+<glyph unicode="ҩ" horiz-adv-x="613" d="M334 185q0 -38 5 -69t12 -55q58 8 93 51t35 103q0 45 -14.5 76t-54.5 31q-39 0 -57.5 -31t-18.5 -106zM376 448q-8 3 -27 7t-39 4q-34 0 -64.5 -12t-53 -36.5t-36 -61t-13.5 -85.5q0 -80 31.5 -130.5t91.5 -66.5q-8 27 -12.5 58t-4.5 67q0 43 9 80t28 64t49.5 42.5 t73.5 15.5q40 0 69.5 -14t48.5 -38.5t28.5 -57t9.5 -69.5q0 -39 -12 -74.5t-35 -64.5t-56 -50t-75 -31q14 -21 35.5 -34t44 -21t43.5 -11.5t34 -4.5l-12 -68q-30 1 -63.5 8.5t-65.5 23.5t-60 41t-47 60q-53 3 -97.5 22.5t-77 54t-50.5 84t-18 114.5q0 66 20.5 116t55 83.5 t80 51t95.5 17.5q29 0 55 -4.5t34 -7.5z" />
+<glyph unicode="Ҫ" horiz-adv-x="624" d="M332 -11q-62 8 -112 35.5t-85.5 73t-55 108t-19.5 141.5q0 87 26.5 154.5t71.5 113.5t105 70t128 24q43 0 77.5 -6t60 -14t41.5 -16t22 -12l-28 -80q-9 6 -26 13t-38.5 14t-47 11.5t-51.5 4.5q-55 0 -99 -19t-75 -55t-47.5 -87.5t-16.5 -115.5q0 -62 14.5 -113 t43.5 -87.5t72.5 -56.5t101.5 -20q67 0 111 14t66 25l25 -80q-14 -11 -67.5 -26.5t-135.5 -17.5q-3 -6 -5.5 -11.5t-4.5 -10.5q29 -14 42 -30.5t13 -48.5q0 -11 -5 -24t-17 -24t-32 -18t-49 -7q-26 0 -47.5 4t-34.5 9l11 57q12 -4 25.5 -7t30.5 -3q36 0 36 23q0 11 -11 18.5 t-31 15.5l-7 3q4 12 10.5 28t13.5 30z" />
+<glyph unicode="ҫ" horiz-adv-x="469" d="M320 -12l-11 -25q29 -14 42 -30.5t13 -48.5q0 -11 -5 -24t-17 -24t-32 -18t-49 -7q-26 0 -47.5 4t-34.5 9l11 57q12 -4 25.5 -7t30.5 -3q36 0 36 23q0 11 -11 18.5t-31 15.5l-7 3q4 12 11 29t15 32q-51 7 -89.5 29.5t-64.5 57.5t-39 80.5t-13 99.5q0 60 17.5 110 t49.5 86.5t78.5 57t103.5 20.5q35 0 70 -6t67 -19l-21 -79q-21 10 -48.5 16t-58.5 6q-78 0 -119.5 -49t-41.5 -143q0 -42 9.5 -77t30 -60t52.5 -38.5t78 -13.5q37 0 67 7t47 15l13 -78q-8 -4 -21.5 -8.5t-30.5 -8t-36.5 -6t-38.5 -3.5z" />
+<glyph unicode="Ҭ" horiz-adv-x="569" d="M551 693v-84h-218v-526h89v-268h-92v185h-94v609h-218v84h533z" />
+<glyph unicode="ҭ" horiz-adv-x="467" d="M449 520v-78h-169v-365h70v-222h-88v145h-75v442h-169v78h431z" />
+<glyph unicode="Ү" horiz-adv-x="602" d="M253 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97z" />
+<glyph unicode="ү" horiz-adv-x="506" d="M488 520q-38 -143 -89.5 -273t-99.5 -235v-197h-93v199q-48 105 -99 234.5t-89 271.5h100q12 -49 28.5 -104.5t35.5 -109.5l37 -106q19 -51 36 -91q17 40 36 91l37 106q19 54 35.5 109.5t28.5 104.5h96z" />
+<glyph unicode="Ұ" horiz-adv-x="602" d="M253 0v212h-141v74h136l-127 206q-60 102 -113 201h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-114 -201l-126 -206h137v-74h-141v-212h-97z" />
+<glyph unicode="ұ" horiz-adv-x="506" d="M488 520q-34 -126 -78 -240t-88 -212h114v-68h-137v-185h-93v185h-137v68h115q-44 98 -88.5 211.5t-77.5 240.5h100q12 -49 28.5 -104t35 -109.5t37.5 -105t36 -90.5q17 40 36 90.5t37.5 105t35 109.5t28.5 104h96z" />
+<glyph unicode="Ҳ" horiz-adv-x="657" d="M504 0q-15 30 -36 66.5t-46 75.5l-52 80l-52 74l-52 -74l-52 -80l-46 -76q-21 -36 -36 -66h-107q45 88 105 179l126 187l-222 327h112l171 -258l169 258h111l-218 -323l99 -146q48 -72 89 -141h82v-268h-92v185h-53z" />
+<glyph unicode="ҳ" horiz-adv-x="529" d="M393 0q-11 22 -27 49t-35 55l-39 57l-39 53l-39 -54l-38 -56l-35 -56q-16 -27 -27 -48h-96q35 68 84 138l96 135l-172 247h105l124 -182l125 182h99l-168 -241l71 -99q37 -51 69 -103h70v-222h-88v145h-40z" />
+<glyph unicode="Ҵ" horiz-adv-x="850" d="M743 83h87v-268h-92v185h-522v609h-198v84h488v-84h-193v-526h333v610h97v-610z" />
+<glyph unicode="ҵ" horiz-adv-x="665" d="M572 77h70v-222h-88v145h-397v442h-139v78h366v-78h-134v-365h229v443h93v-443z" />
+<glyph unicode="Ҷ" horiz-adv-x="654" d="M156 493q0 -42 7.5 -73.5t26 -52t50 -30.5t79.5 -10q19 0 38.5 1.5t37.5 3.5t32 5l23 5v351h97v-610h87v-268h-92v185h-92v258q-19 -5 -58.5 -10t-84.5 -5q-76 0 -124 17.5t-75.5 50t-37.5 79t-10 103.5v200h96v-200z" />
+<glyph unicode="ҷ" horiz-adv-x="548" d="M141 520v-153q0 -59 30 -82.5t82 -23.5q38 0 63.5 4t45.5 9v246h93v-443h70v-222h-88v145h-75v202q-8 -2 -21 -5t-29.5 -5.5t-34.5 -4.5t-35 -2q-43 0 -78.5 9t-61 30t-40 55.5t-14.5 86.5v154h93z" />
+<glyph unicode="Ҹ" horiz-adv-x="642" d="M156 493q0 -36 5.5 -64.5t18.5 -48.5t35 -32.5t55 -17.5v123h75v-126q38 2 67.5 6.5t44.5 8.5v351h97v-693h-97v258q-15 -4 -44.5 -8t-67.5 -6v-127h-75v127q-64 4 -105 23.5t-64 51.5t-32 76t-9 98v200h96v-200z" />
+<glyph unicode="ҹ" horiz-adv-x="537" d="M134 520v-153q0 -50 21 -75.5t59 -32.5v95h69v-96q28 2 46.5 5.5t32.5 7.5v249h93v-520h-93v202q-11 -3 -31.5 -7.5t-47.5 -7.5v-94h-69v92q-39 2 -70.5 12.5t-54.5 31.5t-35.5 54.5t-12.5 82.5v154h93z" />
+<glyph unicode="Һ" horiz-adv-x="643" d="M185 444q20 5 60.5 10t85.5 5q77 0 126 -18t77 -51t38.5 -80t10.5 -106v-204h-96v204q0 43 -8 75.5t-27.5 53.5t-51.5 31.5t-81 10.5q-39 0 -77.5 -5t-56.5 -10v-360h-97v693h97v-249z" />
+<glyph unicode="һ" horiz-adv-x="575" d="M82 0v760l93 16v-266q26 10 55.5 15.5t58.5 5.5q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-292h-93v272q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -2t-30.5 -4.5t-26 -5.5t-16.5 -5v-432h-93z" />
+<glyph unicode="Ҽ" horiz-adv-x="839" d="M291 324q9 -129 68.5 -191.5t181.5 -62.5q32 0 58.5 4.5t47.5 11t36.5 13.5t25.5 12l24 -80q-8 -6 -26 -13.5t-44 -15t-60 -12.5t-73 -5q-84 0 -147 25t-105 70t-63.5 107t-24.5 136q-38 3 -69.5 11.5t-54.5 26.5t-36 46.5t-13 69.5q0 14 2 28t4 21l77 -9 q-1 -6 -1.5 -14.5t-0.5 -16.5q0 -38 22 -55.5t73 -22.5q8 75 35 131.5t67.5 94t93 56.5t112.5 19q65 0 117 -22t88 -65.5t55.5 -108.5t19.5 -151q0 -8 -1 -20t-2 -18h-487zM679 403q0 49 -12 90t-34.5 70.5t-56 46t-77.5 16.5q-51 0 -88.5 -20t-62.5 -51.5t-38 -71.5 t-16 -80h385z" />
+<glyph unicode="ҽ" horiz-adv-x="674" d="M164 239q-33 4 -61 14t-47.5 27.5t-30.5 44t-11 64.5q0 14 2 27t4 20l73 -9q-1 -6 -1.5 -13.5t-0.5 -15.5q0 -70 77 -83q8 55 30 96t53.5 68t70 40.5t79.5 13.5q104 0 160.5 -66t56.5 -199q0 -8 -0.5 -13.5t-0.5 -10.5v-9h-356q6 -80 47.5 -122.5t127.5 -42.5 q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-65 0 -113 19t-80.5 52.5t-49 79.5t-19.5 100zM521 310q1 63 -31.5 103.5t-89.5 40.5q-32 0 -56.5 -12.5t-41 -32.5t-26.5 -46t-13 -53h258z" />
+<glyph unicode="Ҿ" horiz-adv-x="839" d="M291 324q9 -129 68.5 -191.5t181.5 -62.5q32 0 58.5 4.5t47.5 11t36.5 13.5t25.5 12l24 -80q-8 -6 -25 -13.5t-42 -14.5t-57 -12t-69 -6v-170h-91v177q-64 11 -111.5 40t-79.5 72.5t-49 99t-19 119.5q-38 3 -69.5 11.5t-54.5 26.5t-36 46.5t-13 69.5q0 14 2 28t4 21 l77 -9q-1 -6 -1.5 -14.5t-0.5 -16.5q0 -38 22 -55.5t73 -22.5q8 75 35 131.5t67.5 94t93 56.5t112.5 19q65 0 117 -22t88 -65.5t55.5 -108.5t19.5 -151q0 -8 -1 -20t-2 -18h-487zM679 403q0 49 -12 90t-34.5 70.5t-56 46t-77.5 16.5q-51 0 -88.5 -20t-62.5 -51.5t-38 -71.5 t-16 -80h385z" />
+<glyph unicode="ҿ" horiz-adv-x="674" d="M164 239q-33 4 -61 14t-47.5 27.5t-30.5 44t-11 64.5q0 14 2 27t4 20l73 -9q-1 -6 -1.5 -13.5t-0.5 -15.5q0 -70 77 -83q8 55 30 96t53.5 68t70 40.5t79.5 13.5q104 0 160.5 -66t56.5 -199q0 -8 -0.5 -13.5t-0.5 -10.5v-9h-356q6 -80 47.5 -122.5t127.5 -42.5 q49 0 82.5 8.5t50.5 16.5l13 -78q-16 -8 -52.5 -17t-84.5 -11v-134h-88v140q-47 9 -82.5 31t-59 53.5t-36.5 72t-15 87.5zM521 310q1 63 -31.5 103.5t-89.5 40.5q-32 0 -56.5 -12.5t-41 -32.5t-26.5 -46t-13 -53h258z" />
+<glyph unicode="Ӏ" horiz-adv-x="273" d="M88 693h97v-693h-97v693z" />
+<glyph unicode="Ӂ" horiz-adv-x="909" d="M312 368l-66 78l-74 86l-70 85l-62 76h113l53 -65l64 -80l70 -84l68 -80v309h93v-309l67 80l70 84l66 80l52 65h112l-62 -76l-70 -85l-73 -86l-66 -77q40 -36 80 -80.5t77.5 -92.5t70.5 -98t59 -98h-110q-27 46 -61 92.5t-70 90t-72.5 81.5t-69.5 67v-331h-93v331 q-33 -29 -70 -67t-73 -81.5t-69.5 -90t-60.5 -92.5h-109q25 48 58 98t70.5 98t78 92t79.5 80zM455 760q-63 0 -102.5 32t-47.5 89l71 19q8 -32 27 -52t52 -20t52 20t27 52l70 -19q-8 -57 -47 -89t-102 -32z" />
+<glyph unicode="ӂ" horiz-adv-x="767" d="M723 520l-45 -54l-52 -62l-54 -62l-53 -59l62 -63q32 -34 62.5 -70.5t58.5 -75t49 -74.5h-104q-21 33 -48.5 69.5t-57 70.5t-59 63.5t-54.5 48.5v-252h-89v252q-25 -19 -54.5 -48.5t-59 -63.5t-57 -70.5t-48.5 -69.5h-103q21 36 48.5 74t58 74.5t62.5 70.5l62 63l-52 59 l-55 63l-52 60l-46 56h103l83 -100l110 -127v227h89v-227l110 127l83 100h102zM384 604q-63 0 -102.5 32t-47.5 89l71 19q8 -32 27 -52t52 -20t52 20t27 52l70 -19q-8 -57 -47 -89t-102 -32z" />
+<glyph unicode="Ӄ" horiz-adv-x="635" d="M185 693v-317l73 77l81 87l76 84l61 69h114l-62 -71l-72 -79l-76 -80l-73 -75q59 -5 110.5 -22t89.5 -50t60 -84.5t22 -124.5q0 -60 -16.5 -113t-49 -93t-81 -63t-112.5 -23q-14 0 -29.5 0.5t-27.5 2.5l3 79q6 -1 14.5 -1.5t22.5 -0.5q79 0 127.5 54.5t48.5 157.5 q0 72 -25 113t-62.5 62t-80 26t-78.5 5q-14 0 -29 -0.5t-29 -1.5v-311h-97v693h97z" />
+<glyph unicode="ӄ" horiz-adv-x="548" d="M175 293l55 53l64 62l60 62l47 50h109q-21 -23 -48 -50l-58 -56l-58 -56l-54 -52q103 -6 162 -71.5t59 -179.5q0 -48 -14 -91.5t-41.5 -77t-68 -53t-92.5 -19.5q-11 0 -23.5 0.5t-21.5 2.5l5 74q10 -2 27 -2q63 0 99.5 42.5t36.5 123.5q0 95 -48.5 139t-139.5 44 q-15 0 -32.5 -1.5t-24.5 -3.5v-233h-93v520h93v-227z" />
+<glyph unicode="Ӆ" horiz-adv-x="728" d="M325 610l-4 -108q-2 -53 -6 -102.5t-12 -96.5t-22 -92t-34.5 -84.5t-51 -69t-72 -47.5t-97.5 -20l-11 84q70 8 108.5 44t63.5 110q28 84 35.5 202.5t7.5 262.5h393v-610h92v-7q0 -32 -8 -65q-9 -37 -25.5 -73t-39 -68.5t-48.5 -58.5l-67 42q10 10 22.5 26t24.5 35.5 t22 41.5t16 44h-86v610h-201z" />
+<glyph unicode="ӆ" horiz-adv-x="613" d="M263 442q0 -33 -1.5 -70.5t-5.5 -75t-11 -74t-18 -68.5t-27.5 -60t-40.5 -49.5t-56 -36t-75 -18.5l-13 78q49 10 77.5 37t45.5 66q15 34 22 77t10 89.5t3.5 93.5t0.5 89h346v-443h88q0 -35 -8.5 -70.5t-23 -68t-33.5 -59.5t-40 -45l-64 40q6 6 16.5 19.5t21.5 30.5 t20.5 36.5t14.5 39.5h-85v442h-164z" />
+<glyph unicode="Ӈ" horiz-adv-x="709" d="M524 693h97v-693q0 -46 -6.5 -81t-23 -58.5t-45.5 -35.5t-74 -12q-14 0 -32.5 2.5t-29.5 5.5l9 73q8 -3 21.5 -4t21.5 -1q37 0 49.5 24.5t12.5 69.5v337h-339v-320h-97v693h97v-289h339v289z" />
+<glyph unicode="ӈ" horiz-adv-x="590" d="M508 0q0 -46 -6.5 -81t-23 -58.5t-45.5 -35.5t-74 -12q-14 0 -32.5 2.5t-29.5 5.5l9 73q8 -3 21.5 -4t21.5 -1q37 0 51.5 24.5t14.5 69.5v247h-240v-230h-93v520h93v-212h240v212h93v-520z" />
+<glyph unicode="Ӊ" horiz-adv-x="726" d="M524 693h97v-610h92v-7q0 -32 -8 -65q-9 -37 -25.5 -73t-39 -68.5t-48.5 -58.5l-67 42q10 10 22.5 26t24.5 35.5t22 41.5t16 44h-86v320h-339v-320h-97v693h97v-289h339v289z" />
+<glyph unicode="ӊ" horiz-adv-x="601" d="M508 77h88v-8q0 -31 -6 -61q-8 -35 -22.5 -66.5t-34 -59t-42.5 -48.5l-64 40q6 6 16.5 19.5t21.5 30.5t20.5 36.5t14.5 39.5h-85v230h-240v-230h-93v520h93v-212h240v212h93v-443z" />
+<glyph unicode="Ӌ" horiz-adv-x="642" d="M163 493q0 -42 7.5 -73.5t26 -52t50 -30.5t79.5 -10q19 0 38.5 1.5t37.5 3.5t32 5l23 5v351h97v-693h-92v-185h-92v268h87v175q-19 -5 -58.5 -10t-84.5 -5q-76 0 -124 17.5t-75.5 50t-37.5 79t-10 103.5v200h96v-200z" />
+<glyph unicode="ӌ" horiz-adv-x="537" d="M141 520v-153q0 -59 30 -82.5t82 -23.5q38 0 63.5 4t45.5 9v246h93v-520h-75v-145h-88v222h70v125q-8 -2 -21 -5t-29.5 -5.5t-34.5 -4.5t-35 -2q-43 0 -78.5 9t-61 30t-40 55.5t-14.5 86.5v154h93z" />
+<glyph unicode="Ӎ" horiz-adv-x="903" d="M399 96l-27 61l-35 80l-41 89l-40 86l-35.5 72t-26.5 49q-11 -118 -18 -255.5t-12 -277.5h-95q4 90 9 181.5t11.5 180t14 172.5t16.5 159h85q27 -44 58 -104l62 -125l60 -132l53 -119l53 119l60 132l62 125q31 60 58 104h85q15 -149 27 -300.5t20 -309.5h92v-7 q0 -32 -8 -65q-9 -37 -25.5 -73t-39 -68.5t-48.5 -58.5l-67 42q10 10 22.5 26t24.5 35.5t22 41.5t16 44h-80q-5 140 -12 277.5t-18 255.5q-10 -17 -26.5 -49l-35.5 -72l-40 -86l-41 -89l-35 -80l-27 -61h-78z" />
+<glyph unicode="ӎ" horiz-adv-x="755" d="M181 383q-10 -99 -15 -197.5t-8 -185.5h-89q2 61 6 127.5t9 134t11 133t13 125.5h85q32 -52 75 -142l99 -209l99 209q43 90 75 142h86q6 -51 11 -106t9.5 -112t8.5 -114t7 -111h88v-8q0 -31 -7 -61q-7 -35 -21.5 -66.5t-34 -59t-42.5 -48.5l-64 40q6 6 16.5 19.5 t21.5 30.5t20.5 36.5t14.5 39.5h-81q-3 87 -8 185.5t-15 197.5l-37 -75l-42 -88l-38 -86l-28 -65h-78l-30 66l-38 87l-42 88q-21 44 -37 73z" />
+<glyph unicode="ӏ" horiz-adv-x="273" d="M88 693h97v-693h-97v693z" />
+<glyph unicode="Ӑ" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM335 760q-63 0 -102.5 32t-47.5 89l71 19q8 -32 27 -52t52 -20t52 20 t27 52l70 -19q-8 -57 -47 -89t-102 -32z" />
+<glyph unicode="ӑ" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM266 604q-63 0 -102.5 32t-47.5 89l71 19q8 -32 27 -52t52 -20t52 20 t27 52l70 -19q-8 -57 -47 -89t-102 -32z" />
+<glyph unicode="Ӓ" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM238 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5 t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM428 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ӓ" horiz-adv-x="526" d="M258 67q33 0 58.5 1.5t42.5 5.5v155q-10 5 -32.5 8.5t-54.5 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -50 32 -69.5t87 -19.5zM250 533q56 0 94.5 -14.5t62 -41t33.5 -63t10 -80.5v-325l-34 -5q-21 -4 -48 -7t-58.5 -5.5t-62.5 -2.5q-44 0 -81 9t-64 28.5 t-42 51.5t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t29 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 60 15.5t91 7.5zM170 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5 t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM360 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ӕ" horiz-adv-x="939" d="M875 612h-301v-209h265v-79h-265v-243h326v-81h-422v178h-273l-47 -88l-46 -90h-104l112 204l106 180l102 162l101 147h446v-81zM478 617q-53 -72 -110 -163l-118 -197h228v360z" />
+<glyph unicode="ӕ" horiz-adv-x="863" d="M615 -12q-57 0 -99.5 13.5t-74.5 39.5q-10 -7 -26.5 -16t-39.5 -17.5t-51.5 -14t-62.5 -5.5q-50 0 -89.5 9t-67.5 29t-43 52t-15 77q0 43 17.5 74t47.5 50t70 28t84 9q14 0 29 -1.5t28 -4.5l23 -4q10 -2 14 -3v26q0 23 -5 45.5t-18 40t-35.5 28t-58.5 10.5 q-46 0 -80.5 -6.5t-51.5 -13.5l-11 77q18 8 59.5 15.5t89.5 7.5q69 0 109.5 -23.5t60.5 -65.5q33 45 78 67t94 22q104 0 160.5 -66t56.5 -199q0 -8 -0.5 -13.5t-0.5 -10.5v-9h-356q6 -80 47.5 -122.5t127.5 -42.5q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19 t-96.5 -10zM263 67q52 0 82 11.5t46 22.5q-15 28 -23.5 60t-9.5 68q-11 5 -32 8.5t-53 3.5q-21 0 -44.5 -3t-43 -12.5t-32.5 -26t-13 -43.5q0 -51 32.5 -70t90.5 -19zM710 310q1 63 -31.5 103.5t-89.5 40.5q-32 0 -56.5 -12.5t-41 -32.5t-26.5 -46t-13 -53h258z" />
+<glyph unicode="Ӗ" horiz-adv-x="575" d="M88 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM291 760q-63 0 -102.5 32t-47.5 89l71 19q8 -32 27 -52t52 -20t52 20t27 52l70 -19q-8 -57 -47 -89t-102 -32z" />
+<glyph unicode="ӗ" horiz-adv-x="563" d="M53 259q0 69 20 120.5t53 85.5t76 51t88 17q105 0 161 -65.5t56 -199.5v-16q0 -9 -1 -17h-356q6 -81 47 -123t128 -42q49 0 82.5 8.5t50.5 16.5l13 -78q-17 -9 -59.5 -19t-96.5 -10q-68 0 -117.5 20.5t-81.5 56.5t-47.5 85.5t-15.5 108.5zM410 310q1 63 -31.5 103.5 t-89.5 40.5q-32 0 -56.5 -12.5t-41.5 -32.5t-26.5 -46t-12.5 -53h258zM285 604q-63 0 -102.5 32t-47.5 89l71 19q8 -32 27 -52t52 -20t52 20t27 52l70 -19q-8 -57 -47 -89t-102 -32z" />
+<glyph unicode="Ә" horiz-adv-x="709" d="M548 370q-9 129 -68.5 191.5t-181.5 62.5q-32 0 -58.5 -4.5t-47.5 -11t-36.5 -13.5t-25.5 -12l-24 80q8 6 26 13.5t44 15t60 12.5t73 5q87 0 151 -27t106 -75t62.5 -114t20.5 -143q0 -92 -24 -160t-66 -114t-98.5 -68.5t-122.5 -22.5q-131 0 -205.5 87t-74.5 260 q0 8 1 20t2 18h487zM160 291q0 -49 12 -90t34.5 -70.5t56 -46t77.5 -16.5q51 0 88.5 20t62.5 51.5t38 71.5t16 80h-385z" />
+<glyph unicode="ә" horiz-adv-x="563" d="M510 262q0 -69 -20 -120.5t-53 -85.5t-76 -51t-88 -17q-104 0 -160.5 66t-56.5 199v24q0 5 1 9h356q-6 80 -47.5 122.5t-127.5 42.5q-49 0 -82.5 -8.5t-50.5 -16.5l-13 78q17 9 59.5 19t96.5 10q68 0 117.5 -20.5t81.5 -56.5t47.5 -86t15.5 -108zM153 211 q-1 -63 31.5 -103.5t89.5 -40.5q32 0 56.5 12.5t41 32.5t26.5 46t13 53h-258z" />
+<glyph unicode="Ӛ" horiz-adv-x="709" d="M548 370q-9 129 -68.5 191.5t-181.5 62.5q-32 0 -58.5 -4.5t-47.5 -11t-36.5 -13.5t-25.5 -12l-24 80q8 6 26 13.5t44 15t60 12.5t73 5q87 0 151 -27t106 -75t62.5 -114t20.5 -143q0 -92 -24 -160t-66 -114t-98.5 -68.5t-122.5 -22.5q-131 0 -205.5 87t-74.5 260 q0 8 1 20t2 18h487zM160 291q0 -49 12 -90t34.5 -70.5t56 -46t77.5 -16.5q51 0 88.5 20t62.5 51.5t38 71.5t16 80h-385zM247 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM437 772q-23 0 -40.5 16.5t-17.5 42.5 t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ӛ" horiz-adv-x="563" d="M510 262q0 -69 -20 -120.5t-53 -85.5t-76 -51t-88 -17q-104 0 -160.5 66t-56.5 199v24q0 5 1 9h356q-6 80 -47.5 122.5t-127.5 42.5q-49 0 -82.5 -8.5t-50.5 -16.5l-13 78q17 9 59.5 19t96.5 10q68 0 117.5 -20.5t81.5 -56.5t47.5 -86t15.5 -108zM153 211 q-1 -63 31.5 -103.5t89.5 -40.5q32 0 56.5 12.5t41 32.5t26.5 46t13 53h-258zM180 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM370 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5 t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ӝ" horiz-adv-x="909" d="M312 368l-66 78l-74 86l-70 85l-62 76h113l53 -65l64 -80l70 -84l68 -80v309h93v-309l67 80l70 84l66 80l52 65h112l-62 -76l-70 -85l-73 -86l-66 -77q40 -36 80 -80.5t77.5 -92.5t70.5 -98t59 -98h-110q-27 46 -61 92.5t-70 90t-72.5 81.5t-69.5 67v-331h-93v331 q-33 -29 -70 -67t-73 -81.5t-69.5 -90t-60.5 -92.5h-109q25 48 58 98t70.5 98t78 92t79.5 80zM359 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM549 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5 t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ӝ" horiz-adv-x="767" d="M723 520l-45 -54l-52 -62l-54 -62l-53 -59l62 -63q32 -34 62.5 -70.5t58.5 -75t49 -74.5h-104q-21 33 -48.5 69.5t-57 70.5t-59 63.5t-54.5 48.5v-252h-89v252q-25 -19 -54.5 -48.5t-59 -63.5t-57 -70.5t-48.5 -69.5h-103q21 36 48.5 74t58 74.5t62.5 70.5l62 63l-52 59 l-55 63l-52 60l-46 56h103l83 -100l110 -127v227h89v-227l110 127l83 100h102zM288 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM478 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5 t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ӟ" horiz-adv-x="576" d="M147 405h52q33 0 67 5t62 18.5t46 36.5t18 58q0 45 -38.5 73.5t-102.5 28.5q-55 0 -99 -12.5t-65 -25.5l-31 79q12 8 32.5 15.5t46 13.5t55.5 9.5t62 3.5q52 0 96 -11t76 -33.5t50 -57t18 -81.5q0 -48 -30.5 -90t-89.5 -61q30 -8 57.5 -22.5t48 -37t33 -52.5t12.5 -70 q0 -55 -20.5 -94.5t-57 -64.5t-88.5 -36.5t-115 -11.5q-38 0 -72 5.5t-61 13t-47 16.5t-31 15l29 80q11 -6 29.5 -14t41.5 -15t51 -12t59 -5q85 0 132.5 28.5t47.5 96.5q0 40 -16.5 65.5t-45 40.5t-67 20.5t-83.5 5.5h-62v79zM162 772q-23 0 -40.5 16.5t-17.5 42.5 t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM352 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ӟ" horiz-adv-x="493" d="M214 533q45 0 84 -9t67 -27t44 -45t16 -63q0 -23 -8 -42t-20 -34t-26.5 -25.5t-27.5 -14.5q46 -14 72.5 -49.5t26.5 -89.5q0 -74 -60 -110t-163 -36q-63 0 -108.5 10t-64.5 19l16 79q16 -6 57.5 -16.5t99.5 -10.5q63 0 96 19.5t33 58.5q0 28 -12.5 45.5t-31.5 26.5 t-41 12t-41 3h-87v74h84q18 0 37.5 2.5t36 10.5t27.5 22.5t11 38.5q0 19 -9.5 32.5t-25.5 22.5t-37.5 13.5t-44.5 4.5q-18 0 -39 -3t-41 -7.5t-36 -9.5t-23 -9l-17 80q8 3 25 8t38.5 9t45.5 7t47 3zM138 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5 t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM328 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ӡ" horiz-adv-x="571" d="M186 391l52 55l54 60l49 58l39 48h-321v81h444v-58q-15 -22 -38 -51t-51 -60l-58 -64l-58 -62q45 -5 85.5 -19t70.5 -38.5t47.5 -61.5t17.5 -86q0 -54 -20.5 -93.5t-57 -65t-88.5 -37.5t-115 -12q-38 0 -72 5.5t-61 13t-47 16.5t-31 15l29 80q11 -6 29.5 -14t41.5 -15 t51 -12t59 -5q85 0 132.5 29t47.5 97q0 40 -16.5 66.5t-45 42.5t-67 22.5t-83.5 6.5h-19v58z" />
+<glyph unicode="ӡ" horiz-adv-x="475" d="M122 220l47 55l49 61l43 58q20 27 34 48h-273v78h388v-54q-14 -23 -34 -52l-45 -62q-24 -33 -51 -66l-51 -60q42 -6 79.5 -19t65 -35.5t43.5 -57t16 -83.5q0 -54 -18.5 -94.5t-53 -67.5t-82.5 -40.5t-107 -13.5q-55 0 -101.5 9t-71.5 22l20 80q23 -11 64 -20t88 -9 q81 0 124 35.5t43 100.5q0 39 -17 63.5t-44.5 38.5t-63.5 19t-74 5h-17v61z" />
+<glyph unicode="Ӣ" horiz-adv-x="732" d="M88 0v693h95v-513q32 53 79 121l98 139l106 136q54 67 101 117h77v-693h-95v541q-28 -32 -61 -74l-68 -89l-70 -99l-69 -101l-61 -95l-51 -83h-81zM224 867h284v-72h-284v72z" />
+<glyph unicode="ӣ" horiz-adv-x="601" d="M519 520v-520h-90v396q-30 -38 -66 -89l-72 -105l-69 -108l-57 -94h-83v520h90v-374l59 94l69 102l70 98q36 46 67 80h82zM161 711h284v-72h-284v72z" />
+<glyph unicode="Ӥ" horiz-adv-x="732" d="M88 0v693h95v-513q32 53 79 121l98 139l106 136q54 67 101 117h77v-693h-95v541q-28 -32 -61 -74l-68 -89l-70 -99l-69 -101l-61 -95l-51 -83h-81zM271 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM461 772 q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ӥ" horiz-adv-x="601" d="M519 520v-520h-90v396q-30 -38 -66 -89l-72 -105l-69 -108l-57 -94h-83v520h90v-374l59 94l69 102l70 98q36 46 67 80h82zM208 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM398 616q-23 0 -40.5 16.5 t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ӧ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM162 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM296 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM486 772q-23 0 -40.5 16.5 t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ӧ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM202 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM392 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ө" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM391 70q49 0 89 17t69 48.5t46.5 76t21.5 100.5h-454 q9 -112 68.5 -177t159.5 -65zM391 624q-100 0 -159 -63t-69 -174h454q-5 55 -22.5 98.5t-47 74.5t-69 47.5t-87.5 16.5z" />
+<glyph unicode="ө" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM297 69q63 0 101.5 44t44.5 120h-292q6 -76 44.5 -120t101.5 -44zM297 451 q-60 0 -98.5 -40.5t-46.5 -110.5h290q-9 70 -47 110.5t-98 40.5z" />
+<glyph unicode="Ӫ" horiz-adv-x="782" d="M60 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM391 70q49 0 89 17t69 48.5t46.5 76t21.5 100.5h-454 q9 -112 68.5 -177t159.5 -65zM391 624q-100 0 -159 -63t-69 -174h454q-5 55 -22.5 98.5t-47 74.5t-69 47.5t-87.5 16.5zM296 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM486 772q-23 0 -40.5 16.5t-17.5 42.5 t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ӫ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM297 69q63 0 101.5 44t44.5 120h-292q6 -76 44.5 -120t101.5 -44zM297 451 q-60 0 -98.5 -40.5t-46.5 -110.5h290q-9 70 -47 110.5t-98 40.5zM201 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM391 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5 t-40.5 -16.5z" />
+<glyph unicode="Ӭ" horiz-adv-x="624" d="M564 347q0 -85 -23.5 -152.5t-66.5 -114t-102.5 -71t-132.5 -24.5q-42 0 -78 5t-63.5 12t-45.5 14.5t-25 12.5l25 80q22 -11 65.5 -25t109.5 -14q54 0 95.5 17.5t71 49.5t46 76.5t20.5 99.5h-306v82h304q-5 52 -21.5 94t-45.5 72t-70 46.5t-94 16.5q-66 0 -108.5 -13.5 t-64.5 -24.5l-25 77q7 5 24.5 13t44.5 15.5t62.5 12.5t77.5 5q73 0 133 -24.5t103 -71t66.5 -113.5t23.5 -153zM157 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM347 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5 t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ӭ" horiz-adv-x="502" d="M449 262q0 -60 -15.5 -110t-47.5 -86.5t-80 -57t-112 -20.5q-56 0 -99 9t-59 18l13 79q9 -5 24 -9t33.5 -7.5t38.5 -5.5t40 -2q81 0 121.5 42.5t46.5 117.5h-212v75h210q-9 67 -47.5 106.5t-113.5 39.5q-41 0 -72 -6.5t-48 -14.5l-20 75q10 5 26.5 10t36 9t40.5 6.5 t41 2.5q63 0 110.5 -21t79.5 -58t48.5 -86t16.5 -106zM115 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM305 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5 t-40.5 -16.5z" />
+<glyph unicode="Ӯ" horiz-adv-x="591" d="M396 212q-20 -46 -41.5 -86.5t-51 -70.5t-71 -47t-102.5 -17q-12 0 -25 1.5t-25 4t-21 5.5t-13 6l17 82q13 -5 31.5 -10t38.5 -5q30 0 52.5 7.5t40.5 21t32 33t27 43.5q-44 71 -83 141.5t-72 136.5t-60 126l-48 109h110q33 -87 84.5 -194t114.5 -224q40 91 76.5 200.5 t68.5 217.5h105q-23 -72 -46 -135l-46 -122l-46 -114zM166 867h284v-72h-284v72z" />
+<glyph unicode="ӯ" horiz-adv-x="501" d="M21 -97q11 -5 28.5 -9.5t34.5 -4.5q55 0 86 24.5t56 79.5q-63 120 -117.5 254.5t-90.5 272.5h100q11 -45 26.5 -97t34.5 -107t41 -110t46 -106q38 105 66 208t53 212h96q-36 -147 -80 -282.5t-95 -253.5q-20 -45 -41.5 -77.5t-47.5 -53.5t-58.5 -31t-73.5 -10 q-11 0 -23 1.5t-23.5 4t-21 5.5t-13.5 5zM121 711h284v-72h-284v72z" />
+<glyph unicode="Ӱ" horiz-adv-x="591" d="M396 212q-20 -46 -41.5 -86.5t-51 -70.5t-71 -47t-102.5 -17q-12 0 -25 1.5t-25 4t-21 5.5t-13 6l17 82q13 -5 31.5 -10t38.5 -5q30 0 52.5 7.5t40.5 21t32 33t27 43.5q-44 71 -83 141.5t-72 136.5t-60 126l-48 109h110q33 -87 84.5 -194t114.5 -224q40 91 76.5 200.5 t68.5 217.5h105q-23 -72 -46 -135l-46 -122l-46 -114zM213 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM403 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5 t-40.5 -16.5z" />
+<glyph unicode="ӱ" horiz-adv-x="501" d="M21 -97q11 -5 28.5 -9.5t34.5 -4.5q55 0 86 24.5t56 79.5q-63 120 -117.5 254.5t-90.5 272.5h100q11 -45 26.5 -97t34.5 -107t41 -110t46 -106q38 105 66 208t53 212h96q-36 -147 -80 -282.5t-95 -253.5q-20 -45 -41.5 -77.5t-47.5 -53.5t-58.5 -31t-73.5 -10 q-11 0 -23 1.5t-23.5 4t-21 5.5t-13.5 5zM168 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM358 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ӳ" horiz-adv-x="591" d="M396 212q-20 -46 -41.5 -86.5t-51 -70.5t-71 -47t-102.5 -17q-12 0 -25 1.5t-25 4t-21 5.5t-13 6l17 82q13 -5 31.5 -10t38.5 -5q30 0 52.5 7.5t40.5 21t32 33t27 43.5q-44 71 -83 141.5t-72 136.5t-60 126l-48 109h110q33 -87 84.5 -194t114.5 -224q40 91 76.5 200.5 t68.5 217.5h105q-23 -72 -46 -135l-46 -122l-46 -114zM353 876l-123 -140l-48 36l115 160zM518 876l-123 -140l-48 36l115 160z" />
+<glyph unicode="ӳ" horiz-adv-x="501" d="M21 -97q11 -5 28.5 -9.5t34.5 -4.5q55 0 86 24.5t56 79.5q-63 120 -117.5 254.5t-90.5 272.5h100q11 -45 26.5 -97t34.5 -107t41 -110t46 -106q38 105 66 208t53 212h96q-36 -147 -80 -282.5t-95 -253.5q-20 -45 -41.5 -77.5t-47.5 -53.5t-58.5 -31t-73.5 -10 q-11 0 -23 1.5t-23.5 4t-21 5.5t-13.5 5zM308 720l-123 -140l-48 36l115 160zM473 720l-123 -140l-48 36l115 160z" />
+<glyph unicode="Ӵ" horiz-adv-x="635" d="M156 493q0 -42 7.5 -73.5t26 -52t50 -30.5t79.5 -10q19 0 38.5 1.5t37.5 3.5t32 5l23 5v351h97v-693h-97v258q-19 -5 -58.5 -10t-84.5 -5q-76 0 -124 17.5t-75.5 50t-37.5 79t-10 103.5v200h96v-200zM215 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5 t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM405 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ӵ" horiz-adv-x="537" d="M141 520v-153q0 -59 30 -82.5t82 -23.5q38 0 63.5 4t45.5 9v246h93v-520h-93v202q-8 -2 -21 -5t-29.5 -5.5t-34.5 -4.5t-35 -2q-43 0 -78.5 9t-61 30t-40 55.5t-14.5 86.5v154h93zM156 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5 t-17.5 -42.5t-40.5 -16.5zM346 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="Ӷ" horiz-adv-x="513" d="M495 693v-84h-310v-526h87v-268h-92v185h-92v693h407z" />
+<glyph unicode="ӷ" horiz-adv-x="422" d="M404 442h-229v-365h70v-222h-88v145h-75v520h322v-78z" />
+<glyph unicode="Ӹ" horiz-adv-x="860" d="M468 217q0 42 -15 70t-43 44t-66.5 22.5t-84.5 6.5h-37q-19 0 -37 -2v-277q34 -3 51 -3h40q37 0 72 6t61.5 22t42.5 42.5t16 68.5zM570 217q0 -56 -21 -98t-60 -70t-95 -42t-126 -14q-42 0 -90 3.5t-90 13.5v683h97v-252q18 2 38.5 2.5t38.5 0.5q308 0 308 -227zM675 693 h97v-693h-97v693zM335 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM525 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ӹ" horiz-adv-x="762" d="M273 257q-27 0 -52.5 -1.5t-45.5 -6.5v-179q6 -1 17.5 -2t25.5 -2h27q14 -1 25 -1q61 0 94 23t33 74q0 25 -10.5 43t-28 29.5t-39.5 17t-46 5.5zM82 520h93v-199q17 4 49.5 8t62.5 4q41 0 78 -9.5t65 -30t44.5 -53t16.5 -77.5q0 -47 -16 -80t-45 -54t-70 -30.5t-90 -9.5 q-47 0 -95 5.5t-93 16.5v509zM680 0h-93v520h93v-520zM286 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM476 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5 t-40.5 -16.5z" />
+<glyph unicode="Ẁ" horiz-adv-x="933" d="M467 470q-42 -134 -85 -248l-86 -222h-97q-53 153 -93.5 323t-75.5 370h102l29 -156q15 -78 31 -151l32 -141q16 -67 33 -124l85 231q45 125 84 259h84q39 -134 85 -259l86 -231q16 56 32 123t31.5 140.5l30.5 151.5l29 157h99q-36 -200 -76.5 -370t-92.5 -323h-97 q-44 108 -86 222t-84 248zM385 932l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ẁ" horiz-adv-x="781" d="M507 0q-28 72 -59.5 164.5t-57.5 192.5q-26 -100 -57 -192.5t-59 -164.5h-81q-46 103 -90 235t-83 285h100q10 -47 24 -102t29.5 -110t32.5 -106t32 -89q17 47 33.5 99.5t31.5 105.5l29 106q13 51 23 96h77q9 -45 22 -96.5t28 -105t31.5 -106t33.5 -99.5q15 38 31.5 89 t32.5 106t30 110t24 102h96q-39 -153 -83 -285t-90 -235h-81zM309 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Ẃ" horiz-adv-x="933" d="M467 470q-42 -134 -85 -248l-86 -222h-97q-53 153 -93.5 323t-75.5 370h102l29 -156q15 -78 31 -151l32 -141q16 -67 33 -124l85 231q45 125 84 259h84q39 -134 85 -259l86 -231q16 56 32 123t31.5 140.5l30.5 151.5l29 157h99q-36 -200 -76.5 -370t-92.5 -323h-97 q-44 108 -86 222t-84 248zM601 863l-179 -127l-40 52l166 144z" />
+<glyph unicode="ẃ" horiz-adv-x="781" d="M507 0q-28 72 -59.5 164.5t-57.5 192.5q-26 -100 -57 -192.5t-59 -164.5h-81q-46 103 -90 235t-83 285h100q10 -47 24 -102t29.5 -110t32.5 -106t32 -89q17 47 33.5 99.5t31.5 105.5l29 106q13 51 23 96h77q9 -45 22 -96.5t28 -105t31.5 -106t33.5 -99.5q15 38 31.5 89 t32.5 106t30 110t24 102h96q-39 -153 -83 -285t-90 -235h-81zM525 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="Ẅ" horiz-adv-x="933" d="M467 470q-42 -134 -85 -248l-86 -222h-97q-53 153 -93.5 323t-75.5 370h102l29 -156q15 -78 31 -151l32 -141q16 -67 33 -124l85 231q45 125 84 259h84q39 -134 85 -259l86 -231q16 56 32 123t31.5 140.5l30.5 151.5l29 157h99q-36 -200 -76.5 -370t-92.5 -323h-97 q-44 108 -86 222t-84 248zM371 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM561 772q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5z" />
+<glyph unicode="ẅ" horiz-adv-x="781" d="M507 0q-28 72 -59.5 164.5t-57.5 192.5q-26 -100 -57 -192.5t-59 -164.5h-81q-46 103 -90 235t-83 285h100q10 -47 24 -102t29.5 -110t32.5 -106t32 -89q17 47 33.5 99.5t31.5 105.5l29 106q13 51 23 96h77q9 -45 22 -96.5t28 -105t31.5 -106t33.5 -99.5q15 38 31.5 89 t32.5 106t30 110t24 102h96q-39 -153 -83 -285t-90 -235h-81zM295 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5t-40.5 -16.5zM485 616q-23 0 -40.5 16.5t-17.5 42.5t17.5 42.5t40.5 16.5t40.5 -16.5t17.5 -42.5t-17.5 -42.5 t-40.5 -16.5z" />
+<glyph unicode="Ỳ" horiz-adv-x="602" d="M253 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97zM220 932l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ỳ" horiz-adv-x="501" d="M21 -97q11 -5 28.5 -9.5t34.5 -4.5q55 0 86 24.5t56 79.5q-63 120 -117.5 254.5t-90.5 272.5h100q11 -45 26.5 -97t34.5 -107t41 -110t46 -106q38 105 66 208t53 212h96q-36 -147 -80 -282.5t-95 -253.5q-20 -45 -41.5 -77.5t-47.5 -53.5t-58.5 -31t-73.5 -10 q-11 0 -23 1.5t-23.5 4t-21 5.5t-13.5 5zM182 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ἀ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM239 609q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46 q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33z" />
+<glyph unicode="ἁ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM334 575q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5 t-27.5 -20.5q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="ἂ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM138 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46 q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM373 783l109 -170l-52 -38l-126 158z" />
+<glyph unicode="ἃ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM220 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5 t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM332 783l109 -170l-52 -38l-126 158z" />
+<glyph unicode="ἄ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM181 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46 q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM503 733l-126 -158l-52 38l109 170z" />
+<glyph unicode="ἅ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM241 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5 t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM482 733l-126 -158l-52 38l109 170z" />
+<glyph unicode="ἆ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM225 609q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15q23 0 38.5 -14t15.5 -44 q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM305 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="ἇ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM357 575q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5 t-19 -19.5q8 -12 22 -24.5t34 -26.5zM305 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="Ἀ" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM57 537q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5 q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33z" />
+<glyph unicode="Ἁ" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM145 503q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16 q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="Ἂ" horiz-adv-x="785" d="M669 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM578 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5 q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM195 711l109 -170l-52 -38l-126 158z" />
+<glyph unicode="Ἃ" horiz-adv-x="770" d="M654 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM563 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16 q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM180 711l109 -170l-52 -38l-126 158z" />
+<glyph unicode="Ἄ" horiz-adv-x="729" d="M613 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM522 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5 q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM282 661l-126 -158l-52 38l109 170z" />
+<glyph unicode="Ἅ" horiz-adv-x="756" d="M640 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM549 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16 q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM309 661l-126 -158l-52 38l109 170z" />
+<glyph unicode="Ἆ" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM10 501q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33 t40.5 15q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="Ἇ" horiz-adv-x="677" d="M561 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM470 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM142 467q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44 t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5q8 -12 22 -24.5t34 -26.5zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="ἐ" horiz-adv-x="507" d="M294 533q24 0 48 -2.5t44.5 -6.5t36 -8t23.5 -8l-14 -79q-5 2 -19.5 6.5t-33.5 9t-41 7.5t-42 3q-54 0 -91 -17.5t-37 -55.5q0 -24 10 -38.5t25 -22.5t34 -10.5t37 -2.5h89v-73h-91q-23 0 -45 -4.5t-39 -14t-27 -26t-10 -40.5q0 -83 137 -83q29 0 56 4t49.5 10t39 12 t24.5 10l25 -77q-9 -5 -28 -11.5t-45 -12.5t-59.5 -10t-72.5 -4q-36 0 -75 6.5t-71 23.5t-53 48t-21 80q0 40 25 75t66 52q-11 4 -23.5 14.5t-23.5 25t-18 32.5t-7 39q0 37 15.5 65t44 47t69 28t89.5 9zM207 609q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5 q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33z" />
+<glyph unicode="ἑ" horiz-adv-x="507" d="M294 533q24 0 48 -2.5t44.5 -6.5t36 -8t23.5 -8l-14 -79q-5 2 -19.5 6.5t-33.5 9t-41 7.5t-42 3q-54 0 -91 -17.5t-37 -55.5q0 -24 10 -38.5t25 -22.5t34 -10.5t37 -2.5h89v-73h-91q-23 0 -45 -4.5t-39 -14t-27 -26t-10 -40.5q0 -83 137 -83q29 0 56 4t49.5 10t39 12 t24.5 10l25 -77q-9 -5 -28 -11.5t-45 -12.5t-59.5 -10t-72.5 -4q-36 0 -75 6.5t-71 23.5t-53 48t-21 80q0 40 25 75t66 52q-11 4 -23.5 14.5t-23.5 25t-18 32.5t-7 39q0 37 15.5 65t44 47t69 28t89.5 9zM302 575q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16 q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="ἒ" horiz-adv-x="507" d="M294 533q24 0 48 -2.5t44.5 -6.5t36 -8t23.5 -8l-14 -79q-5 2 -19.5 6.5t-33.5 9t-41 7.5t-42 3q-54 0 -91 -17.5t-37 -55.5q0 -24 10 -38.5t25 -22.5t34 -10.5t37 -2.5h89v-73h-91q-23 0 -45 -4.5t-39 -14t-27 -26t-10 -40.5q0 -83 137 -83q29 0 56 4t49.5 10t39 12 t24.5 10l25 -77q-9 -5 -28 -11.5t-45 -12.5t-59.5 -10t-72.5 -4q-36 0 -75 6.5t-71 23.5t-53 48t-21 80q0 40 25 75t66 52q-11 4 -23.5 14.5t-23.5 25t-18 32.5t-7 39q0 37 15.5 65t44 47t69 28t89.5 9zM106 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5 q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM341 783l109 -170l-52 -38l-126 158z" />
+<glyph unicode="ἓ" horiz-adv-x="507" d="M294 533q24 0 48 -2.5t44.5 -6.5t36 -8t23.5 -8l-14 -79q-5 2 -19.5 6.5t-33.5 9t-41 7.5t-42 3q-54 0 -91 -17.5t-37 -55.5q0 -24 10 -38.5t25 -22.5t34 -10.5t37 -2.5h89v-73h-91q-23 0 -45 -4.5t-39 -14t-27 -26t-10 -40.5q0 -83 137 -83q29 0 56 4t49.5 10t39 12 t24.5 10l25 -77q-9 -5 -28 -11.5t-45 -12.5t-59.5 -10t-72.5 -4q-36 0 -75 6.5t-71 23.5t-53 48t-21 80q0 40 25 75t66 52q-11 4 -23.5 14.5t-23.5 25t-18 32.5t-7 39q0 37 15.5 65t44 47t69 28t89.5 9zM188 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16 q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM300 783l109 -170l-52 -38l-126 158z" />
+<glyph unicode="ἔ" horiz-adv-x="507" d="M294 533q24 0 48 -2.5t44.5 -6.5t36 -8t23.5 -8l-14 -79q-5 2 -19.5 6.5t-33.5 9t-41 7.5t-42 3q-54 0 -91 -17.5t-37 -55.5q0 -24 10 -38.5t25 -22.5t34 -10.5t37 -2.5h89v-73h-91q-23 0 -45 -4.5t-39 -14t-27 -26t-10 -40.5q0 -83 137 -83q29 0 56 4t49.5 10t39 12 t24.5 10l25 -77q-9 -5 -28 -11.5t-45 -12.5t-59.5 -10t-72.5 -4q-36 0 -75 6.5t-71 23.5t-53 48t-21 80q0 40 25 75t66 52q-11 4 -23.5 14.5t-23.5 25t-18 32.5t-7 39q0 37 15.5 65t44 47t69 28t89.5 9zM149 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5 q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM471 733l-126 -158l-52 38l109 170z" />
+<glyph unicode="ἕ" horiz-adv-x="507" d="M294 533q24 0 48 -2.5t44.5 -6.5t36 -8t23.5 -8l-14 -79q-5 2 -19.5 6.5t-33.5 9t-41 7.5t-42 3q-54 0 -91 -17.5t-37 -55.5q0 -24 10 -38.5t25 -22.5t34 -10.5t37 -2.5h89v-73h-91q-23 0 -45 -4.5t-39 -14t-27 -26t-10 -40.5q0 -83 137 -83q29 0 56 4t49.5 10t39 12 t24.5 10l25 -77q-9 -5 -28 -11.5t-45 -12.5t-59.5 -10t-72.5 -4q-36 0 -75 6.5t-71 23.5t-53 48t-21 80q0 40 25 75t66 52q-11 4 -23.5 14.5t-23.5 25t-18 32.5t-7 39q0 37 15.5 65t44 47t69 28t89.5 9zM209 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16 q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM450 733l-126 -158l-52 38l109 170z" />
+<glyph unicode="Ἐ" horiz-adv-x="638" d="M151 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM-40 537q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33z" />
+<glyph unicode="Ἑ" horiz-adv-x="638" d="M151 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM74 503q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="Ἒ" horiz-adv-x="828" d="M341 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM195 711l109 -170l-52 -38l-126 158z" />
+<glyph unicode="Ἓ" horiz-adv-x="813" d="M326 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM180 711l109 -170l-52 -38l-126 158z" />
+<glyph unicode="Ἔ" horiz-adv-x="806" d="M319 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM282 661l-126 -158l-52 38l109 170z" />
+<glyph unicode="Ἕ" horiz-adv-x="833" d="M346 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM309 661l-126 -158l-52 38l109 170z" />
+<glyph unicode="ἠ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM226 609q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5 t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33z" />
+<glyph unicode="ἡ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM321 575q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16 q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="ἢ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM125 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5 t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM360 783l109 -170l-52 -38l-126 158z" />
+<glyph unicode="ἣ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM207 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16 q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM319 783l109 -170l-52 -38l-126 158z" />
+<glyph unicode="ἤ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM168 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5 t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM490 733l-126 -158l-52 38l109 170z" />
+<glyph unicode="ἥ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM228 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16 q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM469 733l-126 -158l-52 38l109 170z" />
+<glyph unicode="ἦ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM212 609q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15 q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM292 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="ἧ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM344 575q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14 q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5q8 -12 22 -24.5t34 -26.5zM292 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="Ἠ" horiz-adv-x="772" d="M587 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM-40 537q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33z" />
+<glyph unicode="Ἡ" horiz-adv-x="772" d="M587 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM74 503q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="Ἢ" horiz-adv-x="962" d="M777 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM195 711l109 -170l-52 -38l-126 158z" />
+<glyph unicode="Ἣ" horiz-adv-x="947" d="M762 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM180 711l109 -170l-52 -38l-126 158z" />
+<glyph unicode="Ἤ" horiz-adv-x="940" d="M755 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM282 661l-126 -158l-52 38l109 170z" />
+<glyph unicode="Ἥ" horiz-adv-x="967" d="M782 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM309 661l-126 -158l-52 38l109 170z" />
+<glyph unicode="Ἦ" horiz-adv-x="885" d="M700 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM10 501q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53 v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="Ἧ" horiz-adv-x="885" d="M700 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM142 467q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5q8 -12 22 -24.5t34 -26.5zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53 v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="ἰ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM63 609q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33z" />
+<glyph unicode="ἱ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM157 575q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="ἲ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM-39 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM196 783l109 -170l-52 -38 l-126 158z" />
+<glyph unicode="ἳ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM43 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM155 783l109 -170l-52 -38 l-126 158z" />
+<glyph unicode="ἴ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM4 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM326 733l-126 -158l-52 38 l109 170z" />
+<glyph unicode="ἵ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM64 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM305 733l-126 -158l-52 38 l109 170z" />
+<glyph unicode="ἶ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM48 609q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM128 881q26 0 50 -8 t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="ἷ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM180 575q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5q8 -12 22 -24.5t34 -26.5zM128 881q26 0 50 -8 t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="Ἰ" horiz-adv-x="336" d="M151 693h97v-693h-97v693zM-40 537q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33z" />
+<glyph unicode="Ἱ" horiz-adv-x="336" d="M151 693h97v-693h-97v693zM74 503q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="Ἲ" horiz-adv-x="526" d="M341 693h97v-693h-97v693zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM195 711l109 -170l-52 -38l-126 158z" />
+<glyph unicode="Ἳ" horiz-adv-x="511" d="M326 693h97v-693h-97v693zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM180 711l109 -170l-52 -38l-126 158z" />
+<glyph unicode="Ἴ" horiz-adv-x="504" d="M319 693h97v-693h-97v693zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM282 661l-126 -158l-52 38l109 170z" />
+<glyph unicode="Ἵ" horiz-adv-x="531" d="M346 693h97v-693h-97v693zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM309 661l-126 -158l-52 38l109 170z" />
+<glyph unicode="Ἶ" horiz-adv-x="449" d="M264 693h97v-693h-97v693zM10 501q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5 t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="Ἷ" horiz-adv-x="449" d="M264 693h97v-693h-97v693zM142 467q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5q8 -12 22 -24.5t34 -26.5zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5 t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="ὀ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM231 609q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33z" />
+<glyph unicode="ὁ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM327 575q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="ὂ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM130 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM365 783l109 -170l-52 -38l-126 158z" />
+<glyph unicode="ὃ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM213 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM325 783l109 -170l-52 -38l-126 158z" />
+<glyph unicode="ὄ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM173 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM495 733l-126 -158l-52 38l109 170z" />
+<glyph unicode="ὅ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM241 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM482 733l-126 -158l-52 38l109 170z" />
+<glyph unicode="Ὀ" horiz-adv-x="792" d="M70 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM172 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM-40 537q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38 t-34.5 -37t-41.5 -33z" />
+<glyph unicode="Ὁ" horiz-adv-x="828" d="M106 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM208 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM74 503q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5 q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="Ὂ" horiz-adv-x="1018" d="M296 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM398 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38 t-33 -37t-38.5 -33zM195 711l109 -170l-52 -38l-126 158z" />
+<glyph unicode="Ὃ" horiz-adv-x="1003" d="M281 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM383 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5 q11 -19 26 -34.5t35 -32.5zM180 711l109 -170l-52 -38l-126 158z" />
+<glyph unicode="Ὄ" horiz-adv-x="945" d="M223 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM325 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38 t-33 -37t-38.5 -33zM282 661l-126 -158l-52 38l109 170z" />
+<glyph unicode="Ὅ" horiz-adv-x="972" d="M250 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM352 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5 q11 -19 26 -34.5t35 -32.5zM309 661l-126 -158l-52 38l109 170z" />
+<glyph unicode="ὐ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM224 609q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5 t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33z" />
+<glyph unicode="ὑ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM319 575q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5 t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="ὒ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM123 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5 t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM358 783l109 -170l-52 -38l-126 158z" />
+<glyph unicode="ὓ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM205 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5 t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM317 783l109 -170l-52 -38l-126 158z" />
+<glyph unicode="ὔ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM166 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5 t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM488 733l-126 -158l-52 38l109 170z" />
+<glyph unicode="ὕ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM226 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5 t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM467 733l-126 -158l-52 38l109 170z" />
+<glyph unicode="ὖ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM210 609q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15 q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM290 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="ὗ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM342 575q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14 q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5q8 -12 22 -24.5t34 -26.5zM290 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="Ὑ" horiz-adv-x="707" d="M358 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97zM74 503q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5 q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="Ὓ" horiz-adv-x="871" d="M522 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5 q11 -19 26 -34.5t35 -32.5zM180 711l109 -170l-52 -38l-126 158z" />
+<glyph unicode="Ὕ" horiz-adv-x="923" d="M574 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5 q11 -19 26 -34.5t35 -32.5zM309 661l-126 -158l-52 38l109 170z" />
+<glyph unicode="Ὗ" horiz-adv-x="849" d="M500 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97zM142 467q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5 q8 -12 22 -24.5t34 -26.5zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="ὠ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M355 609q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33z" />
+<glyph unicode="ὡ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M450 575q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="ὢ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M254 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM489 783l109 -170l-52 -38l-126 158z" />
+<glyph unicode="ὣ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M336 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM448 783l109 -170l-52 -38l-126 158z" />
+<glyph unicode="ὤ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M297 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM619 733l-126 -158l-52 38l109 170z" />
+<glyph unicode="ὥ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M357 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM598 733l-126 -158l-52 38l109 170z" />
+<glyph unicode="ὦ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M341 609q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM421 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2 q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="ὧ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M473 575q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5q8 -12 22 -24.5t34 -26.5zM421 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2 q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="Ὠ" horiz-adv-x="795" d="M401 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM-40 537q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38 t-34.5 -37t-41.5 -33z" />
+<glyph unicode="Ὡ" horiz-adv-x="830" d="M436 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM74 503q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5 q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="Ὢ" horiz-adv-x="1020" d="M626 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37 t-38.5 -33zM195 711l109 -170l-52 -38l-126 158z" />
+<glyph unicode="Ὣ" horiz-adv-x="1005" d="M611 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5 q11 -19 26 -34.5t35 -32.5zM180 711l109 -170l-52 -38l-126 158z" />
+<glyph unicode="Ὤ" horiz-adv-x="947" d="M553 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37 t-38.5 -33zM282 661l-126 -158l-52 38l109 170z" />
+<glyph unicode="Ὥ" horiz-adv-x="974" d="M580 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5 q11 -19 26 -34.5t35 -32.5zM309 661l-126 -158l-52 38l109 170z" />
+<glyph unicode="Ὦ" horiz-adv-x="873" d="M479 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM10 501q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28 t-37.5 -23zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="Ὧ" horiz-adv-x="902" d="M508 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM142 467q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5 q8 -12 22 -24.5t34 -26.5zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="ὰ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM223 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ά" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM440 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="ὲ" horiz-adv-x="507" d="M294 533q24 0 48 -2.5t44.5 -6.5t36 -8t23.5 -8l-14 -79q-5 2 -19.5 6.5t-33.5 9t-41 7.5t-42 3q-54 0 -91 -17.5t-37 -55.5q0 -24 10 -38.5t25 -22.5t34 -10.5t37 -2.5h89v-73h-91q-23 0 -45 -4.5t-39 -14t-27 -26t-10 -40.5q0 -83 137 -83q29 0 56 4t49.5 10t39 12 t24.5 10l25 -77q-9 -5 -28 -11.5t-45 -12.5t-59.5 -10t-72.5 -4q-36 0 -75 6.5t-71 23.5t-53 48t-21 80q0 40 25 75t66 52q-11 4 -23.5 14.5t-23.5 25t-18 32.5t-7 39q0 37 15.5 65t44 47t69 28t89.5 9zM191 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="έ" horiz-adv-x="507" d="M294 533q24 0 48 -2.5t44.5 -6.5t36 -8t23.5 -8l-14 -79q-5 2 -19.5 6.5t-33.5 9t-41 7.5t-42 3q-54 0 -91 -17.5t-37 -55.5q0 -24 10 -38.5t25 -22.5t34 -10.5t37 -2.5h89v-73h-91q-23 0 -45 -4.5t-39 -14t-27 -26t-10 -40.5q0 -83 137 -83q29 0 56 4t49.5 10t39 12 t24.5 10l25 -77q-9 -5 -28 -11.5t-45 -12.5t-59.5 -10t-72.5 -4q-36 0 -75 6.5t-71 23.5t-53 48t-21 80q0 40 25 75t66 52q-11 4 -23.5 14.5t-23.5 25t-18 32.5t-7 39q0 37 15.5 65t44 47t69 28t89.5 9zM408 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="ὴ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM210 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ή" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM427 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="ὶ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM46 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ί" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM263 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="ὸ" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM216 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ό" horiz-adv-x="594" d="M541 260q0 -62 -18 -112t-50.5 -86t-77.5 -55.5t-98 -19.5t-98 19.5t-77.5 55.5t-50.5 86t-18 112q0 61 18 111.5t50.5 86.5t77.5 55.5t98 19.5t98 -19.5t77.5 -55.5t50.5 -86.5t18 -111.5zM444 260q0 88 -39.5 139.5t-107.5 51.5t-107.5 -51.5t-39.5 -139.5t39.5 -139.5 t107.5 -51.5t107.5 51.5t39.5 139.5zM432 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="ὺ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM208 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ύ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM425 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="ὼ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M339 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ώ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M556 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="ᾀ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM239 609q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46 q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33zM350 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾁ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM334 575q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5 t-27.5 -20.5q11 -19 27 -34.5t36 -32.5zM350 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾂ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM138 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46 q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM373 783l109 -170l-52 -38l-126 158zM350 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾃ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM220 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5 t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM332 783l109 -170l-52 -38l-126 158zM350 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾄ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM181 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46 q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM503 733l-126 -158l-52 38l109 170zM350 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾅ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM241 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5 t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM482 733l-126 -158l-52 38l109 170zM350 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾆ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM225 609q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15q23 0 38.5 -14t15.5 -44 q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM305 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM350 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56 q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾇ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM355 575q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5 t-19 -19.5q8 -12 22 -24.5t34 -26.5zM303 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM350 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3 t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾈ" horiz-adv-x="944" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM57 537q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5 q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33zM905 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾉ" horiz-adv-x="944" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM145 503q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16 q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5zM905 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾊ" horiz-adv-x="1062" d="M669 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM578 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5 q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM195 711l109 -170l-52 -38l-126 158zM1023 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾋ" horiz-adv-x="1047" d="M654 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM563 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16 q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM180 711l109 -170l-52 -38l-126 158zM1008 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾌ" horiz-adv-x="1006" d="M613 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM522 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5 q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM282 661l-126 -158l-52 38l109 170zM967 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾍ" horiz-adv-x="1033" d="M640 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM549 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16 q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM309 661l-126 -158l-52 38l109 170zM994 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾎ" horiz-adv-x="944" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM10 501q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33 t40.5 15q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM905 -10q-86 2 -122 37t-36 109v384 h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾏ" horiz-adv-x="954" d="M561 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM470 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM142 467q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44 t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5q8 -12 22 -24.5t34 -26.5zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM915 -10q-86 2 -122 37t-36 109 v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾐ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM226 609q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5 t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33zM175 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾑ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM321 575q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16 q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5zM175 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾒ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM125 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5 t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM360 783l109 -170l-52 -38l-126 158zM175 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾓ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM207 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16 q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM319 783l109 -170l-52 -38l-126 158zM175 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89 v-13z" />
+<glyph unicode="ᾔ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM168 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5 t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM490 733l-126 -158l-52 38l109 170zM175 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾕ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM228 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16 q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM469 733l-126 -158l-52 38l109 170zM175 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89 v-13z" />
+<glyph unicode="ᾖ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM212 609q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15 q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM292 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM175 -63q0 -22 4.5 -35t12.5 -19.5 t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾗ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM342 575q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14 q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5q8 -12 22 -24.5t34 -26.5zM290 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM175 -63q0 -22 4.5 -35t12.5 -19.5 t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾘ" horiz-adv-x="1049" d="M587 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM-40 537q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33zM1010 -10q-86 2 -122 37t-36 109v384h93v-369 q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾙ" horiz-adv-x="1049" d="M587 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM74 503q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5zM1010 -10q-86 2 -122 37t-36 109v384h93v-369 q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾚ" horiz-adv-x="1239" d="M777 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM195 711l109 -170l-52 -38l-126 158zM1200 -10 q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾛ" horiz-adv-x="1224" d="M762 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM180 711l109 -170l-52 -38l-126 158zM1185 -10 q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾜ" horiz-adv-x="1217" d="M755 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM282 661l-126 -158l-52 38l109 170zM1178 -10 q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾝ" horiz-adv-x="1244" d="M782 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM309 661l-126 -158l-52 38l109 170zM1205 -10 q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾞ" horiz-adv-x="1162" d="M700 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM10 501q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53 v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM1123 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾟ" horiz-adv-x="1162" d="M700 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM142 467q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5q8 -12 22 -24.5t34 -26.5zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53 v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM1123 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾠ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M355 609q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33zM465 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5 t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾡ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M450 575q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5zM465 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5 t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾢ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M254 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM489 783l109 -170l-52 -38l-126 158zM465 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3 t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾣ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M336 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM448 783l109 -170l-52 -38l-126 158zM465 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3 t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾤ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M297 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM619 733l-126 -158l-52 38l109 170zM465 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3 t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾥ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M357 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM598 733l-126 -158l-52 38l109 170zM465 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3 t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾦ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M341 609q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM421 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2 q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM465 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾧ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M473 575q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5q8 -12 22 -24.5t34 -26.5zM421 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2 q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM465 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾨ" horiz-adv-x="1072" d="M401 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM-40 537q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38 t-34.5 -37t-41.5 -33zM1033 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾩ" horiz-adv-x="1107" d="M436 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM74 503q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5 q11 -19 27 -34.5t36 -32.5zM1068 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾪ" horiz-adv-x="1297" d="M626 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37 t-38.5 -33zM195 711l109 -170l-52 -38l-126 158zM1258 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾫ" horiz-adv-x="1282" d="M611 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5 q11 -19 26 -34.5t35 -32.5zM180 711l109 -170l-52 -38l-126 158zM1243 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾬ" horiz-adv-x="1224" d="M553 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37 t-38.5 -33zM282 661l-126 -158l-52 38l109 170zM1185 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾭ" horiz-adv-x="1251" d="M580 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5 q11 -19 26 -34.5t35 -32.5zM309 661l-126 -158l-52 38l109 170zM1212 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾮ" horiz-adv-x="1150" d="M479 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM10 501q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28 t-37.5 -23zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM1111 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾯ" horiz-adv-x="1179" d="M508 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM142 467q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5 q8 -12 22 -24.5t34 -26.5zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM1140 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="ᾰ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM305 610q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7 t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="ᾱ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM163 711h284v-72h-284v72z" />
+<glyph unicode="ᾲ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM223 776l166 -144l-40 -52l-179 127zM350 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3 t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾳ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM350 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5 t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾴ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM440 707l-179 -127l-40 52l166 144zM350 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3 t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ᾶ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM305 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7 t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="ᾷ" horiz-adv-x="610" d="M317 531q28 0 56.5 -3t53.5 -7.5t45.5 -10t33.5 -10.5v-335q0 -29 4.5 -46.5t14 -28t25 -15t37.5 -7.5l-13 -78q-45 0 -75.5 13.5t-49.5 37.5q-25 -19 -64 -35.5t-93 -16.5q-59 0 -103.5 20t-74.5 56t-45.5 85.5t-15.5 108.5q0 63 18.5 113.5t53 85.5t83.5 54t109 19z M299 70q41 0 72.5 13.5t47.5 25.5q-6 27 -6 60v267q-8 3 -34.5 7.5t-57.5 4.5q-80 0 -125.5 -49t-45.5 -140q0 -40 8 -74.5t26 -60t46.5 -40t68.5 -14.5zM305 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7 t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5zM350 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="Ᾰ" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM334 766q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60 q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="Ᾱ" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM191 867h284v-72h-284v72z" />
+<glyph unicode="Ὰ" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM15 704l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Ά" horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM218 635l-179 -127l-40 52l166 144z" />
+<glyph unicode="ᾼ" horiz-adv-x="944" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM905 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24 t24 -13.5t37 -7.5z" />
+<glyph unicode="᾽" horiz-adv-x="380" d="M122 609q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33z" />
+<glyph unicode="ι" horiz-adv-x="277" d="M182 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="᾿" horiz-adv-x="380" d="M122 609q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33z" />
+<glyph unicode="῀" horiz-adv-x="380" d="M190 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="῁" horiz-adv-x="380" d="M89 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM291 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15zM190 865q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5 t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="ῂ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM175 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3 t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13zM210 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ῃ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM175 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3 t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ῄ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM175 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3 t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13zM427 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="ῆ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM292 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24 t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="ῇ" d="M82 505q32 8 85 17t122 9q62 0 103 -17.5t65.5 -49t34.5 -75.5t10 -97v-477h-93v457q0 48 -6.5 82t-21.5 55t-40 30.5t-62 9.5q-15 0 -31 -1t-30.5 -2.5t-26 -3.5t-16.5 -3v-439h-93v505zM292 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24 t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5zM175 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z " />
+<glyph unicode="Ὲ" horiz-adv-x="696" d="M209 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448zM6 704l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Έ" horiz-adv-x="696" d="M172 635l-179 -127l-40 52l166 144zM209 0v693h423v-83h-326v-206h290v-81h-290v-240h351v-83h-448z" />
+<glyph unicode="Ὴ" horiz-adv-x="830" d="M645 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM6 704l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Ή" horiz-adv-x="830" d="M172 635l-179 -127l-40 52l166 144zM645 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289z" />
+<glyph unicode="ῌ" horiz-adv-x="986" d="M524 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM947 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="῍" horiz-adv-x="380" d="M18 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM253 783l109 -170l-52 -38l-126 158z" />
+<glyph unicode="῎" horiz-adv-x="380" d="M29 609q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM351 733l-126 -158l-52 38l109 170z" />
+<glyph unicode="῏" horiz-adv-x="380" d="M110 609q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM190 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2 q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="ῐ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM128 610q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5 t-43 -27t-52.5 -9.5z" />
+<glyph unicode="ῑ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM-14 711h284v-72h-284v72z" />
+<glyph unicode="ῒ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM117 780l89 -171l-52 -31l-104 159zM-16 621q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM272 621q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15 q22 0 38 -15t16 -40t-16 -40t-38 -15z" />
+<glyph unicode="ΐ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM206 737l-104 -159l-52 31l89 171zM272 621q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM-16 621q-22 0 -38 15t-16 40t16 40t38 15 q23 0 38.5 -15t15.5 -40t-15.5 -40t-38.5 -15z" />
+<glyph unicode="ῖ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM128 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5 t43 27t52.5 9.5z" />
+<glyph unicode="ῗ" horiz-adv-x="277" d="M238 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5zM27 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM229 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15z M128 865q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="Ῐ" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM138 766q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="Ῑ" horiz-adv-x="273" d="M88 693h97v-693h-97v693zM-3 867h284v-72h-284v72z" />
+<glyph unicode="Ὶ" horiz-adv-x="394" d="M209 693h97v-693h-97v693zM6 704l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Ί" horiz-adv-x="394" d="M172 635l-179 -127l-40 52l166 144zM209 693h97v-693h-97v693z" />
+<glyph unicode="῝" horiz-adv-x="380" d="M131 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM243 783l109 -170l-52 -38l-126 158z" />
+<glyph unicode="῞" horiz-adv-x="380" d="M121 575q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM362 733l-126 -158l-52 38l109 170z" />
+<glyph unicode="῟" horiz-adv-x="380" d="M242 575q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5q8 -12 22 -24.5t34 -26.5zM190 881q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2 q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="ῠ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM290 610q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24 t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="ῡ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM148 711h284v-72h-284v72z" />
+<glyph unicode="ῢ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM279 780l89 -171l-52 -31l-104 159zM146 621q-23 0 -38.5 15t-15.5 40t15.5 40 t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM434 621q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15z" />
+<glyph unicode="ΰ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM368 737l-104 -159l-52 31l89 171zM434 621q-23 0 -38.5 15t-15.5 40t15.5 40 t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM146 621q-22 0 -38 15t-16 40t16 40t38 15q23 0 38.5 -15t15.5 -40t-15.5 -40t-38.5 -15z" />
+<glyph unicode="ῤ" horiz-adv-x="599" d="M307 -12q-44 0 -80.5 12t-57.5 25v-210h-93v476q0 54 14.5 98t43 75.5t69.5 49t95 17.5q119 0 183.5 -69.5t64.5 -202.5q0 -59 -16 -108.5t-46.5 -85.5t-75 -56.5t-101.5 -20.5zM169 110q31 -23 64 -32t62 -9q40 0 69 14.5t48 40t28 60.5t9 75q0 91 -34 140t-115 49 q-63 0 -97 -41t-34 -132v-165zM237 609q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33z" />
+<glyph unicode="ῥ" horiz-adv-x="599" d="M307 -12q-44 0 -80.5 12t-57.5 25v-210h-93v476q0 54 14.5 98t43 75.5t69.5 49t95 17.5q119 0 183.5 -69.5t64.5 -202.5q0 -59 -16 -108.5t-46.5 -85.5t-75 -56.5t-101.5 -20.5zM169 110q31 -23 64 -32t62 -9q40 0 69 14.5t48 40t28 60.5t9 75q0 91 -34 140t-115 49 q-63 0 -97 -41t-34 -132v-165zM332 575q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="ῦ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM290 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24 t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="ῧ" horiz-adv-x="580" d="M290 -11q-65 0 -106.5 19.5t-65.5 52t-33 74.5t-9 86v299h93v-286q0 -88 30.5 -124.5t90.5 -36.5t90.5 36.5t30.5 124.5v286h93v-299q0 -44 -9 -86t-33 -74.5t-65.5 -52t-106.5 -19.5zM189 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40 t-38.5 -15zM391 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15zM290 865q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8z" />
+<glyph unicode="Ῠ" horiz-adv-x="602" d="M253 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97zM301 766q-28 0 -52.5 9.5t-43 27t-28.5 43.5q-9 24 -9 53v6h60q1 -11 4.5 -24t11.5 -23.5t22 -17.5t35 -7t35 7t22 17.5t11.5 23.5 t4.5 24h60v-6q0 -29 -9 -53q-10 -26 -28.5 -43.5t-43 -27t-52.5 -9.5z" />
+<glyph unicode="Ῡ" horiz-adv-x="602" d="M253 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97zM159 867h284v-72h-284v72z" />
+<glyph unicode="Ὺ" horiz-adv-x="744" d="M395 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97zM6 704l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Ύ" horiz-adv-x="786" d="M172 635l-179 -127l-40 52l166 144zM437 0v278q-69 107 -130 211l-115 204h114q38 -82 85 -166.5t97 -162.5q49 78 96 162.5t86 166.5h108l-115 -203l-129 -210v-280h-97z" />
+<glyph unicode="Ῥ" horiz-adv-x="675" d="M335 700q146 0 224.5 -55.5t78.5 -165.5q0 -60 -21.5 -102.5t-62 -69t-98.5 -38.5t-131 -12h-77v-257h-97v683q41 10 91.5 13.5t92.5 3.5zM343 615q-62 0 -95 -3v-272h73q50 0 90 6.5t67.5 22t42.5 42.5t15 69q0 40 -15.5 66t-42 41.5t-61.5 21.5t-74 6zM74 503 q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode="῭" horiz-adv-x="380" d="M179 780l89 -171l-52 -31l-104 159zM46 621q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM334 621q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15z" />
+<glyph unicode="΅" horiz-adv-x="380" d="M268 737l-104 -159l-52 31l89 171zM334 621q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM46 621q-22 0 -38 15t-16 40t16 40t38 15q23 0 38.5 -15t15.5 -40t-15.5 -40t-38.5 -15z" />
+<glyph unicode="`" horiz-adv-x="380" d="M102 776l166 -144l-40 -52l-179 127z" />
+<glyph unicode="ῲ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M339 776l166 -144l-40 -52l-179 127zM465 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ῳ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M465 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ῴ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M556 707l-179 -127l-40 52l166 144zM465 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph unicode="ῶ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M421 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="ῷ" horiz-adv-x="842" d="M575 -10q-55 0 -96.5 24.5t-57.5 68.5q-16 -44 -57.5 -68.5t-96.5 -24.5q-45 0 -83 14t-66 45.5t-43.5 81t-15.5 121.5q0 48 10.5 91.5t25.5 79.5t32 63.5t31 44.5l83 -29l-21 -34q-15 -24 -29.5 -56.5t-25.5 -73t-11 -85.5q0 -83 29 -131.5t86 -48.5q40 0 61.5 23 t31.5 55t11.5 66.5t1.5 57.5v145h92v-145q0 -23 1.5 -57.5t11.5 -66.5t31.5 -55t61.5 -23q57 0 86 48.5t29 131.5q0 45 -11 85.5t-25.5 73t-29.5 56.5l-21 34l83 29q13 -17 30.5 -44.5t32.5 -63.5t25.5 -79.5t10.5 -91.5q0 -72 -15.5 -122t-43.5 -81t-66 -45t-83 -14z M465 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13zM421 749q28 0 52.5 -9.5t43 -27t28.5 -43.5q9 -24 9 -53v-6h-60q-1 11 -4.5 24t-11.5 23.5t-22 17.5t-35 7t-35 -7 t-22 -17.5t-11.5 -23.5t-4.5 -24h-60v6q0 29 9 53q10 26 28.5 43.5t43 27t52.5 9.5z" />
+<glyph unicode="Ὸ" horiz-adv-x="885" d="M163 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM265 347q0 -63 16 -114.5t45.5 -87.5t72 -55.5t95.5 -19.5 t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5zM6 704l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Ό" horiz-adv-x="838" d="M172 635l-179 -127l-40 52l166 144zM116 347q0 89 26.5 157t72 113.5t106 68.5t128.5 23q67 0 126.5 -23t104.5 -68.5t71.5 -113.5t26.5 -157t-26.5 -157t-71.5 -113.5t-104.5 -68.5t-126.5 -23q-68 0 -128.5 23t-106 68.5t-72 113.5t-26.5 157zM218 347q0 -63 16 -114.5 t45.5 -87.5t72 -55.5t95.5 -19.5t95 19.5t71.5 55.5t45.5 87.5t16 114.5t-16 114.5t-45.5 87.5t-71.5 55.5t-95 19.5t-95.5 -19.5t-72 -55.5t-45.5 -87.5t-16 -114.5z" />
+<glyph unicode="Ὼ" horiz-adv-x="887" d="M493 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM6 704l166 -144l-40 -52l-179 127z" />
+<glyph unicode="Ώ" horiz-adv-x="841" d="M172 635l-179 -127l-40 52l166 144zM447 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5 t-45 -79.5t-16 -106q0 -54 11.5 -98.5t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5z" />
+<glyph unicode="ῼ" horiz-adv-x="1065" d="M394 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM1026 -10q-86 2 -122 37t-36 109v384h93v-369q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="´" horiz-adv-x="380" d="M331 707l-179 -127l-40 52l166 144z" />
+<glyph unicode="῾" horiz-adv-x="380" d="M222 575q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5z" />
+<glyph unicode=" " horiz-adv-x="481" />
+<glyph unicode=" " horiz-adv-x="962" />
+<glyph unicode=" " horiz-adv-x="481" />
+<glyph unicode=" " horiz-adv-x="962" />
+<glyph unicode=" " horiz-adv-x="320" />
+<glyph unicode=" " horiz-adv-x="240" />
+<glyph unicode=" " horiz-adv-x="160" />
+<glyph unicode=" " horiz-adv-x="160" />
+<glyph unicode=" " horiz-adv-x="120" />
+<glyph unicode=" " horiz-adv-x="192" />
+<glyph unicode=" " horiz-adv-x="53" />
<glyph unicode="‐" horiz-adv-x="303" d="M28 328h247v-87h-247v87z" />
<glyph unicode="‑" horiz-adv-x="303" d="M28 328h247v-87h-247v87z" />
<glyph unicode="–" horiz-adv-x="500" d="M0 343h500v-79h-500v79z" />
<glyph unicode="—" horiz-adv-x="1000" d="M0 343h1000v-79h-1000v79z" />
+<glyph unicode="―" horiz-adv-x="1000" d="M0 343h1000v-79h-1000v79z" />
<glyph unicode="‘" horiz-adv-x="239" d="M62 520v22q0 10 1 20q4 52 23 103t46 95l72 -23q-21 -44 -31.5 -89t-10.5 -84q0 -10 0.5 -21.5t1.5 -22.5h-102z" />
<glyph unicode="’" horiz-adv-x="239" d="M177 750v-22q0 -10 -1 -20q-4 -52 -23 -102.5t-46 -95.5l-72 23q21 45 31.5 89.5t10.5 83.5q0 10 -0.5 21.5t-1.5 22.5h102z" />
+<glyph unicode="‚" horiz-adv-x="239" d="M177 114v-22q0 -10 -1 -20q-4 -52 -23 -103t-46 -95l-72 23q21 44 31.5 89t10.5 84q0 10 -0.5 21.5t-1.5 22.5h102z" />
<glyph unicode="“" horiz-adv-x="421" d="M62 520v22q0 10 1 20q4 52 23 103t46 95l72 -23q-21 -44 -31.5 -89t-10.5 -84q0 -10 0.5 -21.5t1.5 -22.5h-102zM244 520v22q0 10 1 20q4 52 23 103t46 95l72 -23q-21 -44 -31.5 -89t-10.5 -84q0 -10 0.5 -21.5t1.5 -22.5h-102z" />
<glyph unicode="”" horiz-adv-x="421" d="M177 750v-22q0 -10 -1 -20q-4 -52 -23 -102.5t-46 -95.5l-72 23q21 45 31.5 89.5t10.5 83.5q0 10 -0.5 21.5t-1.5 22.5h102zM359 750v-22q0 -10 -1 -20q-4 -52 -23 -102.5t-46 -95.5l-72 23q21 45 31.5 89.5t10.5 83.5q0 10 -0.5 21.5t-1.5 22.5h102z" />
+<glyph unicode="„" horiz-adv-x="421" d="M177 114v-22q0 -10 -1 -20q-4 -52 -23 -103t-46 -95l-72 23q21 44 31.5 89t10.5 84q0 10 -0.5 21.5t-1.5 22.5h102zM359 114v-22q0 -10 -1 -20q-4 -52 -23 -103t-46 -95l-72 23q21 44 31.5 89t10.5 84q0 10 -0.5 21.5t-1.5 22.5h102z" />
+<glyph unicode="†" horiz-adv-x="480" d="M280 399v-255q0 -84 -4 -152.5t-13 -136.5h-46q-9 68 -13 136.5t-4 152.5v255h-159v77h159v217h80v-217h159v-77h-159z" />
+<glyph unicode="‡" horiz-adv-x="480" d="M280 134q0 -81 -4 -146.5t-13 -132.5h-46q-9 67 -13 132.5t-4 146.5h-159v77h159v188h-159v77h159v217h80v-217h159v-77h-159v-188h159v-77h-159z" />
<glyph unicode="•" horiz-adv-x="364" d="M310 353q0 -26 -9 -49t-25.5 -40t-40 -27.5t-53.5 -10.5t-53.5 10.5t-40 27.5t-25.5 40t-9 49q0 25 9 48.5t25.5 40.5t40 27.5t53.5 10.5t53.5 -10.5t40 -27.5t25.5 -40.5t9 -48.5z" />
<glyph unicode="…" horiz-adv-x="1000" d="M234 54q0 -27 -18 -47t-49 -20t-49 20t-18 47t18 47t49 20t49 -20t18 -47zM567 54q0 -27 -18 -47t-49 -20t-49 20t-18 47t18 47t49 20t49 -20t18 -47zM900 54q0 -27 -18 -47t-49 -20t-49 20t-18 47t18 47t49 20t49 -20t18 -47z" />
-<glyph unicode=" " horiz-adv-x="156" />
-<glyph unicode=" " horiz-adv-x="195" />
-<glyph unicode="€" d="M139 472q23 117 91 175.5t174 58.5q44 0 73 -5.5t58 -14.5l-20 -80q-24 9 -52.5 14.5t-58.5 5.5q-38 0 -66.5 -11t-49 -31t-33.5 -48.5t-20 -63.5h233l-14 -72h-229q-1 -13 -1 -26v-27v-25q0 -12 1 -23h209l-14 -72h-187q17 -89 61.5 -124t111.5 -35q42 0 72.5 8t54.5 19 l20 -79q-17 -9 -59 -19t-93 -10q-117 0 -181 63.5t-83 176.5h-90v72h82q-1 11 -1 23v25v27q0 13 1 26h-82v72h92z" />
+<glyph unicode=" " horiz-adv-x="192" />
+<glyph unicode="‰" horiz-adv-x="1231" d="M52 524q0 45 12 79t33.5 57.5t50.5 35.5t63 12t63 -12t50.5 -35.5t33.5 -57.5t12 -79t-12 -79t-33.5 -57.5t-50.5 -35.5t-63 -12t-63 12t-50.5 35.5t-33.5 57.5t-12 79zM292 524q0 54 -21 84.5t-60 30.5t-60 -30.5t-21 -84.5t21 -84.5t60 -30.5t60 30.5t21 84.5zM492 169 q0 45 12 79t33.5 57.5t50.5 35.5t63 12t63 -12t50.5 -35.5t33.5 -57.5t12 -79t-12 -79t-33.5 -57.5t-50.5 -35.5t-63 -12t-63 12t-50.5 35.5t-33.5 57.5t-12 79zM732 169q0 54 -21 84.5t-60 30.5t-60 -30.5t-21 -84.5t21 -84.5t60 -30.5t60 30.5t21 84.5zM672 693l-391 -693 h-91l391 693h91zM861 169q0 45 12 79t33.5 57.5t50.5 35.5t63 12t63 -12t50.5 -35.5t33.5 -57.5t12 -79t-12 -79t-33.5 -57.5t-50.5 -35.5t-63 -12t-63 12t-50.5 35.5t-33.5 57.5t-12 79zM1101 169q0 54 -21 84.5t-60 30.5t-60 -30.5t-21 -84.5t21 -84.5t60 -30.5t60 30.5 t21 84.5z" />
+<glyph unicode="‹" horiz-adv-x="295" d="M32 284l156 221l65 -35l-111 -186l111 -186l-65 -35z" />
+<glyph unicode="›" horiz-adv-x="295" d="M107 63l-65 35l111 186l-111 186l65 35l156 -221z" />
+<glyph unicode="⁄" horiz-adv-x="152" d="M313 693l-391 -693h-87l391 693h87z" />
+<glyph unicode=" " horiz-adv-x="240" />
+<glyph unicode="⁰" horiz-adv-x="363" d="M31 508q0 97 40 149t110 52t110 -52t40 -149t-40 -149t-110 -52t-110 52t-40 149zM257 508q0 28 -3.5 53.5t-12.5 44.5t-23.5 30t-36.5 11t-36.5 -11t-23.5 -30t-13 -44.5t-4 -53.5q0 -29 4 -54t13 -44t23.5 -30t36.5 -11t36.5 11t23.5 30t12.5 44t3.5 54z" />
+<glyph unicode="⁴" horiz-adv-x="363" d="M287 701v-234h50v-59h-50v-93h-68v93h-193v46q14 25 36 57t48 66t55 66.5t58 57.5h64zM219 618q-31 -32 -63 -72.5t-55 -78.5h118v151z" />
+<glyph unicode="⁵" horiz-adv-x="363" d="M320 429q0 -53 -40 -87.5t-124 -34.5q-32 0 -64.5 7t-49.5 16l15 60q15 -6 40.5 -13.5t56.5 -7.5q53 0 73.5 17.5t20.5 40.5q0 17 -8.5 31t-29 23.5t-54.5 15t-86 5.5q7 50 11.5 101t6.5 98h216v-63h-156q-2 -20 -3 -40t-5 -41q94 -5 137 -37.5t43 -90.5z" />
+<glyph unicode="⁶" horiz-adv-x="363" d="M39 471q0 55 18 98t52 72.5t81.5 45t107.5 16.5l6 -61q-33 -1 -63.5 -7.5t-55.5 -18.5t-42.5 -30t-24.5 -41q20 8 38.5 11t34.5 3q38 0 65 -10t43.5 -27.5t24 -39.5t7.5 -46q0 -22 -8 -45t-25.5 -41.5t-44 -30.5t-62.5 -12q-75 0 -113.5 43.5t-38.5 120.5zM185 501 q-20 0 -39.5 -3.5t-37.5 -9.5v-11q0 -47 16 -77q18 -34 66 -34q19 0 32 6.5t21 17t12 22.5t4 23q0 32 -18 49t-56 17z" />
+<glyph unicode="⁷" horiz-adv-x="363" d="M97 315q4 42 17 87.5t32.5 88.5t43 80.5t47.5 64.5h-198v65h286v-55q-21 -21 -46 -56.5t-47.5 -80t-39.5 -94.5t-21 -100h-74z" />
+<glyph unicode="⁸" horiz-adv-x="363" d="M328 420q0 -50 -38 -81.5t-110 -31.5q-42 0 -70 10.5t-45 26.5t-24 35.5t-7 37.5q0 28 18 52.5t42 39.5q-23 17 -36.5 40.5t-13.5 49.5q0 22 9.5 42t27.5 35t43 24t56 9q36 0 62 -10t42.5 -25t24 -33.5t7.5 -36.5q0 -28 -14.5 -50.5t-37.5 -38.5q36 -17 49 -40t15 -55z M104 417q0 -8 4 -17t13 -16.5t23.5 -12.5t35.5 -5q41 0 58.5 15.5t17.5 35.5q0 28 -28.5 43.5t-79.5 27.5q-20 -15 -32 -32t-12 -39zM247 605q0 13 -15 29t-52 16t-52 -16t-15 -31q0 -20 21 -39t68 -28q20 14 32.5 30t12.5 39z" />
+<glyph unicode="⁹" horiz-adv-x="363" d="M325 545q0 -112 -69 -172t-199 -60l-2 61q73 2 125 26t66 71q-20 -8 -38.5 -11t-34.5 -3q-38 0 -65 10t-43.5 27.5t-24 39.5t-7.5 46q0 22 8 44.5t25.5 41.5t44 31t62.5 12q75 0 113.5 -43.5t38.5 -120.5zM179 516q20 0 39.5 2.5t37.5 8.5v11q0 47 -16 78q-18 34 -66 34 q-19 0 -32 -6.5t-21.5 -17t-12 -22.5t-3.5 -23q0 -65 74 -65z" />
+<glyph unicode="₀" horiz-adv-x="363" d="M31 194q0 97 40 149t110 52t110 -52t40 -149t-40 -149t-110 -52t-110 52t-40 149zM257 194q0 28 -3.5 53.5t-12.5 44.5t-23.5 30t-36.5 11t-36.5 -11t-23.5 -30t-13 -44.5t-4 -53.5q0 -29 4 -54t13 -44t23.5 -30t36.5 -11t36.5 11t23.5 30t12.5 44t3.5 54z" />
+<glyph unicode="₁" horiz-adv-x="363" d="M52 307q38 13 75 33.5t64 46.5h49v-386h-70v294q-22 -14 -50.5 -25t-48.5 -17z" />
+<glyph unicode="₂" horiz-adv-x="363" d="M298 284q0 -21 -9.5 -41t-25.5 -39.5t-37 -39.5l-45 -40q-17 -14 -33.5 -30.5t-19.5 -29.5h186v-63h-266q-1 9 -1 18q0 22 5 41q8 25 22.5 46t33.5 38l40 36q34 29 55.5 53.5t21.5 48.5q0 26 -16.5 38t-45.5 12q-17 0 -32 -4.5t-27 -11t-21.5 -13t-14.5 -10.5l-36 49 q17 18 51.5 35.5t79.5 17.5q69 0 102 -29t33 -82z" />
+<glyph unicode="₃" horiz-adv-x="363" d="M146 55q53 0 73 16.5t20 42.5q0 17 -9 29t-24.5 19.5t-35.5 11t-41 3.5h-19v57h25q14 0 29.5 2.5t28 8.5t20.5 16.5t8 25.5q0 25 -18.5 35.5t-47.5 10.5q-27 0 -50 -9.5t-40 -17.5l-25 55q16 11 49.5 22.5t67.5 11.5q73 0 103.5 -29.5t30.5 -75.5q0 -49 -55 -80 q35 -11 55.5 -36.5t20.5 -60.5q0 -26 -9 -47.5t-29 -38t-51.5 -25.5t-75.5 -9q-31 0 -63 7t-50 16l15 60q22 -8 46.5 -14.5t50.5 -6.5z" />
+<glyph unicode="₄" horiz-adv-x="363" d="M287 387v-234h50v-59h-50v-93h-68v93h-193v46q14 25 36 57t48 66t55 66.5t58 57.5h64zM219 304q-31 -32 -63 -72.5t-55 -78.5h118v151z" />
+<glyph unicode="₅" horiz-adv-x="363" d="M320 115q0 -53 -40 -87.5t-124 -34.5q-32 0 -64.5 7t-49.5 16l15 60q15 -6 40.5 -13.5t56.5 -7.5q53 0 73.5 17.5t20.5 40.5q0 17 -8.5 31t-29 23.5t-54.5 15t-86 5.5q7 50 11.5 101t6.5 98h216v-63h-156q-2 -20 -3 -40t-5 -41q94 -5 137 -37.5t43 -90.5z" />
+<glyph unicode="₆" horiz-adv-x="363" d="M39 157q0 55 18 98t52 72.5t81.5 45t107.5 16.5l6 -61q-33 -1 -63.5 -7.5t-55.5 -18.5t-42.5 -30t-24.5 -41q20 8 38.5 11t34.5 3q38 0 65 -10t43.5 -27.5t24 -39.5t7.5 -46q0 -22 -8 -45t-25.5 -41.5t-44 -30.5t-62.5 -12q-75 0 -113.5 43.5t-38.5 120.5zM185 187 q-20 0 -39.5 -3.5t-37.5 -9.5v-11q0 -47 16 -77q18 -34 66 -34q19 0 32 6.5t21 17t12 22.5t4 23q0 32 -18 49t-56 17z" />
+<glyph unicode="₇" horiz-adv-x="363" d="M97 1q4 42 17 87.5t32.5 88.5t43 80.5t47.5 64.5h-198v65h286v-55q-21 -21 -46 -56.5t-47.5 -80t-39.5 -94.5t-21 -100h-74z" />
+<glyph unicode="₈" horiz-adv-x="363" d="M328 106q0 -50 -38 -81.5t-110 -31.5q-42 0 -70 10.5t-45 26.5t-24 35.5t-7 37.5q0 28 18 52.5t42 39.5q-23 17 -36.5 40.5t-13.5 49.5q0 22 9.5 42t27.5 35t43 24t56 9q36 0 62 -10t42.5 -25t24 -33.5t7.5 -36.5q0 -28 -14.5 -50.5t-37.5 -38.5q36 -17 49 -40t15 -55z M104 103q0 -8 4 -17t13 -16.5t23.5 -12.5t35.5 -5q41 0 58.5 15.5t17.5 35.5q0 28 -28.5 43.5t-79.5 27.5q-20 -15 -32 -32t-12 -39zM247 291q0 13 -15 29t-52 16t-52 -16t-15 -31q0 -20 21 -39t68 -28q20 14 32.5 30t12.5 39z" />
+<glyph unicode="₉" horiz-adv-x="363" d="M325 231q0 -112 -69 -172t-199 -60l-2 61q73 2 125 26t66 71q-20 -8 -38.5 -11t-34.5 -3q-38 0 -65 10t-43.5 27.5t-24 39.5t-7.5 46q0 22 8 44.5t25.5 41.5t44 31t62.5 12q75 0 113.5 -43.5t38.5 -120.5zM179 202q20 0 39.5 2.5t37.5 8.5v11q0 47 -16 78q-18 34 -66 34 q-19 0 -32 -6.5t-21.5 -17t-12 -22.5t-3.5 -23q0 -65 74 -65z" />
+<glyph unicode="€" horiz-adv-x="568" d="M139 472q23 117 91 175.5t174 58.5q44 0 73 -5.5t58 -14.5l-20 -80q-24 9 -52.5 14.5t-58.5 5.5q-38 0 -66.5 -11t-49 -31t-33.5 -48.5t-20 -63.5h233l-14 -72h-229q-1 -13 -1 -26v-27v-25q0 -12 1 -23h209l-14 -72h-187q17 -89 61.5 -124t111.5 -35q42 0 72.5 8t54.5 19 l20 -79q-17 -9 -59 -19t-93 -10q-117 0 -181 63.5t-83 176.5h-90v72h82q-1 11 -1 23v25v27q0 13 1 26h-82v72h92z" />
+<glyph unicode="₮" horiz-adv-x="568" d="M527 693v-80h-197v-153l116 55l30 -63l-146 -69v-115l116 55l30 -63l-146 -69v-191h-91v153l-116 -54l-30 63l146 68v115l-116 -54l-30 63l146 68v191h-197v80h485z" />
+<glyph unicode="₴" horiz-adv-x="568" d="M39 401v67h341q14 25 14 56q0 26 -10.5 45.5t-27.5 32.5t-38.5 19.5t-43.5 6.5q-51 0 -85.5 -9.5t-58.5 -18.5l-18 81q42 13 81.5 20t80.5 7q59 0 99.5 -16.5t65 -42.5t35.5 -59.5t11 -66.5q0 -31 -9 -55h52v-67h-91q-23 -21 -55 -41l-71 -44l-44 -25h261v-67h-338 q-16 -25 -16 -58q0 -47 31.5 -74t103.5 -27q29 0 52.5 3t43 8t37 11.5t34.5 14.5l26 -74q-46 -25 -96.5 -33.5t-98.5 -8.5q-66 0 -109 14.5t-69 38.5t-36.5 55t-10.5 65q0 38 10 65h-53v67h93q23 22 59 43l81 46l37 21h-270z" />
+<glyph unicode="ℓ" horiz-adv-x="454" d="M110 255v289q0 69 13.5 114t36.5 71t52.5 36.5t62.5 10.5q42 0 68.5 -16t41.5 -40.5t20 -55t5 -59.5q0 -53 -15 -101.5t-42 -93t-65.5 -86t-85.5 -80.5v-44q0 -69 23.5 -101.5t74.5 -32.5q32 0 53.5 12t38.5 25l37 -69q-25 -22 -61 -35.5t-84 -13.5q-50 0 -83 15 t-53.5 40t-29 58t-8.5 69v8l-66 -47l-36 53zM202 327q63 58 99.5 126t36.5 153q0 17 -2 33.5t-9 30t-19 22t-31 8.5q-15 0 -28.5 -6t-24 -22.5t-16.5 -46t-6 -77.5v-221z" />
+<glyph unicode="№" horiz-adv-x="1134" d="M531 0l-47 84l-57 96l-63 102l-65 100l-63 92q-30 42 -56 74v-548h-92v693h87q44 -50 93.5 -117t97.5 -139l90 -141l73 -122v519h93v-693h-91zM1076 518q0 -43 -13.5 -78t-37.5 -60t-57 -38.5t-72 -13.5t-72 13.5t-57 38.5t-37.5 60t-13.5 78t13.5 78.5t37.5 60t57 38 t72 13.5t72 -13.5t57 -38t37.5 -60t13.5 -78.5zM1002 518q0 56 -27.5 89.5t-78.5 33.5q-50 0 -78 -33.5t-28 -89.5q0 -55 27.5 -89t78.5 -34t78.5 34t27.5 89zM726 227h340v-77h-340v77z" />
<glyph unicode="™" horiz-adv-x="763" d="M304 693v-61h-105v-272h-69v272h-105v61h279zM684 693q8 -51 14 -130.5t14 -202.5h-70q-1 25 -2 53.5t-2.5 57t-3.5 56.5t-4 52q-11 -19 -24 -45l-26 -50l-24 -47q-11 -22 -17 -35h-49q-6 13 -18 35l-24 47l-26 50l-23 45q-2 -24 -4 -52t-3.5 -56.5t-2.5 -57t-2 -53.5 h-69q8 123 14 202.5t14 130.5h66l20 -41l26 -52l28 -57l29 -56l28 56l29 57l26 52l20 41h66z" />
+<glyph unicode="Ω" horiz-adv-x="788" d="M394 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5z" />
+<glyph unicode="℮" horiz-adv-x="936" d="M219 337q-5 0 -5 -4v-197q0 -13 9 -22q48 -51 110 -79t135 -28q79 0 145 32.5t114 86.5h57q-26 -32 -60.5 -57.5t-75.5 -43.5t-87 -28t-94 -10q-83 0 -156 28.5t-127 77t-85.5 114t-31.5 140.5t31.5 140.5t85.5 114.5t127 77.5t156 28.5t156.5 -28.5t128 -77.5t86 -114.5 t31.5 -140.5v-10h-650zM721 560q0 13 -9 24q-48 48 -110 75t-134 27q-71 0 -134 -29t-110 -77q-5 -4 -7.5 -10.5t-2.5 -13.5v-193q0 -7 5 -7h498q4 0 4 7v197z" />
+<glyph unicode="⅓" horiz-adv-x="878" d="M52 621q38 13 75 33.5t64 46.5h49v-386h-70v294q-22 -14 -50.5 -25t-48.5 -17zM655 693l-391 -693h-87l391 693h87zM661 56q53 0 73 16.5t20 42.5q0 17 -9 29t-24.5 19.5t-35.5 11t-41 3.5h-19v57h25q14 0 29.5 2.5t28 8.5t20.5 16.5t8 25.5q0 25 -18.5 35.5t-47.5 10.5 q-27 0 -50 -9.5t-40 -17.5l-25 55q16 11 49.5 22.5t67.5 11.5q73 0 103.5 -29.5t30.5 -75.5q0 -49 -55 -80q35 -11 55.5 -36.5t20.5 -60.5q0 -26 -9 -47.5t-29 -38t-51.5 -25.5t-75.5 -9q-31 0 -63 7t-50 16l15 60q22 -8 46.5 -14.5t50.5 -6.5z" />
+<glyph unicode="⅔" horiz-adv-x="878" d="M298 598q0 -21 -9.5 -41t-25.5 -39.5t-37 -39.5l-45 -40q-17 -14 -33.5 -30.5t-19.5 -29.5h186v-63h-266q-1 9 -1 18q0 22 5 41q8 25 22.5 46t33.5 38l40 36q34 29 55.5 53.5t21.5 48.5q0 26 -16.5 38t-45.5 12q-17 0 -32 -4.5t-27 -11t-21.5 -13t-14.5 -10.5l-36 49 q17 18 51.5 35.5t79.5 17.5q69 0 102 -29t33 -82zM676 693l-391 -693h-87l391 693h87zM661 56q53 0 73 16.5t20 42.5q0 17 -9 29t-24.5 19.5t-35.5 11t-41 3.5h-19v57h25q14 0 29.5 2.5t28 8.5t20.5 16.5t8 25.5q0 25 -18.5 35.5t-47.5 10.5q-27 0 -50 -9.5t-40 -17.5 l-25 55q16 11 49.5 22.5t67.5 11.5q73 0 103.5 -29.5t30.5 -75.5q0 -49 -55 -80q35 -11 55.5 -36.5t20.5 -60.5q0 -26 -9 -47.5t-29 -38t-51.5 -25.5t-75.5 -9q-31 0 -63 7t-50 16l15 60q22 -8 46.5 -14.5t50.5 -6.5z" />
+<glyph unicode="⅕" horiz-adv-x="878" d="M52 621q38 13 75 33.5t64 46.5h49v-386h-70v294q-22 -14 -50.5 -25t-48.5 -17zM655 693l-391 -693h-87l391 693h87zM835 116q0 -53 -40 -87.5t-124 -34.5q-32 0 -64.5 7t-49.5 16l15 60q15 -6 40.5 -13.5t56.5 -7.5q53 0 73.5 17.5t20.5 40.5q0 17 -8.5 31t-29 23.5 t-54.5 15t-86 5.5q7 50 11.5 101t6.5 98h216v-63h-156q-2 -20 -3 -40t-5 -41q94 -5 137 -37.5t43 -90.5z" />
+<glyph unicode="⅖" horiz-adv-x="878" d="M298 598q0 -21 -9.5 -41t-25.5 -39.5t-37 -39.5l-45 -40q-17 -14 -33.5 -30.5t-19.5 -29.5h186v-63h-266q-1 9 -1 18q0 22 5 41q8 25 22.5 46t33.5 38l40 36q34 29 55.5 53.5t21.5 48.5q0 26 -16.5 38t-45.5 12q-17 0 -32 -4.5t-27 -11t-21.5 -13t-14.5 -10.5l-36 49 q17 18 51.5 35.5t79.5 17.5q69 0 102 -29t33 -82zM691 693l-391 -693h-87l391 693h87zM835 116q0 -53 -40 -87.5t-124 -34.5q-32 0 -64.5 7t-49.5 16l15 60q15 -6 40.5 -13.5t56.5 -7.5q53 0 73.5 17.5t20.5 40.5q0 17 -8.5 31t-29 23.5t-54.5 15t-86 5.5q7 50 11.5 101 t6.5 98h216v-63h-156q-2 -20 -3 -40t-5 -41q94 -5 137 -37.5t43 -90.5z" />
+<glyph unicode="⅗" horiz-adv-x="878" d="M146 369q53 0 73 16.5t20 42.5q0 17 -9 29t-24.5 19.5t-35.5 11t-41 3.5h-19v57h25q14 0 29.5 2.5t28 8.5t20.5 16.5t8 25.5q0 25 -18.5 35.5t-47.5 10.5q-27 0 -50 -9.5t-40 -17.5l-25 55q16 11 49.5 22.5t67.5 11.5q73 0 103.5 -29.5t30.5 -75.5q0 -49 -55 -80 q35 -11 55.5 -36.5t20.5 -60.5q0 -26 -9 -47.5t-29 -38t-51.5 -25.5t-75.5 -9q-31 0 -63 7t-50 16l15 60q22 -8 46.5 -14.5t50.5 -6.5zM676 693l-391 -693h-87l391 693h87zM835 116q0 -53 -40 -87.5t-124 -34.5q-32 0 -64.5 7t-49.5 16l15 60q15 -6 40.5 -13.5t56.5 -7.5 q53 0 73.5 17.5t20.5 40.5q0 17 -8.5 31t-29 23.5t-54.5 15t-86 5.5q7 50 11.5 101t6.5 98h216v-63h-156q-2 -20 -3 -40t-5 -41q94 -5 137 -37.5t43 -90.5z" />
+<glyph unicode="⅘" horiz-adv-x="878" d="M287 701v-234h50v-59h-50v-93h-68v93h-193v46q14 25 36 57t48 66t55 66.5t58 57.5h64zM219 618q-31 -32 -63 -72.5t-55 -78.5h118v151zM686 693l-391 -693h-87l391 693h87zM835 116q0 -53 -40 -87.5t-124 -34.5q-32 0 -64.5 7t-49.5 16l15 60q15 -6 40.5 -13.5t56.5 -7.5 q53 0 73.5 17.5t20.5 40.5q0 17 -8.5 31t-29 23.5t-54.5 15t-86 5.5q7 50 11.5 101t6.5 98h216v-63h-156q-2 -20 -3 -40t-5 -41q94 -5 137 -37.5t43 -90.5z" />
+<glyph unicode="⅙" horiz-adv-x="878" d="M52 621q38 13 75 33.5t64 46.5h49v-386h-70v294q-22 -14 -50.5 -25t-48.5 -17zM676 693l-391 -693h-87l391 693h87zM554 158q0 55 18 98t52 72.5t81.5 45t107.5 16.5l6 -61q-33 -1 -63.5 -7.5t-55.5 -18.5t-42.5 -30t-24.5 -41q20 8 38.5 11t34.5 3q38 0 65 -10 t43.5 -27.5t24 -39.5t7.5 -46q0 -22 -8 -45t-25.5 -41.5t-44 -30.5t-62.5 -12q-75 0 -113.5 43.5t-38.5 120.5zM700 188q-20 0 -39.5 -3.5t-37.5 -9.5v-11q0 -47 16 -77q18 -34 66 -34q19 0 32 6.5t21 17t12 22.5t4 23q0 32 -18 49t-56 17z" />
+<glyph unicode="⅚" horiz-adv-x="878" d="M320 429q0 -53 -40 -87.5t-124 -34.5q-32 0 -64.5 7t-49.5 16l15 60q15 -6 40.5 -13.5t56.5 -7.5q53 0 73.5 17.5t20.5 40.5q0 17 -8.5 31t-29 23.5t-54.5 15t-86 5.5q7 50 11.5 101t6.5 98h216v-63h-156q-2 -20 -3 -40t-5 -41q94 -5 137 -37.5t43 -90.5zM687 693 l-391 -693h-87l391 693h87zM554 158q0 55 18 98t52 72.5t81.5 45t107.5 16.5l6 -61q-33 -1 -63.5 -7.5t-55.5 -18.5t-42.5 -30t-24.5 -41q20 8 38.5 11t34.5 3q38 0 65 -10t43.5 -27.5t24 -39.5t7.5 -46q0 -22 -8 -45t-25.5 -41.5t-44 -30.5t-62.5 -12q-75 0 -113.5 43.5 t-38.5 120.5zM700 188q-20 0 -39.5 -3.5t-37.5 -9.5v-11q0 -47 16 -77q18 -34 66 -34q19 0 32 6.5t21 17t12 22.5t4 23q0 32 -18 49t-56 17z" />
+<glyph unicode="⅛" horiz-adv-x="878" d="M52 621q38 13 75 33.5t64 46.5h49v-386h-70v294q-22 -14 -50.5 -25t-48.5 -17zM655 693l-391 -693h-87l391 693h87zM843 107q0 -50 -38 -81.5t-110 -31.5q-42 0 -70 10.5t-45 26.5t-24 35.5t-7 37.5q0 28 18 52.5t42 39.5q-23 17 -36.5 40.5t-13.5 49.5q0 22 9.5 42 t27.5 35t43 24t56 9q36 0 62 -10t42.5 -25t24 -33.5t7.5 -36.5q0 -28 -14.5 -50.5t-37.5 -38.5q36 -17 49 -40t15 -55zM619 104q0 -8 4 -17t13 -16.5t23.5 -12.5t35.5 -5q41 0 58.5 15.5t17.5 35.5q0 28 -28.5 43.5t-79.5 27.5q-20 -15 -32 -32t-12 -39zM762 292 q0 13 -15 29t-52 16t-52 -16t-15 -31q0 -20 21 -39t68 -28q20 14 32.5 30t12.5 39z" />
+<glyph unicode="⅜" horiz-adv-x="878" d="M146 369q53 0 73 16.5t20 42.5q0 17 -9 29t-24.5 19.5t-35.5 11t-41 3.5h-19v57h25q14 0 29.5 2.5t28 8.5t20.5 16.5t8 25.5q0 25 -18.5 35.5t-47.5 10.5q-27 0 -50 -9.5t-40 -17.5l-25 55q16 11 49.5 22.5t67.5 11.5q73 0 103.5 -29.5t30.5 -75.5q0 -49 -55 -80 q35 -11 55.5 -36.5t20.5 -60.5q0 -26 -9 -47.5t-29 -38t-51.5 -25.5t-75.5 -9q-31 0 -63 7t-50 16l15 60q22 -8 46.5 -14.5t50.5 -6.5zM676 693l-391 -693h-87l391 693h87zM843 107q0 -50 -38 -81.5t-110 -31.5q-42 0 -70 10.5t-45 26.5t-24 35.5t-7 37.5q0 28 18 52.5 t42 39.5q-23 17 -36.5 40.5t-13.5 49.5q0 22 9.5 42t27.5 35t43 24t56 9q36 0 62 -10t42.5 -25t24 -33.5t7.5 -36.5q0 -28 -14.5 -50.5t-37.5 -38.5q36 -17 49 -40t15 -55zM619 104q0 -8 4 -17t13 -16.5t23.5 -12.5t35.5 -5q41 0 58.5 15.5t17.5 35.5q0 28 -28.5 43.5 t-79.5 27.5q-20 -15 -32 -32t-12 -39zM762 292q0 13 -15 29t-52 16t-52 -16t-15 -31q0 -20 21 -39t68 -28q20 14 32.5 30t12.5 39z" />
+<glyph unicode="⅝" horiz-adv-x="878" d="M320 429q0 -53 -40 -87.5t-124 -34.5q-32 0 -64.5 7t-49.5 16l15 60q15 -6 40.5 -13.5t56.5 -7.5q53 0 73.5 17.5t20.5 40.5q0 17 -8.5 31t-29 23.5t-54.5 15t-86 5.5q7 50 11.5 101t6.5 98h216v-63h-156q-2 -20 -3 -40t-5 -41q94 -5 137 -37.5t43 -90.5zM676 693 l-391 -693h-87l391 693h87zM843 107q0 -50 -38 -81.5t-110 -31.5q-42 0 -70 10.5t-45 26.5t-24 35.5t-7 37.5q0 28 18 52.5t42 39.5q-23 17 -36.5 40.5t-13.5 49.5q0 22 9.5 42t27.5 35t43 24t56 9q36 0 62 -10t42.5 -25t24 -33.5t7.5 -36.5q0 -28 -14.5 -50.5t-37.5 -38.5 q36 -17 49 -40t15 -55zM619 104q0 -8 4 -17t13 -16.5t23.5 -12.5t35.5 -5q41 0 58.5 15.5t17.5 35.5q0 28 -28.5 43.5t-79.5 27.5q-20 -15 -32 -32t-12 -39zM762 292q0 13 -15 29t-52 16t-52 -16t-15 -31q0 -20 21 -39t68 -28q20 14 32.5 30t12.5 39z" />
+<glyph unicode="⅞" horiz-adv-x="878" d="M97 315q4 42 17 87.5t32.5 88.5t43 80.5t47.5 64.5h-198v65h286v-55q-21 -21 -46 -56.5t-47.5 -80t-39.5 -94.5t-21 -100h-74zM635 693l-391 -693h-87l391 693h87zM843 107q0 -50 -38 -81.5t-110 -31.5q-42 0 -70 10.5t-45 26.5t-24 35.5t-7 37.5q0 28 18 52.5t42 39.5 q-23 17 -36.5 40.5t-13.5 49.5q0 22 9.5 42t27.5 35t43 24t56 9q36 0 62 -10t42.5 -25t24 -33.5t7.5 -36.5q0 -28 -14.5 -50.5t-37.5 -38.5q36 -17 49 -40t15 -55zM619 104q0 -8 4 -17t13 -16.5t23.5 -12.5t35.5 -5q41 0 58.5 15.5t17.5 35.5q0 28 -28.5 43.5t-79.5 27.5 q-20 -15 -32 -32t-12 -39zM762 292q0 13 -15 29t-52 16t-52 -16t-15 -31q0 -20 21 -39t68 -28q20 14 32.5 30t12.5 39z" />
+<glyph unicode="∂" horiz-adv-x="589" d="M227 694q-31 0 -63 -6t-54 -16l-14 79q32 13 72 19t75 6q87 0 143.5 -32t89.5 -85t46 -123t13 -145q0 -70 -13.5 -142t-46 -130t-86 -95t-132.5 -37q-47 0 -86 15t-67.5 44t-44.5 71t-16 96q0 64 17.5 117t50.5 90.5t80.5 58t108.5 20.5q50 0 86 -16.5t53 -30.5 q-4 55 -16.5 99.5t-37.5 76t-64 49t-94 17.5zM305 419q-47 0 -79 -17.5t-52 -46t-29 -64.5t-9 -74q0 -77 36.5 -112.5t91.5 -35.5q52 0 85.5 29.5t53 74t27.5 97t10 97.5q-31 30 -66.5 41t-68.5 11z" />
+<glyph unicode="∆" horiz-adv-x="655" d="M10 0q34 108 66.5 199t65.5 173.5t68 160.5l73 160h89l74 -160l67 -160.5t65.5 -173.5t66.5 -199h-635zM325 582q-22 -45 -72 -166.5t-120 -333.5h383q-70 212 -120 333.5t-71 166.5z" />
+<glyph unicode="∏" horiz-adv-x="701" d="M613 693v-802h-97v718h-331v-718h-97v802h525z" />
+<glyph unicode="∑" horiz-adv-x="519" d="M358 304l-121 -166q-59 -83 -104 -164h367v-83h-479v67q40 78 101 167l128 181l-63 90l-62 88l-56 80q-26 37 -44 66v63h475v-84h-354q15 -25 39 -61l53 -76l60 -84z" />
+<glyph unicode="−" horiz-adv-x="568" d="M55 334h458v-79h-458v79z" />
+<glyph unicode="∕" horiz-adv-x="152" d="M313 693l-391 -693h-87l391 693h87z" />
+<glyph unicode="∙" horiz-adv-x="250" d="M192 294q0 -27 -18 -47t-49 -20t-49 20t-18 47t18 47t49 20t49 -20t18 -47z" />
+<glyph unicode="√" horiz-adv-x="568" d="M14 346l162 52l34 -74l31 -69l29 -72l31 -81l195 681h82l-234 -798h-84q-32 85 -66 165l-70 158l-89 -28z" />
+<glyph unicode="∞" horiz-adv-x="592" d="M175 217q27 0 49 17.5t42 59.5q-20 42 -42 59.5t-49 17.5q-28 0 -49.5 -19.5t-21.5 -57.5t21.5 -57.5t49.5 -19.5zM296 229q-9 -14 -21 -27.5t-28 -24.5t-35 -18t-41 -7q-19 0 -43 6.5t-45.5 23t-36 44t-14.5 68.5t14.5 68.5t36 44t45.5 23t43 6.5q22 0 41 -7t35 -18 t28 -25t21 -27q9 13 21 27t28 25t35 18t41 7q19 0 43 -6.5t45.5 -23t36 -44t14.5 -68.5t-14.5 -68.5t-36 -44t-45.5 -23t-43 -6.5q-22 0 -41 7t-35 18t-28 24.5t-21 27.5zM417 217q28 0 49.5 19.5t21.5 57.5t-21.5 57.5t-49.5 19.5q-27 0 -49 -17.5t-42 -59.5 q20 -42 42 -59.5t49 -17.5z" />
+<glyph unicode="∫" horiz-adv-x="373" d="M140 567q0 100 49 154.5t154 54.5h5q4 0 15 -1v-80h-12q-63 0 -90.5 -34.5t-27.5 -91.5v-545q0 -100 -49 -154.5t-154 -54.5h-6q-3 0 -14 1v80h12q63 0 90.5 34.5t27.5 91.5v545z" />
+<glyph unicode="≈" horiz-adv-x="568" d="M522 460q-4 -20 -12.5 -44t-24.5 -45.5t-40.5 -36t-59.5 -14.5q-30 0 -55.5 12t-48.5 26l-52 32q-25 15 -53 15q-16 0 -27 -7.5t-19 -19t-13 -25t-9 -26.5l-64 18q4 19 13 43.5t24.5 46t40 36t59.5 14.5q30 0 55.5 -12t48.5 -26l52 -31q25 -16 53 -16q16 0 27 7.5t19 19 t13 25t9 26.5zM522 246q-4 -20 -12.5 -44t-24.5 -45.5t-40.5 -36t-59.5 -14.5q-30 0 -55.5 12t-48.5 26l-52 32q-25 15 -53 15q-16 0 -27 -7.5t-19 -19t-13 -25t-9 -26.5l-64 18q4 19 13 43.5t24.5 46t40 36t59.5 14.5q30 0 55.5 -12t48.5 -26l52 -31q25 -16 53 -16 q16 0 27 7.5t19 19t13 25t9 26.5z" />
+<glyph unicode="≠" horiz-adv-x="568" d="M55 226h153l68 134h-221v79h261l66 131l66 -36l-48 -95h113v-79h-153l-68 -134h221v-79h-261l-66 -131l-66 36l48 95h-113v79z" />
+<glyph unicode="≤" horiz-adv-x="568" d="M158 362l355 -146l-26 -77l-432 183v80l432 183l26 -77zM55 80h458v-79h-458v79z" />
+<glyph unicode="≥" horiz-adv-x="568" d="M55 508l26 77l432 -183v-80l-432 -183l-26 77l355 146zM55 80h458v-79h-458v79z" />
+<glyph unicode="◊" horiz-adv-x="556" d="M32 347l67 103l62 93l59 85l58 83l58 -83l59 -85l62 -93l67 -103l-67 -103l-62 -93l-59 -85l-58 -83l-58 83l-59 85l-62 93zM428 347l-40 64l-37 57l-36 54l-37 52l-37 -52l-36 -54l-37 -57l-40 -64l77 -121q35 -54 73 -106q38 52 73 106z" />
+<glyph unicode="" horiz-adv-x="647" d="M285 776q35 0 60 -4.5t36 -8.5l-13 -80q-11 4 -30 8.5t-46 4.5q-65 0 -91 -35.5t-26 -95.5v-45h200v-78h-200v-442h-93v567q0 100 49 154.5t154 54.5zM565 0h-93v520h93v-520zM518 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5 t-17.5 -44.5t-42.5 -16.5z" />
+<glyph unicode="" horiz-adv-x="667" d="M285 776q35 0 60 -4.5t36 -8.5l-13 -80q-11 4 -30 8.5t-46 4.5q-65 0 -91 -35.5t-26 -95.5v-45h200v-78h-200v-442h-93v567q0 100 49 154.5t154 54.5zM628 -10q-86 2 -122 37t-36 109v624l93 16v-625q0 -23 4 -38t13 -24t24 -13.5t37 -7.5z" />
+<glyph unicode="" horiz-adv-x="878" d="M52 621q38 13 75 33.5t64 46.5h49v-386h-70v294q-22 -14 -50.5 -25t-48.5 -17zM647 693l-391 -693h-87l391 693h87zM612 2q4 42 17 87.5t32.5 88.5t43 80.5t47.5 64.5h-198v65h286v-55q-21 -21 -46 -56.5t-47.5 -80t-39.5 -94.5t-21 -100h-74z" />
+<glyph unicode="" horiz-adv-x="878" d="M298 598q0 -21 -9.5 -41t-25.5 -39.5t-37 -39.5l-45 -40q-17 -14 -33.5 -30.5t-19.5 -29.5h186v-63h-266q-1 9 -1 18q0 22 5 41q8 25 22.5 46t33.5 38l40 36q34 29 55.5 53.5t21.5 48.5q0 26 -16.5 38t-45.5 12q-17 0 -32 -4.5t-27 -11t-21.5 -13t-14.5 -10.5l-36 49 q17 18 51.5 35.5t79.5 17.5q69 0 102 -29t33 -82zM676 693l-391 -693h-87l391 693h87zM612 2q4 42 17 87.5t32.5 88.5t43 80.5t47.5 64.5h-198v65h286v-55q-21 -21 -46 -56.5t-47.5 -80t-39.5 -94.5t-21 -100h-74z" />
+<glyph unicode="" horiz-adv-x="878" d="M146 369q53 0 73 16.5t20 42.5q0 17 -9 29t-24.5 19.5t-35.5 11t-41 3.5h-19v57h25q14 0 29.5 2.5t28 8.5t20.5 16.5t8 25.5q0 25 -18.5 35.5t-47.5 10.5q-27 0 -50 -9.5t-40 -17.5l-25 55q16 11 49.5 22.5t67.5 11.5q73 0 103.5 -29.5t30.5 -75.5q0 -49 -55 -80 q35 -11 55.5 -36.5t20.5 -60.5q0 -26 -9 -47.5t-29 -38t-51.5 -25.5t-75.5 -9q-31 0 -63 7t-50 16l15 60q22 -8 46.5 -14.5t50.5 -6.5zM668 693l-391 -693h-87l391 693h87zM612 2q4 42 17 87.5t32.5 88.5t43 80.5t47.5 64.5h-198v65h286v-55q-21 -21 -46 -56.5t-47.5 -80 t-39.5 -94.5t-21 -100h-74z" />
+<glyph unicode="" horiz-adv-x="878" d="M287 701v-234h50v-59h-50v-93h-68v93h-193v46q14 25 36 57t48 66t55 66.5t58 57.5h64zM219 618q-31 -32 -63 -72.5t-55 -78.5h118v151zM668 693l-391 -693h-87l391 693h87zM612 2q4 42 17 87.5t32.5 88.5t43 80.5t47.5 64.5h-198v65h286v-55q-21 -21 -46 -56.5t-47.5 -80 t-39.5 -94.5t-21 -100h-74z" />
+<glyph unicode="" horiz-adv-x="878" d="M320 429q0 -53 -40 -87.5t-124 -34.5q-32 0 -64.5 7t-49.5 16l15 60q15 -6 40.5 -13.5t56.5 -7.5q53 0 73.5 17.5t20.5 40.5q0 17 -8.5 31t-29 23.5t-54.5 15t-86 5.5q7 50 11.5 101t6.5 98h216v-63h-156q-2 -20 -3 -40t-5 -41q94 -5 137 -37.5t43 -90.5zM668 693 l-391 -693h-87l391 693h87zM612 2q4 42 17 87.5t32.5 88.5t43 80.5t47.5 64.5h-198v65h286v-55q-21 -21 -46 -56.5t-47.5 -80t-39.5 -94.5t-21 -100h-74z" />
+<glyph unicode="" horiz-adv-x="878" d="M39 471q0 55 18 98t52 72.5t81.5 45t107.5 16.5l6 -61q-33 -1 -63.5 -7.5t-55.5 -18.5t-42.5 -30t-24.5 -41q20 8 38.5 11t34.5 3q38 0 65 -10t43.5 -27.5t24 -39.5t7.5 -46q0 -22 -8 -45t-25.5 -41.5t-44 -30.5t-62.5 -12q-75 0 -113.5 43.5t-38.5 120.5zM185 501 q-20 0 -39.5 -3.5t-37.5 -9.5v-11q0 -47 16 -77q18 -34 66 -34q19 0 32 6.5t21 17t12 22.5t4 23q0 32 -18 49t-56 17zM668 693l-391 -693h-87l391 693h87zM612 2q4 42 17 87.5t32.5 88.5t43 80.5t47.5 64.5h-198v65h286v-55q-21 -21 -46 -56.5t-47.5 -80t-39.5 -94.5 t-21 -100h-74z" />
+<glyph unicode="" horiz-adv-x="878" d="M52 621q38 13 75 33.5t64 46.5h49v-386h-70v294q-22 -14 -50.5 -25t-48.5 -17zM655 693l-391 -693h-87l391 693h87zM840 232q0 -112 -69 -172t-199 -60l-2 61q73 2 125 26t66 71q-20 -8 -38.5 -11t-34.5 -3q-38 0 -65 10t-43.5 27.5t-24 39.5t-7.5 46q0 22 8 44.5 t25.5 41.5t44 31t62.5 12q75 0 113.5 -43.5t38.5 -120.5zM694 203q20 0 39.5 2.5t37.5 8.5v11q0 47 -16 78q-18 34 -66 34q-19 0 -32 -6.5t-21.5 -17t-12 -22.5t-3.5 -23q0 -65 74 -65z" />
+<glyph unicode="" horiz-adv-x="878" d="M298 598q0 -21 -9.5 -41t-25.5 -39.5t-37 -39.5l-45 -40q-17 -14 -33.5 -30.5t-19.5 -29.5h186v-63h-266q-1 9 -1 18q0 22 5 41q8 25 22.5 46t33.5 38l40 36q34 29 55.5 53.5t21.5 48.5q0 26 -16.5 38t-45.5 12q-17 0 -32 -4.5t-27 -11t-21.5 -13t-14.5 -10.5l-36 49 q17 18 51.5 35.5t79.5 17.5q69 0 102 -29t33 -82zM684 693l-391 -693h-87l391 693h87zM840 232q0 -112 -69 -172t-199 -60l-2 61q73 2 125 26t66 71q-20 -8 -38.5 -11t-34.5 -3q-38 0 -65 10t-43.5 27.5t-24 39.5t-7.5 46q0 22 8 44.5t25.5 41.5t44 31t62.5 12 q75 0 113.5 -43.5t38.5 -120.5zM694 203q20 0 39.5 2.5t37.5 8.5v11q0 47 -16 78q-18 34 -66 34q-19 0 -32 -6.5t-21.5 -17t-12 -22.5t-3.5 -23q0 -65 74 -65z" />
+<glyph unicode="" horiz-adv-x="878" d="M287 701v-234h50v-59h-50v-93h-68v93h-193v46q14 25 36 57t48 66t55 66.5t58 57.5h64zM219 618q-31 -32 -63 -72.5t-55 -78.5h118v151zM684 693l-391 -693h-87l391 693h87zM840 232q0 -112 -69 -172t-199 -60l-2 61q73 2 125 26t66 71q-20 -8 -38.5 -11t-34.5 -3 q-38 0 -65 10t-43.5 27.5t-24 39.5t-7.5 46q0 22 8 44.5t25.5 41.5t44 31t62.5 12q75 0 113.5 -43.5t38.5 -120.5zM694 203q20 0 39.5 2.5t37.5 8.5v11q0 47 -16 78q-18 34 -66 34q-19 0 -32 -6.5t-21.5 -17t-12 -22.5t-3.5 -23q0 -65 74 -65z" />
+<glyph unicode="" horiz-adv-x="878" d="M320 429q0 -53 -40 -87.5t-124 -34.5q-32 0 -64.5 7t-49.5 16l15 60q15 -6 40.5 -13.5t56.5 -7.5q53 0 73.5 17.5t20.5 40.5q0 17 -8.5 31t-29 23.5t-54.5 15t-86 5.5q7 50 11.5 101t6.5 98h216v-63h-156q-2 -20 -3 -40t-5 -41q94 -5 137 -37.5t43 -90.5zM676 693 l-391 -693h-87l391 693h87zM840 232q0 -112 -69 -172t-199 -60l-2 61q73 2 125 26t66 71q-20 -8 -38.5 -11t-34.5 -3q-38 0 -65 10t-43.5 27.5t-24 39.5t-7.5 46q0 22 8 44.5t25.5 41.5t44 31t62.5 12q75 0 113.5 -43.5t38.5 -120.5zM694 203q20 0 39.5 2.5t37.5 8.5v11 q0 47 -16 78q-18 34 -66 34q-19 0 -32 -6.5t-21.5 -17t-12 -22.5t-3.5 -23q0 -65 74 -65z" />
+<glyph unicode="" horiz-adv-x="878" d="M97 315q4 42 17 87.5t32.5 88.5t43 80.5t47.5 64.5h-198v65h286v-55q-21 -21 -46 -56.5t-47.5 -80t-39.5 -94.5t-21 -100h-74zM635 693l-391 -693h-87l391 693h87zM840 232q0 -112 -69 -172t-199 -60l-2 61q73 2 125 26t66 71q-20 -8 -38.5 -11t-34.5 -3q-38 0 -65 10 t-43.5 27.5t-24 39.5t-7.5 46q0 22 8 44.5t25.5 41.5t44 31t62.5 12q75 0 113.5 -43.5t38.5 -120.5zM694 203q20 0 39.5 2.5t37.5 8.5v11q0 47 -16 78q-18 34 -66 34q-19 0 -32 -6.5t-21.5 -17t-12 -22.5t-3.5 -23q0 -65 74 -65z" />
+<glyph unicode="" horiz-adv-x="878" d="M328 420q0 -50 -38 -81.5t-110 -31.5q-42 0 -70 10.5t-45 26.5t-24 35.5t-7 37.5q0 28 18 52.5t42 39.5q-23 17 -36.5 40.5t-13.5 49.5q0 22 9.5 42t27.5 35t43 24t56 9q36 0 62 -10t42.5 -25t24 -33.5t7.5 -36.5q0 -28 -14.5 -50.5t-37.5 -38.5q36 -17 49 -40t15 -55z M104 417q0 -8 4 -17t13 -16.5t23.5 -12.5t35.5 -5q41 0 58.5 15.5t17.5 35.5q0 28 -28.5 43.5t-79.5 27.5q-20 -15 -32 -32t-12 -39zM247 605q0 13 -15 29t-52 16t-52 -16t-15 -31q0 -20 21 -39t68 -28q20 14 32.5 30t12.5 39zM676 693l-391 -693h-87l391 693h87zM840 232 q0 -112 -69 -172t-199 -60l-2 61q73 2 125 26t66 71q-20 -8 -38.5 -11t-34.5 -3q-38 0 -65 10t-43.5 27.5t-24 39.5t-7.5 46q0 22 8 44.5t25.5 41.5t44 31t62.5 12q75 0 113.5 -43.5t38.5 -120.5zM694 203q20 0 39.5 2.5t37.5 8.5v11q0 47 -16 78q-18 34 -66 34 q-19 0 -32 -6.5t-21.5 -17t-12 -22.5t-3.5 -23q0 -65 74 -65z" />
+<glyph unicode="" horiz-adv-x="568" d="M52 347q0 174 61.5 268t170.5 94t170.5 -94t61.5 -268t-61.5 -268t-170.5 -94t-170.5 94t-61.5 268zM418 347q0 57 -6.5 108t-22 89t-41.5 60.5t-64 22.5t-64 -22.5t-41.5 -60.5t-22 -89t-6.5 -108t6.5 -108t22 -89t41.5 -60.5t64 -22.5t64 22.5t41.5 60.5t22 89t6.5 108 z" />
+<glyph unicode="" horiz-adv-x="377" d="M17 550q57 22 111 56.5t99 86.5h66v-693h-93v564q-12 -11 -29.5 -23t-38 -23t-43 -21t-43.5 -17z" />
+<glyph unicode="" horiz-adv-x="499" d="M438 516q0 -36 -14.5 -69.5t-38.5 -66t-54 -64.5l-60 -61l-40 -40q-22 -23 -42 -48t-33.5 -48t-13.5 -40h319v-79h-420q-1 6 -1 12v11q0 47 15.5 87.5t40.5 76.5t56 68l61 62l48 47q22 24 39.5 47.5t28 48.5t10.5 53q0 30 -9.5 51t-25.5 35t-37.5 20.5t-45.5 6.5 q-29 0 -53 -8t-43 -18.5t-32 -21.5l-20 -18l-46 66q9 10 27 24.5t43 27.5t56 22t67 9q109 0 163.5 -50.5t54.5 -142.5z" />
+<glyph unicode="" horiz-adv-x="508" d="M198 68q89 0 127.5 35t38.5 94q0 38 -16 64t-42 41.5t-60.5 22t-70.5 6.5h-24v76h33q25 0 51.5 5t48.5 18t36 35.5t14 56.5q0 28 -10 48t-26.5 33t-38 18.5t-45.5 5.5q-48 0 -81.5 -14t-56.5 -29l-36 71q12 8 30.5 17.5t41.5 17.5t49.5 13.5t55.5 5.5q55 0 95 -13.5 t66 -38t39 -58t13 -72.5q0 -54 -31 -92.5t-75 -58.5q27 -8 52 -23t43.5 -38t30 -53t11.5 -67q0 -45 -15.5 -83.5t-48 -66.5t-81.5 -44t-116 -16q-26 0 -53.5 4t-51.5 10t-42 12t-26 10l18 81q17 -8 56.5 -21t96.5 -13z" />
+<glyph unicode="" horiz-adv-x="537" d="M27 240q19 44 52 102.5t74.5 120.5t89 122t95.5 108h89v-440h82v-76h-82v-177h-90v177h-310v63zM337 583q-30 -32 -60.5 -71.5t-59.5 -82.5t-54.5 -88t-45.5 -88h220v330z" />
+<glyph unicode="" horiz-adv-x="500" d="M162 426q151 -6 221.5 -66t70.5 -163q0 -46 -15.5 -85t-47 -67t-79.5 -44t-114 -16q-26 0 -53 4t-50 10t-41 12t-26 10l18 81q17 -8 55.5 -21t94.5 -13q45 0 75.5 10t49.5 27t27.5 39.5t8.5 47.5q0 38 -13 67.5t-46 49.5t-88 30.5t-139 10.5q6 49 9.5 92t6.5 84t5 81.5 t4 85.5h334v-79h-253q-1 -15 -3 -40l-4 -54l-4 -53q-2 -26 -4 -41z" />
+<glyph unicode="" horiz-adv-x="550" d="M53 278q0 101 28 178.5t79.5 130.5t125 80.5t165.5 28.5l7 -78q-59 -1 -107.5 -13t-86.5 -38t-64 -67.5t-39 -102.5q26 12 58.5 20t67.5 8q59 0 100 -18t67 -47.5t37.5 -68t11.5 -80.5q0 -38 -13 -78t-39.5 -73t-67.5 -54t-97 -21q-114 0 -173.5 78t-59.5 215zM277 349 q-35 0 -65 -6.5t-60 -19.5q-1 -11 -1.5 -22.5t-0.5 -22.5q0 -44 6 -83t21.5 -68.5t41.5 -47t66 -17.5q33 0 56 14t38 36t21.5 47.5t6.5 49.5q0 68 -32.5 104t-97.5 36z" />
+<glyph unicode="" horiz-adv-x="475" d="M120 0q6 80 28.5 168.5t55.5 172t72.5 155t77.5 116.5h-337v81h441v-77q-33 -38 -73 -104.5t-75.5 -149t-61 -176t-31.5 -186.5h-97z" />
+<glyph unicode="" horiz-adv-x="554" d="M505 180q0 -42 -14.5 -77.5t-43 -62t-71.5 -41t-99 -14.5q-65 0 -108.5 18.5t-69.5 46.5t-37 61.5t-11 63.5q0 29 9.5 55.5t25 49.5t36 41.5t43.5 32.5q-98 56 -98 165q0 38 15 72.5t42.5 60.5t66.5 41.5t87 15.5q56 0 96 -17t65.5 -43.5t37 -58.5t11.5 -62 q0 -29 -8.5 -54.5t-23 -47.5t-33 -39t-38.5 -30q118 -56 120 -177zM145 174q0 -18 6.5 -37.5t22.5 -36t41 -27.5t63 -11q34 0 59.5 10t41.5 25.5t24 35.5t8 41q0 32 -12 56t-34.5 42t-54 30.5t-71.5 21.5q-45 -25 -69.5 -62t-24.5 -88zM395 529q0 15 -6.5 33t-20.5 33.5 t-36 26t-54 10.5t-54.5 -10t-36.5 -25.5t-20.5 -34t-6.5 -36.5q0 -22 8 -44t25 -41t44.5 -34t65.5 -24q42 25 67 58.5t25 87.5z" />
+<glyph unicode="" horiz-adv-x="550" d="M499 416q0 -206 -102.5 -311.5t-304.5 -106.5l-3 78q63 0 113.5 12t88.5 38.5t63.5 68.5t37.5 103q-26 -12 -59 -19.5t-68 -7.5q-59 0 -100 17.5t-67 47t-37.5 68t-11.5 80.5q0 37 13 77t39.5 73t67.5 54t97 21q57 0 100.5 -20t73 -58t44.5 -92.5t15 -122.5zM275 347 q35 0 66 6.5t60 19.5q1 11 1 21v22q0 43 -6 82.5t-21.5 69t-41.5 47t-66 17.5q-33 0 -56 -14t-38 -35.5t-21.5 -47t-6.5 -49.5q0 -68 32.5 -103.5t97.5 -35.5z" />
+<glyph unicode="" horiz-adv-x="363" d="M31 628q0 97 40 149t110 52t110 -52t40 -149t-40 -149t-110 -52t-110 52t-40 149zM257 628q0 28 -3.5 53.5t-12.5 44.5t-23.5 30t-36.5 11t-36.5 -11t-23.5 -30t-13 -44.5t-4 -53.5q0 -29 4 -54t13 -44t23.5 -30t36.5 -11t36.5 11t23.5 30t12.5 44t3.5 54z" />
+<glyph unicode="" horiz-adv-x="363" d="M52 741q38 13 75 33.5t64 46.5h49v-386h-70v294q-22 -14 -50.5 -25t-48.5 -17z" />
+<glyph unicode="" horiz-adv-x="363" d="M298 718q0 -21 -9.5 -41t-25.5 -39.5t-37 -39.5l-45 -40q-17 -14 -33.5 -30.5t-19.5 -29.5h186v-63h-266q-1 9 -1 18q0 22 5 41q8 25 22.5 46t33.5 38l40 36q34 29 55.5 53.5t21.5 48.5q0 26 -16.5 38t-45.5 12q-17 0 -32 -4.5t-27 -11t-21.5 -13t-14.5 -10.5l-36 49 q17 18 51.5 35.5t79.5 17.5q69 0 102 -29t33 -82z" />
+<glyph unicode="" horiz-adv-x="363" d="M146 489q53 0 73 16.5t20 42.5q0 17 -9 29t-24.5 19.5t-35.5 11t-41 3.5h-19v57h25q14 0 29.5 2.5t28 8.5t20.5 16.5t8 25.5q0 25 -18.5 35.5t-47.5 10.5q-27 0 -50 -9.5t-40 -17.5l-25 55q16 11 49.5 22.5t67.5 11.5q73 0 103.5 -29.5t30.5 -75.5q0 -49 -55 -80 q35 -11 55.5 -36.5t20.5 -60.5q0 -26 -9 -47.5t-29 -38t-51.5 -25.5t-75.5 -9q-31 0 -63 7t-50 16l15 60q22 -8 46.5 -14.5t50.5 -6.5z" />
+<glyph unicode="" horiz-adv-x="363" d="M287 821v-234h50v-59h-50v-93h-68v93h-193v46q14 25 36 57t48 66t55 66.5t58 57.5h64zM219 738q-31 -32 -63 -72.5t-55 -78.5h118v151z" />
+<glyph unicode="" horiz-adv-x="363" d="M320 549q0 -53 -40 -87.5t-124 -34.5q-32 0 -64.5 7t-49.5 16l15 60q15 -6 40.5 -13.5t56.5 -7.5q53 0 73.5 17.5t20.5 40.5q0 17 -8.5 31t-29 23.5t-54.5 15t-86 5.5q7 50 11.5 101t6.5 98h216v-63h-156q-2 -20 -3 -40t-5 -41q94 -5 137 -37.5t43 -90.5z" />
+<glyph unicode="" horiz-adv-x="363" d="M39 591q0 55 18 98t52 72.5t81.5 45t107.5 16.5l6 -61q-33 -1 -63.5 -7.5t-55.5 -18.5t-42.5 -30t-24.5 -41q20 8 38.5 11t34.5 3q38 0 65 -10t43.5 -27.5t24 -39.5t7.5 -46q0 -22 -8 -45t-25.5 -41.5t-44 -30.5t-62.5 -12q-75 0 -113.5 43.5t-38.5 120.5zM185 621 q-20 0 -39.5 -3.5t-37.5 -9.5v-11q0 -47 16 -77q18 -34 66 -34q19 0 32 6.5t21 17t12 22.5t4 23q0 32 -18 49t-56 17z" />
+<glyph unicode="" horiz-adv-x="363" d="M97 435q4 42 17 87.5t32.5 88.5t43 80.5t47.5 64.5h-198v65h286v-55q-21 -21 -46 -56.5t-47.5 -80t-39.5 -94.5t-21 -100h-74z" />
+<glyph unicode="" horiz-adv-x="363" d="M328 540q0 -50 -38 -81.5t-110 -31.5q-42 0 -70 10.5t-45 26.5t-24 35.5t-7 37.5q0 28 18 52.5t42 39.5q-23 17 -36.5 40.5t-13.5 49.5q0 22 9.5 42t27.5 35t43 24t56 9q36 0 62 -10t42.5 -25t24 -33.5t7.5 -36.5q0 -28 -14.5 -50.5t-37.5 -38.5q36 -17 49 -40t15 -55z M104 537q0 -8 4 -17t13 -16.5t23.5 -12.5t35.5 -5q41 0 58.5 15.5t17.5 35.5q0 28 -28.5 43.5t-79.5 27.5q-20 -15 -32 -32t-12 -39zM247 725q0 13 -15 29t-52 16t-52 -16t-15 -31q0 -20 21 -39t68 -28q20 14 32.5 30t12.5 39z" />
+<glyph unicode="" horiz-adv-x="363" d="M325 665q0 -112 -69 -172t-199 -60l-2 61q73 2 125 26t66 71q-20 -8 -38.5 -11t-34.5 -3q-38 0 -65 10t-43.5 27.5t-24 39.5t-7.5 46q0 22 8 44.5t25.5 41.5t44 31t62.5 12q75 0 113.5 -43.5t38.5 -120.5zM179 636q20 0 39.5 2.5t37.5 8.5v11q0 47 -16 78q-18 34 -66 34 q-19 0 -32 -6.5t-21.5 -17t-12 -22.5t-3.5 -23q0 -65 74 -65z" />
+<glyph unicode="" horiz-adv-x="363" d="M31 74q0 97 40 149t110 52t110 -52t40 -149t-40 -149t-110 -52t-110 52t-40 149zM257 74q0 28 -3.5 53.5t-12.5 44.5t-23.5 30t-36.5 11t-36.5 -11t-23.5 -30t-13 -44.5t-4 -53.5q0 -29 4 -54t13 -44t23.5 -30t36.5 -11t36.5 11t23.5 30t12.5 44t3.5 54z" />
+<glyph unicode="" horiz-adv-x="363" d="M52 187q38 13 75 33.5t64 46.5h49v-386h-70v294q-22 -14 -50.5 -25t-48.5 -17z" />
+<glyph unicode="" horiz-adv-x="363" d="M298 164q0 -21 -9.5 -41t-25.5 -39.5t-37 -39.5l-45 -40q-17 -14 -33.5 -30.5t-19.5 -29.5h186v-63h-266q-1 9 -1 18q0 22 5 41q8 25 22.5 46t33.5 38l40 36q34 29 55.5 53.5t21.5 48.5q0 26 -16.5 38t-45.5 12q-17 0 -32 -4.5t-27 -11t-21.5 -13t-14.5 -10.5l-36 49 q17 18 51.5 35.5t79.5 17.5q69 0 102 -29t33 -82z" />
+<glyph unicode="" horiz-adv-x="363" d="M146 -65q53 0 73 16.5t20 42.5q0 17 -9 29t-24.5 19.5t-35.5 11t-41 3.5h-19v57h25q14 0 29.5 2.5t28 8.5t20.5 16.5t8 25.5q0 25 -18.5 35.5t-47.5 10.5q-27 0 -50 -9.5t-40 -17.5l-25 55q16 11 49.5 22.5t67.5 11.5q73 0 103.5 -29.5t30.5 -75.5q0 -49 -55 -80 q35 -11 55.5 -36.5t20.5 -60.5q0 -26 -9 -47.5t-29 -38t-51.5 -25.5t-75.5 -9q-31 0 -63 7t-50 16l15 60q22 -8 46.5 -14.5t50.5 -6.5z" />
+<glyph unicode="" horiz-adv-x="363" d="M287 267v-234h50v-59h-50v-93h-68v93h-193v46q14 25 36 57t48 66t55 66.5t58 57.5h64zM219 184q-31 -32 -63 -72.5t-55 -78.5h118v151z" />
+<glyph unicode="" horiz-adv-x="363" d="M320 -5q0 -53 -40 -87.5t-124 -34.5q-32 0 -64.5 7t-49.5 16l15 60q15 -6 40.5 -13.5t56.5 -7.5q53 0 73.5 17.5t20.5 40.5q0 17 -8.5 31t-29 23.5t-54.5 15t-86 5.5q7 50 11.5 101t6.5 98h216v-63h-156q-2 -20 -3 -40t-5 -41q94 -5 137 -37.5t43 -90.5z" />
+<glyph unicode="" horiz-adv-x="363" d="M39 37q0 55 18 98t52 72.5t81.5 45t107.5 16.5l6 -61q-33 -1 -63.5 -7.5t-55.5 -18.5t-42.5 -30t-24.5 -41q20 8 38.5 11t34.5 3q38 0 65 -10t43.5 -27.5t24 -39.5t7.5 -46q0 -22 -8 -45t-25.5 -41.5t-44 -30.5t-62.5 -12q-75 0 -113.5 43.5t-38.5 120.5zM185 67 q-20 0 -39.5 -3.5t-37.5 -9.5v-11q0 -47 16 -77q18 -34 66 -34q19 0 32 6.5t21 17t12 22.5t4 23q0 32 -18 49t-56 17z" />
+<glyph unicode="" horiz-adv-x="363" d="M97 -119q4 42 17 87.5t32.5 88.5t43 80.5t47.5 64.5h-198v65h286v-55q-21 -21 -46 -56.5t-47.5 -80t-39.5 -94.5t-21 -100h-74z" />
+<glyph unicode="" horiz-adv-x="363" d="M328 -14q0 -50 -38 -81.5t-110 -31.5q-42 0 -70 10.5t-45 26.5t-24 35.5t-7 37.5q0 28 18 52.5t42 39.5q-23 17 -36.5 40.5t-13.5 49.5q0 22 9.5 42t27.5 35t43 24t56 9q36 0 62 -10t42.5 -25t24 -33.5t7.5 -36.5q0 -28 -14.5 -50.5t-37.5 -38.5q36 -17 49 -40t15 -55z M104 -17q0 -8 4 -17t13 -16.5t23.5 -12.5t35.5 -5q41 0 58.5 15.5t17.5 35.5q0 28 -28.5 43.5t-79.5 27.5q-20 -15 -32 -32t-12 -39zM247 171q0 13 -15 29t-52 16t-52 -16t-15 -31q0 -20 21 -39t68 -28q20 14 32.5 30t12.5 39z" />
+<glyph unicode="" horiz-adv-x="363" d="M325 111q0 -112 -69 -172t-199 -60l-2 61q73 2 125 26t66 71q-20 -8 -38.5 -11t-34.5 -3q-38 0 -65 10t-43.5 27.5t-24 39.5t-7.5 46q0 22 8 44.5t25.5 41.5t44 31t62.5 12q75 0 113.5 -43.5t38.5 -120.5zM179 82q20 0 39.5 2.5t37.5 8.5v11q0 47 -16 78q-18 34 -66 34 q-19 0 -32 -6.5t-21.5 -17t-12 -22.5t-3.5 -23q0 -65 74 -65z" />
+<glyph horiz-adv-x="257" d="M175 0h-93v520h93v-520zM128 614q-25 0 -42.5 16.5t-17.5 44.5t17.5 44.5t42.5 16.5t42.5 -16.5t17.5 -44.5t-17.5 -44.5t-42.5 -16.5z" />
+<glyph horiz-adv-x="748" d="M601 693l-70 -75l-81 -86l-85 -85l-79 -78q43 -30 91 -74t94 -94t86.5 -102t67.5 -99h-114q-30 47 -69 94.5t-82.5 91t-88 80.5t-86.5 63v-329h-97v693h97v-306l77 75l83 83l77 81q37 38 62 67h117zM619 520v22q0 10 1 20q4 52 23 103t46 95l72 -23q-21 -44 -31.5 -89 t-10.5 -84q0 -10 0.5 -21.5t1.5 -22.5h-102z" />
+<glyph horiz-adv-x="844" d="M675 0l-51 83l-61 95l-69 101l-70 99l-68 89q-33 42 -61 74v-541h-95v693h77q47 -50 101 -117l106 -136l98 -139q47 -68 79 -121v513h95v-693h-81zM139 776v-18q0 -8 -1 -18q-4 -51 -21 -93.5t-41 -80.5l-67 23q19 38 27.5 74.5t8.5 74.5q0 10 -0.5 21t-1.5 17h96z" />
+<glyph horiz-adv-x="380" d="M241 776l-27 -223h-62v223h89z" />
+<glyph horiz-adv-x="253" d="M87 -50h89q1 -5 1 -12v-9q0 -32 -9.5 -54t-25.5 -36t-37.5 -20.5t-45.5 -6.5q-13 0 -23.5 1t-13.5 3v56q15 0 27.5 2t20.5 8.5t12.5 19.5t4.5 35v13z" />
+<glyph horiz-adv-x="253" d="M156 609h-89q-1 5 -1 11v10q0 36 10 62.5t26.5 44.5t36.5 28.5t40 15.5l33 -45q-12 -9 -22.5 -18t-18 -21.5t-11.5 -30t-4 -44.5v-13z" />
+<glyph horiz-adv-x="380" d="M234 776l-27 -194h-62v194h89z" />
+<glyph horiz-adv-x="380" d="M243 776l115 -160l-48 -36l-123 140zM78 776l115 -160l-48 -36l-123 140z" />
+<glyph horiz-adv-x="380" d="M283 837l-158 -60l-21 55l151 78zM283 667q0 -43 -28 -67.5t-65 -24.5q-38 0 -65.5 24.5t-27.5 67.5t27.5 67.5t65.5 24.5q37 0 65 -24.5t28 -67.5zM238 667q0 23 -14 36t-34 13t-34 -13t-14 -36t14 -36.5t34 -13.5t34 13.5t14 36.5z" />
+<glyph horiz-adv-x="380" d="M89 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM291 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15zM63 802h254v-64h-254v64z" />
+<glyph horiz-adv-x="380" d="M190 587q-23 0 -39 15t-16 41t16 41t39 15t39 -15t16 -41t-16 -41t-39 -15zM63 802h254v-64h-254v64z" />
+<glyph horiz-adv-x="380" d="M84 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM296 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15zM137 854l96 -141l-45 -38l-111 127z" />
+<glyph horiz-adv-x="380" d="M84 587q-22 0 -38 15t-16 40t16 40t38 15q23 0 38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM296 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM243 854l60 -52l-111 -127l-45 38z" />
+<glyph horiz-adv-x="380" d="M84 587q-22 0 -38 15t-16 40t16 40t38 15q23 0 38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM296 587q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM66 786l29 45l94 -61l94 61l29 -45l-123 -95z" />
+<glyph horiz-adv-x="380" d="M343 676q-4 -12 -12.5 -26.5t-20.5 -27t-28 -21.5t-36 -9q-18 0 -35 6t-31 14q-17 8 -27.5 12t-21.5 4q-17 0 -30 -14t-20 -28l-45 20q4 12 12.5 27t20.5 27.5t28 21.5t36 9q18 0 35 -6t31 -14q17 -9 27.5 -12.5t21.5 -3.5q17 0 30 13.5t20 27.5zM62 802h254v-64h-254v64 z" />
+<glyph horiz-adv-x="380" d="M284 879l-168 -60l-21 55l161 78z" />
+<glyph horiz-adv-x="380" d="M190 962l123 -95l-29 -45l-94 61l-94 -61l-29 45z" />
+<glyph horiz-adv-x="380" d="M67 917l29 45l94 -61l94 61l29 -45l-123 -95z" />
+<glyph horiz-adv-x="380" d="M146 962l96 -141l-45 -38l-111 127zM54 747q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM326 747q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15q22 0 38 -15t16 -40t-16 -40t-38 -15z" />
+<glyph horiz-adv-x="380" d="M294 910l-111 -127l-45 38l96 141zM326 747q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM54 747q-22 0 -38 15t-16 40t16 40t38 15q23 0 38.5 -15t15.5 -40t-15.5 -40t-38.5 -15z" />
+<glyph horiz-adv-x="380" d="M54 747q-22 0 -38 15t-16 40t16 40t38 15q23 0 38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM326 747q-23 0 -38.5 15t-15.5 40t15.5 40t38.5 15t38.5 -15t15.5 -40t-15.5 -40t-38.5 -15zM66 917l29 45l94 -61l94 61l29 -45l-123 -95z" />
+<glyph horiz-adv-x="592" d="M539 257q0 -51 -14 -100t-43.5 -86.5t-75.5 -60.5t-111 -23q-61 0 -106.5 20.5t-75.5 56t-45 82t-15 97.5q0 45 11.5 84.5t32.5 72.5t49.5 59.5t62.5 45.5q-32 20 -54.5 49.5t-22.5 72.5q0 69 46.5 106.5t124.5 37.5q65 0 102.5 0.5t66.5 4.5l5 -79q-31 -3 -67.5 -3.5 t-81.5 -0.5q-48 0 -77 -12t-29 -47q0 -15 4.5 -25.5t15 -19.5t26.5 -18.5t40 -21.5l88 -49q42 -25 74 -57.5t50.5 -77t18.5 -108.5zM443 257q0 49 -15.5 84t-38.5 59.5t-49.5 40t-49.5 25.5q-65 -31 -103 -88.5t-38 -131.5q0 -34 8.5 -66t26 -56.5t45.5 -39.5t67 -15 q72 0 109.5 52t37.5 136z" />
+<glyph horiz-adv-x="568" d="M519 520v-78h-189v-442h-91v442h-189v78h469zM519 693v-78h-469v78h469z" />
+<glyph horiz-adv-x="568" d="M454 177v-71h-264v-106h-91v106h-82v71h82v102h-82v72h82v330q39 10 86.5 13.5t88.5 3.5q133 0 202.5 -53t69.5 -158q0 -57 -20.5 -96.5t-59 -64.5t-94 -36t-124.5 -11h-58v-102h264zM281 617q-38 0 -60 -1t-30 -2v-263h53q48 0 86 7t64.5 22.5t40.5 42t14 65.5 q0 38 -13.5 63t-36.5 39.5t-53.5 20.5t-64.5 6z" />
+<glyph horiz-adv-x="380" d="M194 604q-63 0 -102.5 32t-47.5 89l71 19q8 -32 27 -52t52 -20t52 20t27 52l70 -19q-8 -57 -47 -89t-102 -32z" />
+<glyph horiz-adv-x="380" d="M257 686l-68 -194l-68 16l46 201z" />
+<glyph horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM57 537q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5 q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33zM377 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM145 503q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16 q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5zM377 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="785" d="M669 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM578 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5 q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM195 711l109 -170l-52 -38l-126 158zM495 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9 q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="770" d="M654 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM563 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16 q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM180 711l109 -170l-52 -38l-126 158zM480 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89 v-13z" />
+<glyph horiz-adv-x="729" d="M613 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM522 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5 q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM282 661l-126 -158l-52 38l109 170zM439 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12 h89v-13z" />
+<glyph horiz-adv-x="756" d="M640 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM549 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16 q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM309 661l-126 -158l-52 38l109 170zM466 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89 v-13z" />
+<glyph horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM10 501q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33 t40.5 15q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM377 -63q0 -22 4.5 -35t12.5 -19.5 t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="677" d="M561 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM470 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM142 467q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44 t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5q8 -12 22 -24.5t34 -26.5zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM387 -63q0 -22 4.5 -35 t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="772" d="M587 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM-40 537q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38t-34.5 -37t-41.5 -33zM462 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5 t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="772" d="M587 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM74 503q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5q11 -19 27 -34.5t36 -32.5zM462 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5 t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="962" d="M777 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM195 711l109 -170l-52 -38l-126 158zM652 -63 q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="947" d="M762 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM180 711l109 -170l-52 -38l-126 158zM637 -63 q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="940" d="M755 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37t-38.5 -33zM282 661l-126 -158l-52 38l109 170zM630 -63 q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="967" d="M782 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5q11 -19 26 -34.5t35 -32.5zM309 661l-126 -158l-52 38l109 170zM657 -63 q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="885" d="M700 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM10 501q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28t-37.5 -23zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53 v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM575 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="885" d="M700 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM142 467q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5q8 -12 22 -24.5t34 -26.5zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53 v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM575 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="795" d="M401 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM-40 537q20 17 36 32.5t27 34.5q-17 7 -27.5 20.5t-10.5 30.5q0 23 16.5 38.5t41.5 15.5q26 0 44 -16t18 -46q0 -17 -9 -36t-24 -38 t-34.5 -37t-41.5 -33zM445 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="830" d="M436 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM74 503q-22 15 -41.5 33t-34.5 37t-24 38t-9 36q0 30 18 46t44 16q25 0 41.5 -15.5t16.5 -38.5q0 -17 -10.5 -30.5t-27.5 -20.5 q11 -19 27 -34.5t36 -32.5zM480 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="1020" d="M626 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37 t-38.5 -33zM195 711l109 -170l-52 -38l-126 158zM670 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="1005" d="M611 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5 q11 -19 26 -34.5t35 -32.5zM180 711l109 -170l-52 -38l-126 158zM655 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="947" d="M553 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM-40 537q20 17 35 32.5t26 34.5q-17 7 -26.5 20.5t-9.5 30.5q0 23 15.5 38.5t40.5 15.5q24 0 41 -16t17 -46q0 -17 -8.5 -36t-23 -38t-33 -37 t-38.5 -33zM282 661l-126 -158l-52 38l109 170zM597 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="974" d="M580 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM68 503q-20 15 -39 33t-33 37t-22.5 38t-8.5 36q0 30 17 46t41 16q25 0 40.5 -15.5t15.5 -38.5q0 -17 -9.5 -30.5t-26.5 -20.5 q11 -19 26 -34.5t35 -32.5zM309 661l-126 -158l-52 38l109 170zM624 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="873" d="M479 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM10 501q20 14 34 26.5t22 24.5q-11 8 -19 19.5t-8 24.5q0 18 12.5 33t40.5 15q23 0 38.5 -14t15.5 -44q0 -18 -10 -35.5t-25.5 -32.5t-35 -28 t-37.5 -23zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM523 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5 t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="902" d="M508 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM142 467q-18 10 -37.5 23t-35 28t-25.5 32.5t-10 35.5q0 30 15.5 44t38.5 14q28 0 40.5 -15t12.5 -33q0 -13 -8 -24.5t-19 -19.5 q8 -12 22 -24.5t34 -26.5zM90 773q26 0 50 -8t42.5 -23.5t29.5 -38.5t11 -53v-2h-53q-2 23 -21 43.5t-59 20.5t-59 -20.5t-21 -43.5h-53v2q0 30 11 53t29.5 38.5t42.5 23.5t50 8zM552 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1 q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="667" d="M551 0l-32 88l-31 89h-314l-63 -177h-101l75 204l69 177l66 161q33 76 69 151h89q36 -75 69 -151l67 -161l68 -177l75 -204h-106zM460 257l-64 169q-31 81 -65 156q-35 -75 -67 -156l-62 -169h258zM377 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56 q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="709" d="M524 693h97v-693h-97v320h-339v-320h-97v693h97v-289h339v289zM399 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9q0 7 1 12h89v-13z" />
+<glyph horiz-adv-x="788" d="M394 709q64 0 123 -21.5t103.5 -64t71 -105.5t26.5 -146q0 -47 -11 -90t-29 -80t-41 -67.5t-46 -52.5h143v-82h-267v68q31 25 58.5 56t47.5 68t31.5 81.5t11.5 98.5q0 59 -16 106t-45 79.5t-70 49.5t-91 17t-91 -17t-70 -49.5t-45 -79.5t-16 -106q0 -54 11.5 -98.5 t31.5 -81.5t47 -68t59 -56v-68h-267v82h143q-23 22 -46 52.5t-41 67.5t-29 80t-11 90q0 83 26.5 146t71 105.5t103 64t123.5 21.5zM438 -63q0 -22 4.5 -35t12.5 -19.5t20.5 -8.5t27.5 -2v-56q-3 -2 -13.5 -3t-23.5 -1q-24 0 -45.5 6.5t-37.5 20.5t-25.5 36t-9.5 54v9 q0 7 1 12h89v-13z" />
</font>
</defs></svg>
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-R-webfont.ttf
===================================================================
(Binary files differ)
Modified: trunk/src/main/java/cc/kune/core/public/fontface/Ubuntu-R-webfont.woff
===================================================================
(Binary files differ)
Deleted: trunk/src/main/java/cc/kune/core/public/fontface/stylesheet.css
===================================================================
--- trunk/src/main/java/cc/kune/wspace/public/fontface/stylesheet.css 2011-01-14 04:11:00 UTC (rev 1182)
+++ trunk/src/main/java/cc/kune/core/public/fontface/stylesheet.css 2011-01-26 21:18:00 UTC (rev 1224)
@@ -1,36 +0,0 @@
-/* Generated by Font Squirrel (http://www.fontsquirrel.com) on December 5, 2010 08:36:17 PM America/New_York */
-
-
-
-@font-face {
- font-family: 'UbuntuRegular';
- src: url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-R-webfont.eot');
- src: local('☺'), url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-R-webfont.woff') format('woff'), url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-R-webfont.ttf') format('truetype'), url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-R-webfont.svg#webfontcceGD1qN') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-
-@font-face {
- font-family: 'UbuntuItalic';
- src: url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-I--webfont.eot');
- src: local('☺'), url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-I--webfont.woff') format('woff'), url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-I--webfont.ttf') format('truetype'), url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-I--webfont.svg#') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-
-@font-face {
- font-family: 'UbuntuBold';
- src: url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-B---webfont.eot');
- src: local('☺'), url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-B---webfont.woff') format('woff'), url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-B---webfont.ttf') format('truetype'), url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-B---webfont.svg#') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-
-@font-face {
- font-family: 'UbuntuBoldItalic';
- src: url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-BI----webfont.eot');
- src: local('☺'), url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-BI----webfont.woff') format('woff'), url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-BI----webfont.ttf') format('truetype'), url('/org.ourproject.kune.ws.armor.WsArmor/fontface/Ubuntu-BI----webfont.svg#') format('svg');
- font-weight: normal;
- font-style: normal;
-}
-
Deleted: trunk/src/main/java/cc/kune/core/public/fontface/ubuntu-fontfacekit.zip
===================================================================
(Binary files differ)
Copied: trunk/src/main/java/cc/kune/core/public/fontface/ubuntufontface.css (from rev 1182, trunk/src/main/java/cc/kune/wspace/public/fontface/stylesheet.css)
===================================================================
--- trunk/src/main/java/cc/kune/core/public/fontface/ubuntufontface.css (rev 0)
+++ trunk/src/main/java/cc/kune/core/public/fontface/ubuntufontface.css 2011-01-26 21:18:00 UTC (rev 1224)
@@ -0,0 +1,36 @@
+/* Generated by Font Squirrel (http://www.fontsquirrel.com) on December 5, 2010 08:36:17 PM America/New_York */
+
+
+
+@font-face {
+ font-family: 'UbuntuRegular';
+ src: url('/ws/fontface/Ubuntu-R-webfont.eot');
+ src: local('☺'), url('/ws/fontface/Ubuntu-R-webfont.woff') format('woff'), url('/ws/fontface/Ubuntu-R-webfont.ttf') format('truetype'), url('/ws/fontface/Ubuntu-R-webfont.svg#webfontcceGD1qN') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'UbuntuItalic';
+ src: url('/ws/fontface/Ubuntu-I-webfont.eot');
+ src: local('☺'), url('/ws/fontface/Ubuntu-I-webfont.woff') format('woff'), url('/ws/fontface/Ubuntu-I-webfont.ttf') format('truetype'), url('/ws/fontface/Ubuntu-I-webfont.svg#') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'UbuntuBold';
+ src: url('/ws/fontface/Ubuntu-B-webfont.eot');
+ src: local('☺'), url('/ws/fontface/Ubuntu-B-webfont.woff') format('woff'), url('/ws/fontface/Ubuntu-B-webfont.ttf') format('truetype'), url('/ws/fontface/Ubuntu-B-webfont.svg#') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'UbuntuBoldItalic';
+ src: url('/ws/fontface/Ubuntu-BI-webfont.eot');
+ src: local('☺'), url('/ws/fontface/Ubuntu-BI-webfont.woff') format('woff'), url('/ws/fontface/Ubuntu-BI-webfont.ttf') format('truetype'), url('/ws/fontface/Ubuntu-BI-webfont.svg#') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
+
Modified: trunk/src/main/java/cc/kune/core/public/ws.css
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.css 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/public/ws.css 2011-01-26 21:18:00 UTC (rev 1224)
@@ -3,18 +3,18 @@
body {
background-color: white;
color: black;
- font-family: 'Inconsolata', Arial;
+ font-family: 'UbuntuRegular', Arial;
font-size: small;
margin: 5px;
overflow: hidden;
}
* {
- font-family: 'Inconsolata', Arial;
+ font-family: 'UbuntuRegular', Arial;
}
body.fontface {
- font: 'Inconsolata', Arial;
+ font: 'UbuntuRegular', Arial;
}
a {
@@ -359,6 +359,28 @@
}
.k-space-sel-btn {
- margin-left: 3px;
+ padding: 0 1px 0 1px;
margin: 0 0 -2px;
+}
+
+.k-sitebar-logo {
+ margin-top: 2px;
+}
+
+.x-btn button {
+ font: 18px/27px UbuntuRegular, arial;
+}
+
+.k-btn-sitebar button {
+ font: 13px UbuntuRegular, arial;
+ color:#B3B3B3;
+ cursor:pointer;
+ text-decoration:underline;
+ white-space:nowrap;
+ margin-top: -5px;
+ border-bottom:1px solid #B3B3B3;
+}
+
+.k-sitebar {
+ margin-top: -30px;
}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/core/public/ws.html
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.html 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/core/public/ws.html 2011-01-26 21:18:00 UTC (rev 1224)
@@ -6,10 +6,19 @@
<script type="text/javascript" language="javascript"
src="/ws/ws.nocache.js"></script>
</head>
+<link rel="shortcut icon" href="favicon.ico" />
<!-- FIXME: make something local -->
-<!--<link href='http://fonts.googleapis.com/css?family=Droid+Sans' rel='stylesheet' type='text/css'>-->
-<link href='http://fonts.googleapis.com/css?family=Inconsolata'
- rel='stylesheet' type='text/css'>
+<script src="//ajax.googleapis.com/ajax/libs/webfont/1/webfont.js"></script>
+<script>
+WebFont.load({
+ custom: {
+ families: ['UbuntuRegular', 'UbuntuItalic'],
+ urls : ['http://kune.ourproject.org/kothers/ubuntufontface.css']
+ }
+});
+</script>
+<!-- <link href='http://fonts.googleapis.com/css?family=Inconsolata'
+ rel='stylesheet' type='text/css'> -->
<link type="text/css" rel="stylesheet" href="gxt/css/gxt-all.css">
<link type="text/css" rel="stylesheet" href="gxt/css/gxt-gray.css">
<style type="text/css">
Modified: trunk/src/main/java/cc/kune/domain/Properties.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/Properties.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/domain/Properties.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -13,6 +13,8 @@
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
+import org.hibernate.annotations.Cascade;
+
import cc.kune.domain.utils.HasId;
/**
@@ -27,6 +29,11 @@
@GeneratedValue
private Long id;
+ @OneToMany(cascade = CascadeType.ALL)
+ @MapKey(name = "property")
+ @Cascade({ org.hibernate.annotations.CascadeType.ALL })
+ private Map<Property, PropertySetted> list;
+
/**
* Every list of properties are from a unique PropertyGroup (like User
* properties, or Group properties)
@@ -36,12 +43,6 @@
@ManyToOne
private final PropertyGroup pgroup;
- @OneToMany(cascade = CascadeType.ALL)
- @MapKey(name = "property")
- // @Cascade( { org.hibernate.annotations.CascadeType.DELETE_ORPHAN })
- // @OnDelete(action = OnDeleteAction.CASCADE)
- private Map<Property, PropertySetted> list;
-
public Properties() {
this(null);
}
@@ -57,6 +58,7 @@
// return null;
// }
+ @Override
public Long getId() {
return id;
}
@@ -69,6 +71,7 @@
return pgroup;
}
+ @Override
public void setId(final Long id) {
this.id = id;
}
Modified: trunk/src/main/java/cc/kune/domain/PropertyGroup.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/PropertyGroup.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/domain/PropertyGroup.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -11,6 +11,7 @@
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
+import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;
@@ -27,18 +28,20 @@
@GeneratedValue
private Long id;
+ @NotNull
+ @Column(unique = true)
+ private String name;
+
@OneToMany(mappedBy = "pgroup")
@OnDelete(action = OnDeleteAction.CASCADE)
- private List<Property> propertyList;
+ @Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
+ private List<Properties> propertiesList;
@OneToMany(mappedBy = "pgroup")
@OnDelete(action = OnDeleteAction.CASCADE)
- private List<Properties> propertiesList;
+ @Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
+ private List<Property> propertyList;
- @NotNull
- @Column(unique = true)
- private String name;
-
public PropertyGroup() {
this(null);
}
@@ -59,6 +62,7 @@
return null;
}
+ @Override
public Long getId() {
return id;
}
@@ -75,6 +79,7 @@
return propertyList;
}
+ @Override
public void setId(final Long id) {
this.id = id;
}
Modified: trunk/src/main/java/cc/kune/wave/client/WebClient.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WebClient.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/wave/client/WebClient.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -89,11 +89,11 @@
GWT.setUncaughtExceptionHandler(new ErrorHandler(GWT.getUncaughtExceptionHandler()));
}
- private static String maybe(int value, String otherwise) {
+ private static String maybe(final int value, final String otherwise) {
return value != -1 ? String.valueOf(value) : otherwise;
}
- private static String maybe(String value, String otherwise) {
+ private static String maybe(final String value, final String otherwise) {
return value != null ? value : otherwise;
}
@@ -106,7 +106,7 @@
/** Next handler in the handler chain. */
private final UncaughtExceptionHandler next;
- private ErrorHandler(UncaughtExceptionHandler next) {
+ private ErrorHandler(final UncaughtExceptionHandler next) {
this.next = next;
}
@@ -124,12 +124,12 @@
DeferredCommand.addCommand(new Command() {
@Override
public void execute() {
- SafeHtmlBuilder stack = new SafeHtmlBuilder();
+ final SafeHtmlBuilder stack = new SafeHtmlBuilder();
Throwable error = t;
while (error != null) {
stack.appendEscaped(String.valueOf(error.getMessage())).appendHtmlConstant("<br>");
- for (StackTraceElement elt : error.getStackTrace()) {
+ for (final StackTraceElement elt : error.getStackTrace()) {
stack.appendHtmlConstant(" ").appendEscaped(maybe(elt.getClassName(), "??")).appendHtmlConstant(
".") //
.appendEscaped(maybe(elt.getMethodName(), "??")).appendHtmlConstant(" (") //
@@ -149,13 +149,13 @@
}
@Override
- public void onUncaughtException(Throwable e) {
+ public void onUncaughtException(final Throwable e) {
if (!hasFired) {
hasFired = true;
final ErrorIndicatorPresenter error = ErrorIndicatorPresenter.create(RootPanel.get("banner"));
getStackTraceAsync(e, new Accessor<SafeHtml>() {
@Override
- public void use(SafeHtml stack) {
+ public void use(final SafeHtml stack) {
error.addDetail(stack, null);
}
});
@@ -214,7 +214,7 @@
ErrorHandler.install();
// Set up UI
- DockLayoutPanel self = BINDER.createAndBindUi(this);
+ final DockLayoutPanel self = BINDER.createAndBindUi(this);
initWidget(self);
// RootPanel.get("app").add(self);
// DockLayoutPanel forcibly conflicts with sensible layout control, and
@@ -232,7 +232,7 @@
// For handling the opening of wave using the new wave panel
ClientEvents.get().addWaveSelectionEventHandler(new WaveSelectionEventHandler() {
@Override
- public void onSelection(WaveRef waveRef) {
+ public void onSelection(final WaveRef waveRef) {
openWave(waveRef, false);
}
});
@@ -249,7 +249,7 @@
ClientEvents.get().addWaveCreationEventHandler(new WaveCreationEventHandler() {
@Override
- public void onCreateRequest(WaveCreationEvent event) {
+ public void onCreateRequest(final WaveCreationEvent event) {
LOG.info("WaveCreationEvent received");
if (channel == null) {
throw new RuntimeException("Spaghetti attack. Create occured before login"); // NOPMD
@@ -261,13 +261,13 @@
}
if (ClientFlags.get().enableWavePanelHarness()) {
- WaveId newWaveId = idGenerator.newWaveId();
+ final WaveId newWaveId = idGenerator.newWaveId();
openWave(WaveRef.of(newWaveId), true);
} else {
- WaveId newWaveId = idGenerator.newWaveId();
+ final WaveId newWaveId = idGenerator.newWaveId();
ClientEvents.get().fireEvent(new WaveSelectionEvent(WaveRef.of(newWaveId)));
- ObservableConversation convo = waveView.getConversationView().createRoot();
- CcBasedWavelet rootWavelet = waveView.getCcStackManager().getView().getRoot();
+ final ObservableConversation convo = waveView.getConversationView().createRoot();
+ final CcBasedWavelet rootWavelet = waveView.getCcStackManager().getView().getRoot();
rootWavelet.addParticipant(loggedInUser);
LOG.info("created conversation: " + convo);
convo.getRootThread().appendBlip();
@@ -279,7 +279,7 @@
HistorySupport.init();
- websocket = new WaveWebSocketClient(useSocketIO(), getWebSocketBaseUrl(GWT.getModuleBaseURL()));
+ websocket = new WaveWebSocketClient(useSocketIO(), getWebSocketBaseUrl(GWT.getModuleBaseURL() + "/wiab/"));
websocket.connect();
if (Session.get().isLoggedIn()) {
@@ -294,8 +294,8 @@
private void configureConnectionIndicator() {
ClientEvents.get().addNetworkStatusEventHandler(new NetworkStatusEventHandler() {
@Override
- public void onNetworkStatus(NetworkStatusEvent event) {
- Element element = Document.get().getElementById("netstatus");
+ public void onNetworkStatus(final NetworkStatusEvent event) {
+ final Element element = Document.get().getElementById("netstatus");
if (element != null) {
switch (event.getStatus()) {
case CONNECTED:
@@ -317,6 +317,10 @@
});
}
+ private native String getBaseUrl() /*-{
+ return !!$wnd.__baseUrl
+ }-*/;
+
/**
* Returns <code>ws://yourhost[:port]/</code>.
*/
@@ -339,7 +343,7 @@
ClientEvents.get().addNetworkStatusEventHandler(new NetworkStatusEventHandler() {
@Override
- public void onNetworkStatus(NetworkStatusEvent event) {
+ public void onNetworkStatus(final NetworkStatusEvent event) {
if (event.getStatus() == ConnectionStatus.CONNECTED) {
openIndexWave();
}
@@ -348,27 +352,27 @@
}
private void openIndexWave() {
- SimpleCcDocumentFactory docFactory = new SimpleCcDocumentFactory();
+ final SimpleCcDocumentFactory docFactory = new SimpleCcDocumentFactory();
final WaveViewServiceImpl indexWave = (WaveViewServiceImpl) backend.getIndexWave(docFactory);
indexWave.viewOpen(IdFilters.ALL_IDS, null, new WaveViewService.OpenCallback() {
@Override
- public void onException(ChannelException e) {
+ public void onException(final ChannelException e) {
LOG.severe("ChannelException opening index wave", e);
}
@Override
- public void onFailure(String reason) {
+ public void onFailure(final String reason) {
LOG.info("Failure for index wave " + reason);
}
@Override
- public void onSuccess(String response) {
+ public void onSuccess(final String response) {
LOG.info("Success for index wave subscription");
}
@Override
- public void onUpdate(WaveViewService.WaveViewServiceUpdate update) {
+ public void onUpdate(final WaveViewService.WaveViewServiceUpdate update) {
LOG.info("IndexWave update received hasDeltas=" + update.hasDeltas() + " hasWaveletSnapshot="
+ update.hasWaveletSnapshot());
ClientEvents.get().fireEvent(
@@ -386,7 +390,7 @@
* @param isNewWave
* whether the wave is being created by this client session.
*/
- private void openWave(WaveRef waveRef, boolean isNewWave) {
+ private void openWave(final WaveRef waveRef, final boolean isNewWave) {
LOG.info("WebClient.openWave()");
if (wave != null) {
@@ -397,9 +401,9 @@
wave = new StagesProvider(contentPanel.getElement().appendChild(Document.get().createDivElement()),
contentPanel, waveRef, channel, idGenerator, isNewWave);
wave.load(null);
- String encodedToken = History.getToken();
+ final String encodedToken = History.getToken();
if (encodedToken != null && !encodedToken.isEmpty()) {
- WaveRef fromWaveRef = HistorySupport.waveRefFromHistoryToken(encodedToken);
+ final WaveRef fromWaveRef = HistorySupport.waveRefFromHistoryToken(encodedToken);
if (waveRef == null) {
LOG.info("History token contains invalid path: " + encodedToken);
return;
Modified: trunk/src/main/java/cc/kune/wave/client/WebClient.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/wave/client/WebClient.ui.xml 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/wave/client/WebClient.ui.xml 2011-01-26 21:18:00 UTC (rev 1224)
@@ -2,7 +2,8 @@
xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g='urn:import:com.google.gwt.user.client.ui'
xmlns:s='urn:import:org.waveprotocol.box.webclient.client'
- xmlns:w='urn:import:org.waveprotocol.wave.client.widget.common' >
+ xmlns:w='urn:import:org.waveprotocol.wave.client.widget.common'
+ xmlns:n='urn:import:org.waveprotocol.box.webclient.client.wavelist'>
<ui:style type="cc.kune.wave.client.WebClient.Style">
@def rootBackground #f0f0ff;
@def gap 5px;
@@ -56,8 +57,8 @@
<g:south size="200">
<s:DebugMessagePanel ui:field="logPanel" styleName="{style.subPanel} {style.debugPanel}" />
</g:south>
- <g:west size="300">
- <s:WaveList styleName="{style.subPanel} {style.waveList}" />
+ <g:west size="400">
+ <n:WaveListPanel ui:field="listPanel" styleName="{style.waveList}" />
</g:west>
<g:center>
<w:ImplPanel ui:field="contentPanel"></w:ImplPanel>
@@ -65,4 +66,4 @@
</g:SplitLayoutPanel>
</g:center>
</g:DockLayoutPanel>
-</ui:UiBinder>
\ No newline at end of file
+</ui:UiBinder>
Deleted: trunk/src/main/java/cc/kune/wave/server/CustomServerRpcControllerImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/CustomServerRpcControllerImpl.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/wave/server/CustomServerRpcControllerImpl.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -1,225 +0,0 @@
-/**
- * Copyright 2009 Google Inc.
- *
- * 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 cc.kune.wave.server;
-
-import org.waveprotocol.box.server.rpc.Rpc;
-import org.waveprotocol.box.server.rpc.ServerRpcController;
-import org.waveprotocol.wave.model.wave.ParticipantId;
-
-import com.google.protobuf.Descriptors;
-import com.google.protobuf.Message;
-import com.google.protobuf.RpcCallback;
-import com.google.protobuf.Service;
-
-/**
- * Implements the server end-point of a wave server RPC connection. This is a
- * single-use RPC controller.
- *
- *
- */
-public class CustomServerRpcControllerImpl implements ServerRpcController {
- private final Message requestMessage;
- private final Service backingService;
- private final Descriptors.MethodDescriptor serviceMethod;
- private final RpcCallback<Message> callback;
- private final boolean isStreamingRpc;
-
- // The following variables represent the current status of this instance,
- // and
- // must all only be accessed or modified while synchronised on statusLock.
- private final Object statusLock = new Object();
- private boolean complete = false;
- private RpcCallback<Object> cancelCallback = null;
- private boolean cancelled = false;
- private final ParticipantId loggedInUser;
-
- /**
- * Instantiate a new ServerRpcController that may later be completely
- * invoked by calling {#link run}.
- *
- * @param requestMessage
- * the request being handled
- * @param backingService
- * the backing service type
- * @param serviceMethod
- * the specific method within the backing service type
- * @param loggedInUser
- * the currently logged in user
- * @param callback
- * the destination where responses may be passed - may be called
- * once (normal RPC) or 1-n times (streaming RPC), and will pass
- * instances of RpcFinished as required (error cases, or
- * streaming RPC shutdown); is also always called under the
- * ServerRpcController's statusLock to ensure that consecutive
- * calls (in the streaming case) are called in series
- */
- public CustomServerRpcControllerImpl(Message requestMessage, Service backingService,
- Descriptors.MethodDescriptor serviceMethod, ParticipantId loggedInUser, RpcCallback<Message> callback) {
- this.requestMessage = requestMessage;
- this.backingService = backingService;
- this.serviceMethod = serviceMethod;
- this.loggedInUser = loggedInUser;
- this.isStreamingRpc = serviceMethod.getOptions().getExtension(Rpc.isStreamingRpc);
- this.callback = callback;
- }
-
- @Override
- public String errorText() {
- throw new UnsupportedOperationException("Client-side method of RpcController only.");
- }
-
- @Override
- public boolean failed() {
- throw new UnsupportedOperationException("Client-side method of RpcController only.");
- }
-
- @Override
- public boolean isCanceled() {
- return cancelled;
- }
-
- /**
- * Registers a cancellation callback. This will always be called as part of
- * this RPC, and always at most once; either when the client asks to cancel
- * it, or when the RPC finishes (regardless of error case).
- *
- * This callback will be called outside normal locks on ServerRpcController
- * state, i.e., not within a block synchronised on statusLock.
- */
- @Override
- public void notifyOnCancel(final RpcCallback<Object> callback) {
- RpcCallback<Object> runCallback = null;
- synchronized (statusLock) {
- if (cancelCallback != null) {
- throw new IllegalStateException("Must only be called once per request.");
- } else {
- cancelCallback = callback;
- if (cancelled || complete) {
- runCallback = cancelCallback;
- }
- }
- }
- if (runCallback != null) {
- runCallback.run(null);
- }
- }
-
- @Override
- public void reset() {
- throw new UnsupportedOperationException("Client-side method of RpcController only.");
- }
-
- @Override
- public void setFailed(String reason) {
- RpcCallback<Object> runCallback = null;
- synchronized (statusLock) {
- if (complete) {
- throw new IllegalStateException("Can't fail this RPC, as it is already complete.");
- } else {
- complete = true;
- callback.run(Rpc.RpcFinished.newBuilder().setFailed(true).setErrorText(reason).build());
- if (cancelCallback != null && !cancelled) {
- runCallback = cancelCallback;
- }
- }
- }
- if (runCallback != null) {
- runCallback.run(null);
- }
- }
-
- @Override
- public void startCancel() {
- throw new UnsupportedOperationException("Client-side method of RpcController only.");
- }
-
- @Override
- public void cancel() {
- RpcCallback<Object> runCallback = null;
- synchronized (statusLock) {
- if (cancelled) {
- throw new IllegalStateException("Can't cancel RPC, already cancelled.");
- }
- cancelled = true;
- if (cancelCallback != null && !complete) {
- runCallback = cancelCallback;
- }
- }
- if (runCallback != null) {
- runCallback.run(null);
- }
- }
-
- /**
- * Run this ServerRpcController in the current thread. This must only be
- * invoked ONCE, and will throw an IllegalStateException otherwise.
- */
- @Override
- public void run() {
- RpcCallback<Message> messageCallback = new RpcCallback<Message>() {
- @Override
- public void run(Message result) { // NOPMD by vjrj on 18/01/11 0:53
- RpcCallback<Object> runCallback = null;
- synchronized (statusLock) {
- if (complete) {
- throw new IllegalStateException("Can't send responses over this RPC, as it is"
- + " already complete: " + result);
- }
- if (!isStreamingRpc || result == null) {
- // This either completes the streaming RPC (by passing
- // an instance
- // of RpcFinished in place of null) or completes a
- // normal RPC (by
- // passing any other message).
- if (result == null) {
- result = Rpc.RpcFinished.newBuilder().setFailed(false).build();
- }
- callback.run(result);
-
- // Now complete, mark as such and invoke the
- // cancellation callback.
- complete = true;
- if (cancelCallback != null && !cancelled) {
- runCallback = cancelCallback;
- }
- } else {
- // Streaming RPC update.
- callback.run(result);
- }
- }
- if (runCallback != null) {
- runCallback.run(null);
- }
- }
- };
- try {
- backingService.callMethod(serviceMethod, this, requestMessage, messageCallback);
- } catch (RuntimeException e) {
- // Pass the description of any RuntimeException back to the caller.
- e.printStackTrace();
- if (!complete) {
- setFailed(e.toString());
- }
- }
- }
-
- @Override
- public ParticipantId getLoggedInUser() {
- return loggedInUser;
- }
-}
Deleted: trunk/src/main/java/cc/kune/wave/server/CustomServerRpcProviderSamePort.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/CustomServerRpcProviderSamePort.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/wave/server/CustomServerRpcProviderSamePort.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -1,564 +0,0 @@
-/**
- * Copyright 2009 Google Inc.
- *
- * 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 cc.kune.wave.server;
-
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import javax.servlet.Servlet;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-
-import org.eclipse.jetty.server.nio.SelectChannelConnector;
-import org.eclipse.jetty.servlet.DefaultServlet;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.websocket.WebSocket;
-import org.eclipse.jetty.websocket.WebSocketServlet;
-import org.waveprotocol.box.common.comms.WaveClientRpc.ProtocolAuthenticate;
-import org.waveprotocol.box.common.comms.WaveClientRpc.ProtocolAuthenticationResult;
-import org.waveprotocol.box.server.CoreSettings;
-import org.waveprotocol.box.server.authentication.SessionManager;
-import org.waveprotocol.box.server.rpc.MessageExpectingChannel;
-import org.waveprotocol.box.server.rpc.ProtoCallback;
-import org.waveprotocol.box.server.rpc.Rpc;
-import org.waveprotocol.box.server.rpc.ServerRpcController;
-import org.waveprotocol.box.server.rpc.SocketIOServerChannel;
-import org.waveprotocol.box.server.rpc.WebSocketServerChannel;
-import org.waveprotocol.box.server.util.NetUtils;
-import org.waveprotocol.wave.model.wave.ParticipantId;
-import org.waveprotocol.wave.util.logging.Log;
-
-import com.glines.socketio.server.SocketIOInbound;
-import com.glines.socketio.server.SocketIOServlet;
-import com.glines.socketio.server.transport.FlashSocketTransport;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import com.google.inject.name.Named;
-import com.google.inject.servlet.ServletModule;
-import com.google.protobuf.Descriptors;
-import com.google.protobuf.Descriptors.MethodDescriptor;
-import com.google.protobuf.Message;
-import com.google.protobuf.RpcCallback;
-import com.google.protobuf.Service;
-import com.google.protobuf.UnknownFieldSet;
-
-/**
- * ServerRpcProvider can provide instances of type Service over an incoming
- * network socket and service incoming RPCs to these services and their methods.
- *
- *
- */
-public class CustomServerRpcProviderSamePort extends ServletModule {
- private static final Log LOG = Log.get(CustomServerRpcProviderSamePort.class);
-
- private final InetSocketAddress[] httpAddresses;
- private final Integer flashsocketPolicyPort;
- private final Set<Connection> incomingConnections = Sets.newHashSet();
- private final ExecutorService threadPool;
- private final SessionManager sessionManager;
- private final org.eclipse.jetty.server.SessionManager jettySessionManager;
- // private Server httpServer = null;
-
- // Mapping from incoming protocol buffer type -> specific handler.
- private final Map<Descriptors.Descriptor, RegisteredServiceMethod> registeredServices = Maps.newHashMap();
-
- /**
- * Internal, static container class for any specific registered service
- * method.
- */
- static class RegisteredServiceMethod {
- final Service service;
- final MethodDescriptor method;
-
- RegisteredServiceMethod(Service service, MethodDescriptor method) {
- this.service = service;
- this.method = method;
- }
- }
-
- // SocketIO is a Generic Servlet then we use this workaround
- // http://stackoverflow.com/questions/3597414/how-to-integrate-hessian-with-gu…
- @Singleton
- public class WaveSocketIOWrapperServlet extends HttpServlet {
-
- private WaveSocketIOServlet waveSocketIOServlet;
-
- @Override
- public void init(ServletConfig config) throws ServletException {
- LOG.info("init() in");
- try {
- if (waveSocketIOServlet == null) {
- waveSocketIOServlet = new WaveSocketIOServlet();
- }
- waveSocketIOServlet.init(config);
- } catch (Throwable t) {
- LOG.severe("Error initialising waveSocketIO servlet", t);
- throw new ServletException(t);
- }
- LOG.info("init() out");
- }
-
- @Override
- public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
-
- try {
- waveSocketIOServlet.service(request, response);
- } catch (Throwable t) {
- LOG.severe("Error calling service()", t);
- throw new ServletException(t);
- }
-
- }
- }
-
- class WebSocketConnection extends Connection {
- private final WebSocketServerChannel socketChannel;
-
- WebSocketConnection(ParticipantId loggedInUser) {
- super(loggedInUser);
- socketChannel = new WebSocketServerChannel(this);
- LOG.info("New websocket connection set up for user " + loggedInUser);
- expectMessages(socketChannel);
- }
-
- @Override
- protected void sendMessage(long sequenceNo, Message message) {
- socketChannel.sendMessage(sequenceNo, message);
- }
-
- public WebSocketServerChannel getWebSocketServerChannel() {
- return socketChannel;
- }
- }
-
- class SocketIOConnection extends Connection {
- private final SocketIOServerChannel socketChannel;
-
- SocketIOConnection(ParticipantId loggedInUser) {
- super(loggedInUser);
- socketChannel = new SocketIOServerChannel(this);
- LOG.info("New websocket connection set up for user " + loggedInUser);
- expectMessages(socketChannel);
- }
-
- @Override
- protected void sendMessage(long sequenceNo, Message message) {
- socketChannel.sendMessage(sequenceNo, message);
- }
-
- public SocketIOServerChannel getWebSocketServerChannel() {
- return socketChannel;
- }
- }
-
- abstract class Connection implements ProtoCallback {
- private final Map<Long, ServerRpcController> activeRpcs = new ConcurrentHashMap<Long, ServerRpcController>();
-
- // The logged in user.
- // Note: Due to this bug:
- // http://code.google.com/p/wave-protocol/issues/detail?id=119,
- // the field may be null on first connect and then set later using an
- // RPC.
- private ParticipantId loggedInUser;
-
- /**
- * @param loggedInUser
- * The currently logged in user, or null if no user is logged
- * in.
- */
- public Connection(ParticipantId loggedInUser) {
- this.loggedInUser = loggedInUser;
- }
-
- protected void expectMessages(MessageExpectingChannel channel) {
- synchronized (registeredServices) {
- for (RegisteredServiceMethod serviceMethod : registeredServices.values()) {
- channel.expectMessage(serviceMethod.service.getRequestPrototype(serviceMethod.method));
- LOG.fine("Expecting: " + serviceMethod.method.getFullName());
- }
- }
- channel.expectMessage(Rpc.CancelRpc.getDefaultInstance());
- }
-
- protected abstract void sendMessage(long sequenceNo, Message message);
-
- private ParticipantId authenticate(String token) {
- HttpSession session = sessionManager.getSessionFromToken(token);
- ParticipantId user = sessionManager.getLoggedInUser(session);
- return user;
- }
-
- @Override
- public void message(final long sequenceNo, Message message) {
- if (message instanceof Rpc.CancelRpc) {
- final ServerRpcController controller = activeRpcs.get(sequenceNo);
- if (controller == null) {
- throw new IllegalStateException("Trying to cancel an RPC that is not active!");
- } else {
- LOG.info("Cancelling open RPC " + sequenceNo);
- controller.cancel();
- }
- } else if (message instanceof ProtocolAuthenticate) {
- // Workaround for bug:
- // http://codereview.waveprotocol.org/224001/
-
- // When we get this message, either the connection will not be
- // logged in
- // (loggedInUser == null) or the connection will have been
- // authenticated
- // via cookies
- // (in which case loggedInUser must match the authenticated
- // user, and
- // this message has no
- // effect).
-
- ProtocolAuthenticate authMessage = (ProtocolAuthenticate) message;
- ParticipantId authenticatedAs = authenticate(authMessage.getToken());
-
- Preconditions.checkArgument(authenticatedAs != null, "Auth token invalid");
- Preconditions.checkState(loggedInUser == null || loggedInUser.equals(authenticatedAs),
- "Session already authenticated as a different user");
-
- loggedInUser = authenticatedAs;
- LOG.info("Session authenticated as " + loggedInUser);
- sendMessage(sequenceNo, ProtocolAuthenticationResult.getDefaultInstance());
- } else if (registeredServices.containsKey(message.getDescriptorForType())) {
- if (activeRpcs.containsKey(sequenceNo)) {
- throw new IllegalStateException("Can't invoke a new RPC with a sequence number already in use.");
- } else {
- final RegisteredServiceMethod serviceMethod = registeredServices.get(message.getDescriptorForType());
-
- // Create the internal ServerRpcController used to invoke
- // the call.
- final ServerRpcController controller = new CustomServerRpcControllerImpl(message,
- serviceMethod.service, serviceMethod.method, loggedInUser, new RpcCallback<Message>() {
- @Override
- synchronized public void run(Message message) {
- if (message instanceof Rpc.RpcFinished
- || !serviceMethod.method.getOptions().getExtension(Rpc.isStreamingRpc)) {
- // This RPC is over - remove it from the
- // map.
- boolean failed = message instanceof Rpc.RpcFinished ? ((Rpc.RpcFinished) message).getFailed()
- : false;
- LOG.fine("RPC " + sequenceNo + " is now finished, failed = " + failed);
- if (failed) {
- LOG.info("error = " + ((Rpc.RpcFinished) message).getErrorText());
- }
- activeRpcs.remove(sequenceNo);
- }
- sendMessage(sequenceNo, message);
- }
- });
-
- // Kick off a new thread specific to this RPC.
- activeRpcs.put(sequenceNo, controller);
- threadPool.execute(controller);
- }
- } else {
- // Sent a message type we understand, but don't expect -
- // erronous case!
- throw new IllegalStateException("Got expected but unknown message (" + message + ") for sequence: "
- + sequenceNo);
- }
- }
-
- @Override
- public void unknown(long sequenceNo, String messageType, UnknownFieldSet message) {
- throw new IllegalStateException("Got unknown message (type: " + messageType + ", " + message
- + ") for sequence: " + sequenceNo);
- }
-
- @Override
- public void unknown(long sequenceNo, String messageType, String message) {
- throw new IllegalStateException("Got unknown message (type: " + messageType + ", " + message
- + ") for sequence: " + sequenceNo);
- }
- }
-
- /**
- * Construct a new ServerRpcProvider, hosting on the specified WebSocket
- * addresses.
- *
- * Also accepts an ExecutorService for spawning managing threads.
- */
- public CustomServerRpcProviderSamePort(InetSocketAddress[] httpAddresses, Integer flashsocketPolicyPort,
- ExecutorService threadPool, SessionManager sessionManager,
- org.eclipse.jetty.server.SessionManager jettySessionManager) {
- this.httpAddresses = httpAddresses;
- this.flashsocketPolicyPort = flashsocketPolicyPort;
- this.threadPool = threadPool;
- this.sessionManager = sessionManager;
- this.jettySessionManager = jettySessionManager;
- }
-
- /**
- * Constructs a new ServerRpcProvider with a default ExecutorService.
- */
- public CustomServerRpcProviderSamePort(InetSocketAddress[] httpAddresses, Integer flashsocketPolicyPort,
- SessionManager sessionManager, org.eclipse.jetty.server.SessionManager jettySessionManager) {
- this(httpAddresses, flashsocketPolicyPort, Executors.newCachedThreadPool(), sessionManager, jettySessionManager);
- }
-
- @Inject
- public CustomServerRpcProviderSamePort((a)Named(CoreSettings.HTTP_FRONTEND_ADDRESSES) List<String> httpAddresses,
- @Named(CoreSettings.FLASHSOCKET_POLICY_PORT) Integer flashsocketPolicyPort, SessionManager sessionManager,
- org.eclipse.jetty.server.SessionManager jettySessionManager) {
- this(parseAddressList(httpAddresses), flashsocketPolicyPort, sessionManager, jettySessionManager);
- }
-
- @Override
- protected void configureServlets() {
- // public void startWebSocketServer() {
- // httpServer = new Server();
-
- List<SelectChannelConnector> connectors = getSelectChannelConnectors(httpAddresses);
- if (connectors.isEmpty()) {
- LOG.severe("No valid http end point address provided!");
- }
- for (SelectChannelConnector connector : connectors) {
- // httpServer.addConnector(connector);
- }
-
- // ServletContextHandler context = new
- // ServletContextHandler(ServletContextHandler.SESSIONS);
- // if (jettySessionManager != null) {
- // context.getSessionHandler().setSessionManager(jettySessionManager);
- // }
- // context.setResourceBase("./war");
-
- // Servlet where the websocket connection is served from.
- // ServletHolder wsholder = new ServletHolder(new
- // WaveWebSocketServlet());
- // context.addServlet(wsholder, "/socket");
- // TODO(zamfi): fix to let messages span frames.
- // wsholder.setInitParameter("bufferSize", "" + 1024 * 1024); // 1M
- // buffer
- Map<String, String> params = new HashMap<String, String>();
- params.put("bufferSize", "" + 1024 * 1024);
- serveRegex("/socket").with(WaveWebSocketServlet.class, params);
- // Servlet where the websocket connection is served from.
- // ServletHolder sioholder = new ServletHolder(new
- // WaveSocketIOServlet());
- // context.addServlet(sioholder, "/socket.io/*");
- Map<String, String> sioParams = new HashMap<String, String>();
- // TODO(zamfi): fix to let messages span frames.
- sioParams.put("bufferSize", "" + 1024 * 1024); // 1M buffer
-
- // Set flash policy server parameters
- String flashPolicyServerHost = "localhost";
- StringBuilder flashPolicyAllowedPorts = new StringBuilder();
- /*
- * Loop through addresses, collect list of ports, and determine if we
- * are to use "localhost" of the AnyHost wildcard.
- */
- for (InetSocketAddress addr : httpAddresses) {
- if (flashPolicyAllowedPorts.length() > 0) {
- flashPolicyAllowedPorts.append(",");
- }
- flashPolicyAllowedPorts.append(addr.getPort());
- if (!addr.getAddress().isLoopbackAddress()) {
- // Until it's possible to pass a list of address, this is the
- // only valid alternative.
- flashPolicyServerHost = "0.0.0.0";
- }
- }
- sioParams.put(FlashSocketTransport.FLASHPOLICY_SERVER_HOST_KEY, flashPolicyServerHost);
- sioParams.put(FlashSocketTransport.FLASHPOLICY_SERVER_PORT_KEY, "" + flashsocketPolicyPort);
- // TODO: Change to use the public http address and all other bound
- // addresses.
- sioParams.put(FlashSocketTransport.FLASHPOLICY_DOMAIN_KEY, "*");
- sioParams.put(FlashSocketTransport.FLASHPOLICY_PORTS_KEY, flashPolicyAllowedPorts.toString());
- serveRegex("/socket.io/*").with(WaveSocketIOWrapperServlet.class, sioParams);
-
- // Serve the static content and GWT web client with the default servlet
- // (acts like a standard file-based web server).
- // ServletHolder defaultServlet = new ServletHolder(new
- // DefaultServlet());
- // context.addServlet(defaultServlet, "/static/*");
- // context.addServlet(defaultServlet, "/webclient/*");
- serveRegex("/static/*").with(DefaultServlet.class);
- serveRegex("/webclient/*").with(DefaultServlet.class);
-
- for (Trio<String, HttpServlet, Map<String, String>> servlet : servletNewRegistry) {
- Map<String, String> sParams = servlet.getThird();
- LOG.info("Configuring servlet for: " + servlet.getFirst());
- if (sParams == null) {
- serveRegex(servlet.getFirst()).with(servlet.getSecond().getClass());
- } else {
- serveRegex(servlet.getFirst()).with(servlet.getSecond().getClass(), sParams);
- }
- // context.addServlet(servlet.getSecond(), servlet.getFirst());
- }
-
- // httpServer.setHandler(context);
-
- try {
- // httpServer.start();
- } catch (Exception e) { // yes, .start() throws "Exception"
- LOG.severe("Fatal error starting http server.", e);
- return;
- }
- LOG.fine("Wave WebSocket server running.");
- }
-
- private static InetSocketAddress[] parseAddressList(List<String> addressList) {
- if (addressList == null || addressList.size() == 0) {
- return new InetSocketAddress[0];
- } else {
- Set<InetSocketAddress> addresses = Sets.newHashSet();
- for (String str : addressList) {
- if (str.length() == 0) {
- LOG.warning("Encountered empty address in http addresses list.");
- } else {
- try {
- InetSocketAddress address = NetUtils.parseHttpAddress(str);
- if (!addresses.contains(address)) {
- addresses.add(address);
- } else {
- LOG.warning("Ignoring duplicate address in http addresses list: Duplicate entry '" + str
- + "' resolved to " + address.getAddress().getHostAddress());
- }
- } catch (IOException e) {
- LOG.severe("Unable to process address " + str, e);
- }
- }
- }
- return addresses.toArray(new InetSocketAddress[0]);
- }
- }
-
- /**
- * @return a list of {@link SelectChannelConnector} each bound to a
- * host:port pair form the list addresses.
- */
- private List<SelectChannelConnector> getSelectChannelConnectors(InetSocketAddress[] httpAddresses) {
- List<SelectChannelConnector> list = Lists.newArrayList();
- for (InetSocketAddress address : httpAddresses) {
- SelectChannelConnector connector = new SelectChannelConnector();
- connector.setHost(address.getAddress().getHostAddress());
- connector.setPort(address.getPort());
- list.add(connector);
- }
-
- return list;
- }
-
- public class WaveWebSocketServlet extends WebSocketServlet {
- @Override
- protected WebSocket doWebSocketConnect(HttpServletRequest request, String protocol) {
- ParticipantId loggedInUser = sessionManager.getLoggedInUser(request.getSession(false));
-
- WebSocketConnection connection = new WebSocketConnection(loggedInUser);
- return connection.getWebSocketServerChannel();
- }
- }
-
- public class WaveSocketIOServlet extends SocketIOServlet {
- @Override
- protected SocketIOInbound doSocketIOConnect(HttpServletRequest request, String[] protocols) {
- ParticipantId loggedInUser = sessionManager.getLoggedInUser(request.getSession(false));
-
- SocketIOConnection connection = new SocketIOConnection(loggedInUser);
- return connection.getWebSocketServerChannel();
- }
- }
-
- /**
- * Returns the socket the WebSocket server is listening on.
- */
- public SocketAddress getWebSocketAddress() {
- // if (httpServer == null) {
- // return null;
- // } else {
- // Connector c = httpServer.getConnectors()[0];
- // return new InetSocketAddress(c.getHost(), c.getLocalPort());
- // }
- return null;
- }
-
- /**
- * Stops this server.
- */
- public void stopServer() throws IOException {
- try {
- // httpServer.stop(); // yes, .stop() throws "Exception"
- } catch (Exception e) {
- LOG.warning("Fatal error stopping http server.", e);
- }
- LOG.fine("server shutdown.");
- }
-
- /**
- * Register all methods provided by the given service type.
- */
- public void registerService(Service service) {
- synchronized (registeredServices) {
- for (MethodDescriptor methodDescriptor : service.getDescriptorForType().getMethods()) {
- registeredServices.put(methodDescriptor.getInputType(), new RegisteredServiceMethod(service,
- methodDescriptor));
- }
- }
- }
-
- /**
- * Set of servlets
- */
- // List<Pair<String, ServletHolder>> servletRegistry = Lists.newArrayList();
-
- List<Trio<String, HttpServlet, Map<String, String>>> servletNewRegistry = Lists.newArrayList();
-
- /**
- * Add a servlet to the servlet registry. This servlet will be attached to
- * the specified URL pattern when the server is started up.
- *
- * @param urlPattern
- * URL pattern for paths. Eg, '/foo', '/foo/*'
- * @param servlet
- * The servlet object to bind to the specified paths
- * @return the {@link ServletHolder} that holds the servlet.
- */
- public Servlet addServlet(String urlPattern, HttpServlet servlet) {
- // ServletHolder servletHolder = new ServletHolder(servlet);
- servletNewRegistry.add(new Trio<String, HttpServlet, Map<String, String>>(urlPattern, servlet, null));
- return servlet;
- }
-
- public Servlet addServlet(String urlPattern, HttpServlet servlet, Map<String, String> params) {
- // ServletHolder servletHolder = new ServletHolder(servlet);
- servletNewRegistry.add(new Trio<String, HttpServlet, Map<String, String>>(urlPattern, servlet, params));
- return servlet;
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/wave/server/Trio.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/Trio.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/wave/server/Trio.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -1,156 +0,0 @@
-/**
- * Copyright 2009 Google Inc.
- *
- * 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 cc.kune.wave.server;
-
-/**
- * An immutable ordered pair of typed objects.
- *
- * Essentially the same as com.google.common.base.Pair. (we avoid external
- * dependencies from model/)
- *
- *
- *
- * @param <A>
- * Type of value 1
- * @param <B>
- * Type of value 2
- * @param <C>
- * Type of value 3
- */
-public class Trio<A, B, C> {
-
- /**
- * Static constructor to save typing on generic arguments.
- */
- public static <A, B, C> Trio<A, B, C> of(A a, B b, C c) {
- return new Trio<A, B, C>(a, b, c);
- }
-
- /**
- * The first element of the trio; see also {@link #getFirst}.
- */
- public final A first;
-
- /**
- * The second element of the trio; see also {@link #getSecond}.
- */
- public final B second;
- /**
- * The third element of the trio; see also {@link #getThird}.
- */
- public final C third;
-
- /**
- * Pair constructor
- *
- * @param first
- * Value 1
- * @param second
- * Value 2
- */
- public Trio(A first, B second, C third) {
- this.first = first;
- this.second = second;
- this.third = third;
- }
-
- /**
- * Copy constructor
- *
- * @param trio
- * Trio to shallow copy from
- */
- public Trio(Trio<? extends A, ? extends B, ? extends C> trio) {
- first = trio.first;
- second = trio.second;
- third = trio.third;
- }
-
- /**
- * Returns the first element of this pair; see also {@link #first}.
- */
- public A getFirst() {
- return first;
- }
-
- /**
- * Returns the second element of this pair; see also {@link #second}.
- */
- public B getSecond() {
- return second;
- }
-
- /**
- * Returns the third element of this pair; see also {@link #third}.
- */
- public C getThird() {
- return third;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + (first == null ? 0 : first.hashCode());
- result = prime * result + (second == null ? 0 : second.hashCode());
- result = prime * result + (third == null ? 0 : third.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- Trio<?, ?, ?> other = (Trio<?, ?, ?>) obj;
- if (first == null) {
- if (other.first != null) {
- return false;
- }
- } else if (!first.equals(other.first)) {
- return false;
- }
- if (second == null) {
- if (other.second != null) {
- return false;
- }
- } else if (!second.equals(other.second)) {
- return false;
- }
- if (third == null) {
- if (other.third != null) {
- return false;
- }
- } else if (!third.equals(other.third)) {
- return false;
- }
- return true;
- }
-
- @Override
- public String toString() {
- return "Trio [first=" + first + ", second=" + second + ", third=" + third + "]";
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/wave/server/WaveModule.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/WaveModule.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/wave/server/WaveModule.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -1,28 +0,0 @@
-package cc.kune.wave.server;
-
-import java.io.IOException;
-
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.waveprotocol.box.server.persistence.PersistenceException;
-
-import com.google.inject.Injector;
-import com.google.inject.servlet.ServletModule;
-
-public class WaveModule extends ServletModule {
-
- private static final Log LOG = LogFactory.getLog(WaveModule.class);
-
- @Override
- protected void configureServlets() {
- super.configureServlets();
-
- }
-
- public void runWaveServer(Injector settingsInjector) throws IOException, PersistenceException,
- ConfigurationException {
-
- }
-
-}
Modified: trunk/src/main/java/cc/kune/wave/server/WaveStarter.java
===================================================================
--- trunk/src/main/java/cc/kune/wave/server/WaveStarter.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/wave/server/WaveStarter.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -1,3 +1,20 @@
+/**
+ * Copyright 2009 Google Inc.
+ *
+ * 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 cc.kune.wave.server;
import org.apache.commons.configuration.ConfigurationException;
@@ -31,6 +48,7 @@
import org.waveprotocol.box.server.rpc.UserRegistrationServlet;
import org.waveprotocol.box.server.rpc.WaveClientServlet;
import org.waveprotocol.box.server.waveserver.WaveBus;
+import org.waveprotocol.box.server.waveserver.WaveServerException;
import org.waveprotocol.box.server.waveserver.WaveletProvider;
import org.waveprotocol.wave.crypto.CertPathStore;
import org.waveprotocol.wave.federation.FederationSettings;
@@ -50,83 +68,58 @@
private static final Log LOG = LogFactory.getLog(WaveStarter.class);
private static final String PROPERTIES_FILE_KEY = "wave-server.properties";
- public WaveStarter() {
- }
-
- public void runMain(Injector settingsInjector) {
- try {
- Module coreSettings = CustomSettingsBinder.bindSettings(PROPERTIES_FILE_KEY, CoreSettings.class);
- run(coreSettings, settingsInjector);
- return;
- } catch (PersistenceException e) {
- LOG.error("PersistenceException when running server:", e);
- } catch (ConfigurationException e) {
- LOG.error("ConfigurationException when running server:", e);
- }
- }
-
- public void run(Module coreSettings, Injector parentInjector) throws PersistenceException,
- ConfigurationException {
- // Injector settingsInjector = Guice.createInjector(coreSettings);
- Injector settingsInjector = parentInjector.createChildInjector(coreSettings);
- boolean enableFederation = settingsInjector.getInstance(Key.get(Boolean.class,
- Names.named(CoreSettings.ENABLE_FEDERATION)));
-
+ private static Module buildFederationModule(final Injector settingsInjector, final boolean enableFederation)
+ throws ConfigurationException {
+ Module federationModule;
if (enableFederation) {
- Module federationSettings =
- SettingsBinder.bindSettings(PROPERTIES_FILE_KEY, FederationSettings.class);
- // This MUST happen first, or bindings will fail if federation is enabled.
- settingsInjector = settingsInjector.createChildInjector(federationSettings);
+ federationModule = settingsInjector.getInstance(XmppFederationModule.class);
+ } else {
+ federationModule = settingsInjector.getInstance(NoOpFederationModule.class);
}
+ return federationModule;
+ }
- Module federationModule = buildFederationModule(settingsInjector, enableFederation);
- PersistenceModule persistenceModule = settingsInjector.getInstance(PersistenceModule.class);
- Injector injector =
- settingsInjector.createChildInjector(new ServerModule(enableFederation),
- new RobotApiModule(), federationModule, persistenceModule);
+ private static void initializeFederation(final Injector injector) {
+ final FederationTransport federationManager = injector.getInstance(FederationTransport.class);
+ federationManager.startFederation();
+ }
- ServerRpcProvider server = injector.getInstance(ServerRpcProvider.class);
- WaveBus waveBus = injector.getInstance(WaveBus.class);
+ private static void initializeFrontend(final Injector injector, final ServerRpcProvider server,
+ final WaveBus waveBus) throws WaveServerException {
+ final HashedVersionFactory hashFactory = injector.getInstance(HashedVersionFactory.class);
+ final WaveletProvider provider = injector.getInstance(WaveletProvider.class);
+ final ClientFrontend frontend = ClientFrontendImpl.create(hashFactory, provider, waveBus);
- initializeStores(injector);
- initializeServlets(injector, server);
- initializeRobots(injector, waveBus);
- initializeFrontend(injector, server, waveBus);
- initializeFederation(injector);
+ final ProtocolWaveClientRpc.Interface rpcImpl = WaveClientRpcImpl.create(frontend, false);
+ server.registerService(ProtocolWaveClientRpc.newReflectiveService(rpcImpl));
+ }
- LOG.info("Starting server");
- server.startWebSocketServer();
- }
+ private static void initializeRobots(final Injector injector, final WaveBus waveBus) {
+ final RobotsGateway robotsGateway = injector.getInstance(RobotsGateway.class);
+ waveBus.subscribe(robotsGateway);
+ }
- private static Module buildFederationModule(Injector settingsInjector, boolean enableFederation)
- throws ConfigurationException {
- Module federationModule;
- if (enableFederation) {
- federationModule = settingsInjector.getInstance(XmppFederationModule.class);
- } else {
- federationModule = settingsInjector.getInstance(NoOpFederationModule.class);
- }
- return federationModule;
- }
-
- private static void initializeStores(Injector injector) throws PersistenceException {
- AccountStore accountStore = injector.getInstance(AccountStore.class);
+ private static void initializeServer(final Injector injector) throws PersistenceException, WaveServerException {
+ final AccountStore accountStore = injector.getInstance(AccountStore.class);
accountStore.initializeAccountStore();
AccountStoreHolder.init(accountStore,
- injector.getInstance(Key.get(String.class, Names.named(CoreSettings.WAVE_SERVER_DOMAIN))));
+ injector.getInstance(Key.get(String.class, Names.named(CoreSettings.WAVE_SERVER_DOMAIN))));
- // Initialize the SignerInfoStore
- CertPathStore certPathStore = injector.getInstance(CertPathStore.class);
+ // Initialize the SignerInfoStore.
+ final CertPathStore certPathStore = injector.getInstance(CertPathStore.class);
if (certPathStore instanceof SignerInfoStore) {
- ((SignerInfoStore)certPathStore).initializeSignerInfoStore();
+ ((SignerInfoStore) certPathStore).initializeSignerInfoStore();
}
- }
- private static void initializeServlets(Injector injector, ServerRpcProvider server) {
+ // Initialize the server.
+ final WaveletProvider waveServer = injector.getInstance(WaveletProvider.class);
+ waveServer.initialize();
+ }
+
+ private static void initializeServlets(final Injector injector, final ServerRpcProvider server) {
server.addServlet("/attachment/*", injector.getInstance(AttachmentServlet.class));
- server.addServlet(SessionManager.SIGN_IN_URL,
- injector.getInstance(AuthenticationServlet.class));
+ server.addServlet(SessionManager.SIGN_IN_URL, injector.getInstance(AuthenticationServlet.class));
server.addServlet("/auth/signout", injector.getInstance(SignOutServlet.class));
server.addServlet("/auth/register", injector.getInstance(UserRegistrationServlet.class));
@@ -134,40 +127,69 @@
server.addServlet("/robot/dataapi", injector.getInstance(DataApiServlet.class));
server.addServlet(DataApiOAuthServlet.DATA_API_OAUTH_PATH + "/*",
- injector.getInstance(DataApiOAuthServlet.class));
+ injector.getInstance(DataApiOAuthServlet.class));
server.addServlet("/robot/dataapi/rpc", injector.getInstance(DataApiServlet.class));
server.addServlet("/robot/register/*", injector.getInstance(RobotRegistrationServlet.class));
server.addServlet("/robot/rpc", injector.getInstance(ActiveApiServlet.class));
- String gadgetServerHostname =injector.getInstance(Key.get(String.class,
- Names.named(CoreSettings.GADGET_SERVER_HOSTNAME)));
- ProxyServlet.Transparent proxyServlet =
- new ProxyServlet.Transparent("/gadgets", "http", gadgetServerHostname, injector
- .getInstance(Key.get(int.class, Names.named(CoreSettings.GADGET_SERVER_PORT))),
- "/gadgets");
- ServletHolder proxyServletHolder = server.addServlet("/gadgets/*", proxyServlet);
+ final String gadgetServerHostname = injector.getInstance(Key.get(String.class,
+ Names.named(CoreSettings.GADGET_SERVER_HOSTNAME)));
+ final ProxyServlet.Transparent proxyServlet = new ProxyServlet.Transparent("/gadgets", "http",
+ gadgetServerHostname, injector.getInstance(Key.get(int.class,
+ Names.named(CoreSettings.GADGET_SERVER_PORT))), "/gadgets");
+ final ServletHolder proxyServletHolder = server.addServlet("/gadgets/*", proxyServlet);
proxyServletHolder.setInitParameter("HostHeader", gadgetServerHostname);
server.addServlet("/", injector.getInstance(WaveClientServlet.class));
- }
+ }
- private static void initializeRobots(Injector injector, WaveBus waveBus) {
- RobotsGateway robotsGateway = injector.getInstance(RobotsGateway.class);
- waveBus.subscribe(robotsGateway);
- }
+ public WaveStarter() {
+ }
- private static void initializeFrontend(Injector injector, ServerRpcProvider server,
- WaveBus waveBus) {
- HashedVersionFactory hashFactory = injector.getInstance(HashedVersionFactory.class);
- WaveletProvider provider = injector.getInstance(WaveletProvider.class);
- ClientFrontend frontend = ClientFrontendImpl.create(hashFactory, provider, waveBus);
+ public void run(final Module coreSettings, final Injector parentInjector) throws PersistenceException,
+ ConfigurationException, WaveServerException {
+ // Injector settingsInjector = Guice.createInjector(coreSettings);
+ Injector settingsInjector = parentInjector.createChildInjector(coreSettings);
+ final boolean enableFederation = settingsInjector.getInstance(Key.get(Boolean.class,
+ Names.named(CoreSettings.ENABLE_FEDERATION)));
- ProtocolWaveClientRpc.Interface rpcImpl = WaveClientRpcImpl.create(frontend, false);
- server.registerService(ProtocolWaveClientRpc.newReflectiveService(rpcImpl));
- }
+ if (enableFederation) {
+ final Module federationSettings = SettingsBinder.bindSettings(PROPERTIES_FILE_KEY, FederationSettings.class);
+ // This MUST happen first, or bindings will fail if federation is
+ // enabled.
+ settingsInjector = settingsInjector.createChildInjector(federationSettings);
+ }
- private static void initializeFederation(Injector injector) {
- FederationTransport federationManager = injector.getInstance(FederationTransport.class);
- federationManager.startFederation();
- }
+ final Module federationModule = buildFederationModule(settingsInjector, enableFederation);
+ final PersistenceModule persistenceModule = settingsInjector.getInstance(PersistenceModule.class);
+ final Injector injector = settingsInjector.createChildInjector(new ServerModule(enableFederation),
+ new RobotApiModule(), federationModule, persistenceModule);
+
+ final ServerRpcProvider server = injector.getInstance(ServerRpcProvider.class);
+ final WaveBus waveBus = injector.getInstance(WaveBus.class);
+
+ initializeServer(injector);
+ initializeServlets(injector, server);
+ initializeRobots(injector, waveBus);
+ initializeFrontend(injector, server, waveBus);
+ initializeFederation(injector);
+
+ LOG.info("Starting server");
+ server.startWebSocketServer();
+ }
+
+ public void runMain(final Injector settingsInjector) {
+ try {
+ final Module coreSettings = CustomSettingsBinder.bindSettings(PROPERTIES_FILE_KEY, CoreSettings.class);
+ run(coreSettings, settingsInjector);
+ return;
+ } catch (final PersistenceException e) {
+ LOG.error("PersistenceException when running server:", e);
+ } catch (final ConfigurationException e) {
+ LOG.error("ConfigurationException when running server:", e);
+ } catch (final WaveServerException e) {
+ LOG.error("WaveServerException when running server:", e);
+ }
+
+ }
}
Modified: trunk/src/main/java/cc/kune/wspace/client/resources/wsArmor.css
===================================================================
--- trunk/src/main/java/cc/kune/wspace/client/resources/wsArmor.css 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/cc/kune/wspace/client/resources/wsArmor.css 2011-01-26 21:18:00 UTC (rev 1224)
@@ -6,7 +6,10 @@
}
.mainPanel {
- border: 7px solid white;
+ border-top: 2px solid white;
+ border-bottom: 7px solid white;
+ border-right: 7px solid white;
+ border-left: 7px solid white;
}
.floatRight {
Modified: trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -99,19 +99,8 @@
builder.exclude("/stylesheets/.*");
builder.exclude("/javascripts/.*");
builder.exclude("/templates/.*");
- // wave servlets (see RackServletFilter)
- // builder.exclude("/gadget.*");
- // builder.exclude("/attachment/*");
- // builder.exclude("/auth/signin");
- // builder.exclude("/auth/signout");
- // builder.exclude("/auth/register");
- // builder.exclude("/fetch/*");
- // builder.exclude("/gadgets.*");
- // // wave (from ServerRprcProvider)
- // builder.exclude("/socket");
- // builder.exclude("/socket.io/*");
- // builder.exclude("/static/*");
- // FIXME (add robots and / WaveClientServlet)
+ builder.exclude("/wiab.*");
+ builder.exclude("/socket.*");
builder.at(".*").install(new LogFilter());
builder.at(".*").install(new GuiceFilter());
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/noti/NotifyUser.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/noti/NotifyUser.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/noti/NotifyUser.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -21,6 +21,7 @@
import org.ourproject.kune.platf.client.services.Images;
+import cc.kune.core.client.notify.msgs.UserNotifyEvent;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.calclab.suco.client.events.Event;
@@ -29,27 +30,34 @@
import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
import com.calclab.suco.client.events.Listener2;
+import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
+/**
+ * Use {@link EventBus} and {@link UserNotifyEvent} instead
+ *
+ */
+@Deprecated
public class NotifyUser {
public enum Level {
- info, important, veryImportant, error,
+ error, important, info, veryImportant,
}
- private static final Event2<Level, String> ON_NOTIFY = new Event2<Level, String>("onNotify");
+ private static I18nTranslationService i18n;
+ private static Images images;
private static final Event2<String, String> ON_ALERT = new Event2<String, String>("onAlert");
private static final Event<ConfirmationAsk> ON_CONFIRMATION_ASK = new Event<ConfirmationAsk>("onConfirmationAsk");
- private static final Event<String> ON_PROGRESS = new Event<String>("onProgress");
private static final Event0 ON_HIDE_PROGRESS = new Event0("onHideProgress");
- private static I18nTranslationService i18n;
+ private static final Event2<Level, String> ON_NOTIFY = new Event2<Level, String>("onNotify");
- private static Images images;
+ private static final Event<String> ON_PROGRESS = new Event<String>("onProgress");
public static void askConfirmation(final String confirmationTitle, final String confirmationText,
final Listener0 onConfirm) {
ON_CONFIRMATION_ASK.fire(new ConfirmationAsk(confirmationTitle, confirmationText, onConfirm, new Listener0() {
+ @Override
public void onEvent() {
// Do nothing
}
@@ -133,15 +141,15 @@
ON_NOTIFY.fire(Level.veryImportant, message);
}
+ private NotifyUser() {
+ }
+
public NotifyUser(final I18nTranslationService i18n, final Images images) {
this();
NotifyUser.i18n = i18n;
NotifyUser.images = images;
}
- private NotifyUser() {
- }
-
public void addAlerter(final Listener2<String, String> listener) {
ON_ALERT.add(listener);
}
Modified: trunk/src/main/java/org/ourproject/kune/rack/RackServletFilter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/rack/RackServletFilter.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/org/ourproject/kune/rack/RackServletFilter.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -36,6 +36,8 @@
import org.ourproject.kune.rack.dock.Dock;
import org.ourproject.kune.rack.dock.RequestMatcher;
+import cc.kune.wave.server.WaveStarter;
+
import com.google.inject.Guice;
import com.google.inject.Injector;
@@ -129,9 +131,9 @@
module.configure(builder);
final Rack rack = builder.getRack();
- // WaveStarter waveStarter = new WaveStarter();
+ final WaveStarter waveStarter = new WaveStarter();
final Injector injector = installInjector(filterConfig, rack);
- // waveStarter.runMain(injector);
+ waveStarter.runMain(injector);
startContainerListeners(rack.getListeners(), injector);
docks = rack.getDocks();
excludes = rack.getExcludes();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -163,15 +163,11 @@
import org.ourproject.kune.workspace.client.signin.SignInPanel;
import org.ourproject.kune.workspace.client.signin.SignInPresenter;
import org.ourproject.kune.workspace.client.signin.SignInView;
-import org.ourproject.kune.workspace.client.site.SiteToken;
import org.ourproject.kune.workspace.client.site.WorkspaceNotifyUser;
import org.ourproject.kune.workspace.client.site.msg.ToastMessage;
import org.ourproject.kune.workspace.client.site.msg.ToastMessagePanel;
import org.ourproject.kune.workspace.client.site.msg.ToastMessagePresenter;
import org.ourproject.kune.workspace.client.sitebar.sitelogo.SiteLogo;
-import org.ourproject.kune.workspace.client.sitebar.sitenewgroup.SiteNewGroupLink;
-import org.ourproject.kune.workspace.client.sitebar.sitenewgroup.SiteNewGroupLinkPanel;
-import org.ourproject.kune.workspace.client.sitebar.sitenewgroup.SiteNewGroupLinkPresenter;
import org.ourproject.kune.workspace.client.sitebar.siteoptions.SiteOptions;
import org.ourproject.kune.workspace.client.sitebar.siteoptions.SiteOptionsPanel;
import org.ourproject.kune.workspace.client.sitebar.siteoptions.SiteOptionsPresenter;
@@ -251,14 +247,15 @@
import cc.kune.core.client.rpcservices.SocialNetworkServiceAsync;
import cc.kune.core.client.rpcservices.UserServiceAsync;
import cc.kune.core.client.state.AccessRightsClientManager;
+import cc.kune.core.client.state.HistoryTokenCallback;
import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.SiteCommonTokens;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.StateTokenUtils;
import cc.kune.core.shared.dto.UserSimpleDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import com.calclab.suco.client.events.Listener0;
import com.calclab.suco.client.ioc.decorator.NoDecoration;
import com.calclab.suco.client.ioc.decorator.Singleton;
import com.calclab.suco.client.ioc.module.Factory;
@@ -383,17 +380,6 @@
}
});
- register(ApplicationComponentGroup.class, new Factory<SiteNewGroupLink>(SiteNewGroupLink.class) {
- @Override
- public SiteNewGroupLink create() {
- final SiteNewGroupLinkPresenter presenter = new SiteNewGroupLinkPresenter();
- final SiteNewGroupLinkPanel panel = new SiteNewGroupLinkPanel(presenter, i(WorkspaceSkeleton.class),
- i(I18nUITranslationService.class));
- presenter.init(panel);
- return presenter;
- }
- });
-
register(ApplicationComponentGroup.class, new Factory<SiteOptions>(SiteOptions.class) {
@Override
public SiteOptions create() {
@@ -957,30 +943,34 @@
});
// Register of tokens like "signin", "newgroup", "translate" etcetera
- i(StateManager.class).addSiteToken(SiteToken.signin.toString(), new Listener0() {
+ i(StateManager.class).addSiteToken(SiteCommonTokens.SIGNIN, new HistoryTokenCallback() {
+
@Override
- public void onEvent() {
+ public void onHistoryToken() {
i(SignIn.class).doSignIn();
}
});
- i(StateManager.class).addSiteToken(SiteToken.register.toString(), new Listener0() {
+ i(StateManager.class).addSiteToken(SiteCommonTokens.REGISTER, new HistoryTokenCallback() {
+
@Override
- public void onEvent() {
+ public void onHistoryToken() {
i(Register.class).doRegister();
}
});
- i(StateManager.class).addSiteToken(SiteToken.newgroup.toString(), new Listener0() {
+ i(StateManager.class).addSiteToken(SiteCommonTokens.NEWGROUP, new HistoryTokenCallback() {
+
@Override
- public void onEvent() {
+ public void onHistoryToken() {
i(NewGroup.class).doNewGroup();
}
});
- i(StateManager.class).addSiteToken(SiteToken.translate.toString(), new Listener0() {
+ i(StateManager.class).addSiteToken(SiteCommonTokens.TRANSLATE, new HistoryTokenCallback() {
+
@Override
- public void onEvent() {
+ public void onHistoryToken() {
i(I18nTranslator.class).doShowTranslator();
}
});
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -23,13 +23,14 @@
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
import org.ourproject.kune.workspace.client.WorkspaceMessages;
-import org.ourproject.kune.workspace.client.site.SiteToken;
import cc.kune.common.client.errors.UIException;
import cc.kune.core.client.errors.GroupNameInUseException;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
+import cc.kune.core.client.state.HistoryTokenCallback;
import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.SiteCommonTokens;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.GroupDTO;
@@ -37,18 +38,17 @@
import cc.kune.core.shared.dto.LicenseDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import com.calclab.suco.client.events.Listener0;
import com.calclab.suco.client.ioc.Provider;
import com.google.gwt.user.client.rpc.AsyncCallback;
public class NewGroupPresenter implements NewGroup {
- private NewGroupView view;
+ private final Provider<GroupServiceAsync> groupService;
private final I18nTranslationService i18n;
+ private boolean mustGoToPrevious;
private final Session session;
private final StateManager stateManager;
- private final Provider<GroupServiceAsync> groupService;
- private boolean mustGoToPrevious;
+ private NewGroupView view;
public NewGroupPresenter(final I18nTranslationService i18n, final Session session, final StateManager stateManager,
final Provider<GroupServiceAsync> groupService) {
@@ -56,16 +56,20 @@
this.session = session;
this.stateManager = stateManager;
this.groupService = groupService;
- stateManager.addSiteToken(SiteToken.newgroup.toString(), new Listener0() {
- public void onEvent() {
+ stateManager.addSiteToken(SiteCommonTokens.NEWGROUP, new HistoryTokenCallback() {
+
+ @Override
+ public void onHistoryToken() {
doNewGroup();
}
});
mustGoToPrevious = true;
}
+ @Override
public void doNewGroup() {
session.check(new AsyncCallbackSimple<Void>() {
+ @Override
public void onSuccess(final Void result) {
if (session.isLogged()) {
NotifyUser.showProgressProcessing();
@@ -81,6 +85,16 @@
});
}
+ private GroupType getTypeOfGroup() {
+ if (view.isProject()) {
+ return GroupType.PROJECT;
+ } else if (view.isOrganization()) {
+ return GroupType.ORGANIZATION;
+ } else {
+ return GroupType.COMMUNITY;
+ }
+ }
+
public View getView() {
return view;
}
@@ -113,6 +127,7 @@
group.setDefaultLicense(license);
final AsyncCallback<StateToken> callback = new AsyncCallback<StateToken>() {
+ @Override
public void onFailure(final Throwable caught) {
if (caught instanceof GroupNameInUseException) {
view.unMask();
@@ -124,6 +139,7 @@
}
}
+ @Override
public void onSuccess(final StateToken token) {
mustGoToPrevious = false;
view.hide();
@@ -136,22 +152,12 @@
}
}
- public void setMessage(final String message, final Level level) {
- view.setMessage(message, level);
- }
-
- private GroupType getTypeOfGroup() {
- if (view.isProject()) {
- return GroupType.PROJECT;
- } else if (view.isOrganization()) {
- return GroupType.ORGANIZATION;
- } else {
- return GroupType.COMMUNITY;
- }
- }
-
private void reset() {
view.clearData();
mustGoToPrevious = true;
}
+
+ public void setMessage(final String message, final Level level) {
+ view.setMessage(message, level);
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPresenter.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -23,12 +23,12 @@
import org.ourproject.kune.platf.client.View;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser.Level;
-import org.ourproject.kune.workspace.client.site.SiteToken;
import cc.kune.core.client.errors.UserAuthException;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.rpcservices.UserServiceAsync;
import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.SiteCommonTokens;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.dto.UserDTO;
import cc.kune.core.shared.dto.UserInfoDTO;
@@ -39,9 +39,9 @@
public class SignInPresenter extends SignInAbstractPresenter implements SignIn {
+ private final Provider<Register> registerProvider;
+ private final Provider<UserServiceAsync> userService;
private SignInView view;
- private final Provider<UserServiceAsync> userService;
- private final Provider<Register> registerProvider;
public SignInPresenter(final Session session, final StateManager stateManager, final I18nUITranslationService i18n,
final Provider<UserServiceAsync> userService, final Provider<Register> registerProvider) {
@@ -50,6 +50,7 @@
this.registerProvider = registerProvider;
}
+ @Override
public void doSignIn() {
registerProvider.get().hide();
if (session.isLogged()) {
@@ -76,7 +77,7 @@
view.reset();
view.hideMessages();
view.hide();
- stateManager.gotoToken(SiteToken.register.toString());
+ stateManager.gotoToken(SiteCommonTokens.REGISTER);
}
public void onFormSignIn() {
@@ -92,6 +93,7 @@
user.setPassword(passwd);
final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() {
+ @Override
public void onFailure(final Throwable caught) {
view.unMask();
NotifyUser.hideProgress();
@@ -103,6 +105,7 @@
}
}
+ @Override
public void onSuccess(final UserInfoDTO userInfoDTO) {
onSignIn(userInfoDTO);
stateManager.restorePreviousToken();
Deleted: trunk/src/main/java/org/ourproject/kune/workspace/client/site/SiteToken.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/site/SiteToken.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/site/SiteToken.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -1,24 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2009 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- \*/
-package org.ourproject.kune.workspace.client.site;
-
-public enum SiteToken {
- signin, newgroup, translate, register
-}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignInLinkPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignInLinkPanel.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignInLinkPanel.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -19,10 +19,10 @@
\*/
package org.ourproject.kune.workspace.client.sitebar.sitesign;
-import org.ourproject.kune.workspace.client.site.SiteToken;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.state.SiteCommonTokens;
import com.google.gwt.user.client.ui.Hyperlink;
@@ -37,11 +37,12 @@
signInHyperlink = new Hyperlink();
signInHyperlink.ensureDebugId(SITE_SIGN_IN);
signInHyperlink.setText(i18n.t("Sign in to collaborate"));
- signInHyperlink.setTargetHistoryToken(SiteToken.signin.toString());
+ signInHyperlink.setTargetHistoryToken(SiteCommonTokens.SIGNIN);
ws.getSiteBar().add(signInHyperlink);
ws.getSiteBar().addSpacer();
}
+ @Override
public void setVisible(final boolean visible) {
signInHyperlink.setVisible(visible);
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignOutLinkPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignOutLinkPresenter.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesign/SiteSignOutLinkPresenter.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -42,40 +42,60 @@
public class SiteSignOutLinkPresenter implements SiteSignOutLink {
- private SiteSignOutLinkView view;
+ public class BeforeSignOut extends BeforeActionCollection {
+ }
+ private final BeforeActionCollection beforeSignOut;
private final Session session;
private final Provider<UserServiceAsync> userService;
- private final BeforeActionCollection beforeSignOut;
+ private SiteSignOutLinkView view;
+
public SiteSignOutLinkPresenter(final Session session, final Provider<UserServiceAsync> userService,
final Provider<ErrorHandler> errorHandler) {
this.session = session;
this.userService = userService;
session.onUserSignIn(new Listener<UserInfoDTO>() {
+ @Override
public void onEvent(final UserInfoDTO userInfoDTO) {
view.setVisible(true);
}
});
session.onUserSignOut(new Listener0() {
+ @Override
public void onEvent() {
view.setVisible(false);
}
});
- errorHandler.get().onSessionExpired(new Listener0() {
- public void onEvent() {
- clientUIsignOut();
- }
- });
+ // errorHandler.get().onSessionExpired(new Listener0() {
+ // @Override
+ // public void onEvent() {
+ // clientUIsignOut();
+ // }
+ // });
beforeSignOut = new BeforeActionCollection();
}
+ @Override
public void addBeforeSignOut(final BeforeActionListener listener) {
beforeSignOut.add(listener);
}
+ private void clientUIsignOut() {
+ // FIXME: Remove cookie doesn't works in all browsers, know
+ // issue:
+ // http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/ded8…
+ // http://code.google.com/p/google-web-toolkit/issues/detail?id=1735&q=removeC…
+ Cookies.removeCookie(Session.USERHASH);
+ // Workaround:
+ Cookies.setCookie(Session.USERHASH, null, new Date(0), null, "/", false);
+ session.setUserHash(null);
+ session.setCurrentUserInfo(null);
+ }
+
public void doSignOut() {
if (beforeSignOut.checkBeforeAction()) {
userService.get().logout(session.getUserHash(), new AsyncCallback<Void>() {
+ @Override
public void onFailure(final Throwable caught) {
NotifyUser.hideProgress();
if (caught instanceof SessionExpiredException) {
@@ -87,6 +107,7 @@
}
}
+ @Override
public void onSuccess(final Void arg0) {
NotifyUser.hideProgress();
clientUIsignOut();
@@ -107,20 +128,9 @@
view.setVisible(false);
}
+ @Override
public void removeBeforeSignOut(final BeforeActionListener listener) {
beforeSignOut.remove(listener);
}
- private void clientUIsignOut() {
- // FIXME: Remove cookie doesn't works in all browsers, know
- // issue:
- // http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/ded8…
- // http://code.google.com/p/google-web-toolkit/issues/detail?id=1735&q=removeC…
- Cookies.removeCookie(Session.USERHASH);
- // Workaround:
- Cookies.setCookie(Session.USERHASH, null, new Date(0), null, "/", false);
- session.setUserHash(null);
- session.setCurrentUserInfo(null);
- }
-
}
Modified: trunk/src/main/resources/wave-server.properties
===================================================================
--- trunk/src/main/resources/wave-server.properties 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/resources/wave-server.properties 2011-01-26 21:18:00 UTC (rev 1224)
@@ -8,6 +8,8 @@
# Each address is a comma separated host:port pair.
http_frontend_public_address = localhost:9898
http_frontend_addresses = ${http_frontend_public_address}
+http_baseurl = /wiab/
+resource_base = ./target/kune-0.0.7/
### Server-specific variables
###
Modified: trunk/src/main/webapp/WEB-INF/web.xml
===================================================================
--- trunk/src/main/webapp/WEB-INF/web.xml 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/main/webapp/WEB-INF/web.xml 2011-01-26 21:18:00 UTC (rev 1224)
@@ -14,44 +14,44 @@
<welcome-file-list>
<welcome-file>ws.html</welcome-file>
</welcome-file-list>
- <!-- Note: this gives problems depending on the version of jetty or tomcat -->
- <context-param>
- <param-name>jruby.standalone</param-name>
- <param-value>true</param-value>
- </context-param>
- <context-param>
- <param-name>rails.root</param-name>
- <param-value>/WEB-INF/publicspace/
- </param-value>
- </context-param>
- <context-param>
- <param-name>files.prefix</param-name>
- <param-value>/WEB-INF/publicspace/public
- </param-value>
- </context-param>
- <context-param>
- <param-name>rails.env</param-name>
- <param-value>production</param-value>
- </context-param>
- <context-param>
- <param-name>jruby.max.runtimes</param-name>
- <param-value>1</param-value>
- </context-param>
- <context-param>
- <param-name>public.root</param-name>
- <param-value>/public/</param-value>
- </context-param>
- <filter>
- <filter-name>RackFilter</filter-name>
- <filter-class>org.jruby.rack.RackFilter</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>RackFilter</filter-name>
- <url-pattern>/public/*</url-pattern>
- </filter-mapping>
- <listener>
- <listener-class>org.jruby.rack.rails.RailsServletContextListener</listener-class>
- </listener>
+ <!-- Note: this gives problems depending on the version of jetty or tomcat -->
+<!-- <context-param>-->
+<!-- <param-name>jruby.standalone</param-name>-->
+<!-- <param-value>true</param-value>-->
+<!-- </context-param>-->
+<!-- <context-param>-->
+<!-- <param-name>rails.root</param-name>-->
+<!-- <param-value>/WEB-INF/publicspace/-->
+<!-- </param-value>-->
+<!-- </context-param>-->
+<!-- <context-param>-->
+<!-- <param-name>files.prefix</param-name>-->
+<!-- <param-value>/WEB-INF/publicspace/public-->
+<!-- </param-value>-->
+<!-- </context-param>-->
+<!-- <context-param>-->
+<!-- <param-name>rails.env</param-name>-->
+<!-- <param-value>production</param-value>-->
+<!-- </context-param>-->
+<!-- <context-param>-->
+<!-- <param-name>jruby.max.runtimes</param-name>-->
+<!-- <param-value>1</param-value>-->
+<!-- </context-param>-->
+<!-- <context-param>-->
+<!-- <param-name>public.root</param-name>-->
+<!-- <param-value>/public/</param-value>-->
+<!-- </context-param>-->
+<!-- <filter>-->
+<!-- <filter-name>RackFilter</filter-name>-->
+<!-- <filter-class>org.jruby.rack.RackFilter</filter-class>-->
+<!-- </filter>-->
+<!-- <filter-mapping>-->
+<!-- <filter-name>RackFilter</filter-name>-->
+<!-- <url-pattern>/public/*</url-pattern>-->
+<!-- </filter-mapping>-->
+<!-- <listener>-->
+<!-- <listener-class>org.jruby.rack.rails.RailsServletContextListener</listener-class>-->
+<!-- </listener>-->
<filter>
<filter-name>rack</filter-name>
<filter-class>org.ourproject.kune.rack.RackServletFilter</filter-class>
@@ -87,6 +87,79 @@
<url-pattern>/http-bind/</url-pattern>
</servlet-mapping>
<servlet>
+ <servlet-name>WiabSocketIO</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabSocketIO</servlet-name>
+ <url-pattern>/socket.io/*</url-pattern>
+ </servlet-mapping>
+ <servlet>
+ <servlet-name>WiabServlets</servlet-name>
+ <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
+ <init-param>
+ <param-name>ProxyTo</param-name>
+ <param-value>http://127.0.0.1:9898/</param-value>
+ </init-param>
+ <init-param>
+ <param-name>Prefix</param-name>
+ <param-value>/</param-value>
+ </init-param>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>WiabServlets</servlet-name>
+ <url-pattern>/wiab/*</url-pattern>
+ </servlet-mapping>
+
+ <!-- <servlet> -->
+ <!-- <servlet-name>WIABProxy</servlet-name> -->
+ <!-- <servlet-class>de.spieleck.servlets.ProxyServlet</servlet-class> -->
+ <!-- <init-param> -->
+ <!-- <param-name>remotePath</param-name> -->
+ <!-- <param-value>/wiab/</param-value> -->
+ <!-- </init-param> -->
+ <!-- <init-param> -->
+ <!-- <param-name>remoteServer</param-name> -->
+ <!-- <param-value>localhost</param-value> -->
+ <!-- </init-param> -->
+ <!-- <init-param> -->
+ <!-- <param-name>remotePort</param-name> -->
+ <!-- <param-value>9898</param-value> -->
+ <!-- </init-param> -->
+ <!-- </servlet> -->
+ <!-- <servlet-mapping> -->
+ <!-- <servlet-name>WIABProxy</servlet-name> -->
+ <!-- <url-pattern>/wiab/*</url-pattern> -->
+ <!-- </servlet-mapping> -->
+ <!-- <servlet> -->
+ <!-- <servlet-name>WIABSocket</servlet-name> -->
+ <!-- <servlet-class>de.spieleck.servlets.ProxyServlet</servlet-class> -->
+ <!-- <init-param> -->
+ <!-- <param-name>remotePath</param-name> -->
+ <!-- <param-value>/wiab/socket.io/</param-value> -->
+ <!-- </init-param> -->
+ <!-- <init-param> -->
+ <!-- <param-name>remoteServer</param-name> -->
+ <!-- <param-value>localhost</param-value> -->
+ <!-- </init-param> -->
+ <!-- <init-param> -->
+ <!-- <param-name>remotePort</param-name> -->
+ <!-- <param-value>9898</param-value> -->
+ <!-- </init-param> -->
+ <!-- </servlet> -->
+ <!-- <servlet-mapping> -->
+ <!-- <servlet-name>WIABsocket</servlet-name> -->
+ <!-- <url-pattern>/socket.io/*</url-pattern> -->
+ <!-- </servlet-mapping> -->
+ <servlet>
<servlet-name>remoteLoggerServiceImpl</servlet-name>
<servlet-class>com.allen_sauer.gwt.log.server.RemoteLoggerServiceImpl</servlet-class>
</servlet>
Modified: trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/test/java/cc/kune/core/client/state/StateManagerTest.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -5,14 +5,12 @@
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
-import org.ourproject.kune.workspace.client.site.SiteToken;
import cc.kune.core.client.actions.BeforeActionListener;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.StateAbstractDTO;
import com.calclab.suco.testing.events.MockedListener;
-import com.calclab.suco.testing.events.MockedListener0;
import com.calclab.suco.testing.events.MockedListener2;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -20,16 +18,16 @@
public class StateManagerTest {
private static final String HASH = "someUserHash";
- private StateManagerDefault stateManager;
- private HistoryWrapper history;
+ private BeforeActionListener beforeChangeListener1;
+ private BeforeActionListener beforeChangeListener2;
private ContentProvider contentProvider;
- private Session session;
- private MockedListener2<String, String> toolChangeListener;
private MockedListener2<String, String> groupChangeListener;
- private MockedListener<StateAbstractDTO> stateChangeListener;
+ private HistoryWrapper history;
+ private Session session;
private StateAbstractDTO state;
- private BeforeActionListener beforeChangeListener1;
- private BeforeActionListener beforeChangeListener2;
+ private MockedListener<StateAbstractDTO> stateChangeListener;
+ private StateManagerDefault stateManager;
+ private MockedListener2<String, String> toolChangeListener;
@Before
public void before() {
@@ -60,6 +58,13 @@
assertTrue(stateChangeListener.isCalled(2));
}
+ private void changeState(final String... tokens) {
+ for (final String token : tokens) {
+ Mockito.when(state.getStateToken()).thenReturn(new StateToken(token));
+ stateManager.setState(state);
+ }
+ }
+
@Test
public void changeStateWithDifferentAndGroupsToolsMustFireListener() {
changeState("group2.tool1", "group1.tool2");
@@ -102,6 +107,15 @@
assertTrue(stateChangeListener.isCalled(2));
}
+ private String confBeforeStateChangeListeners(final boolean value, final boolean value2) {
+ stateManager.addBeforeStateChangeListener(beforeChangeListener1);
+ stateManager.addBeforeStateChangeListener(beforeChangeListener2);
+ final String newToken = "something";
+ Mockito.when(beforeChangeListener1.beforeAction()).thenReturn(value);
+ Mockito.when(beforeChangeListener2.beforeAction()).thenReturn(value2);
+ return newToken;
+ }
+
@SuppressWarnings("unchecked")
@Test
public void getDefGroup() {
@@ -166,44 +180,28 @@
(StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject());
}
+ private void removeBeforeStateChangeListener() {
+ stateManager.removeBeforeStateChangeListener(beforeChangeListener1);
+ stateManager.removeBeforeStateChangeListener(beforeChangeListener2);
+ }
+
@SuppressWarnings("unchecked")
@Test
public void siteTokenFirstLoadDefContentAndFireListener() {
- final MockedListener0 listener = new MockedListener0();
- final String token = SiteToken.signin.toString();
+ final HistoryTokenCallback listener = Mockito.mock(HistoryTokenCallback.class);
+ final String token = SiteCommonTokens.SIGNIN;
stateManager.addSiteToken(token, listener);
stateManager.onHistoryChanged(token);
- assertTrue(listener.isCalledOnce());
+ Mockito.verify(listener, Mockito.times(1)).onHistoryToken();
Mockito.verify(contentProvider, Mockito.times(1)).getContent(Mockito.anyString(),
(StateToken) Mockito.anyObject(), (AsyncCallback<StateAbstractDTO>) Mockito.anyObject());
}
@Test
public void siteTokenTest() {
- final MockedListener0 siteTokenListener = new MockedListener0();
+ final HistoryTokenCallback siteTokenListener = Mockito.mock(HistoryTokenCallback.class);
stateManager.addSiteToken("signin", siteTokenListener);
stateManager.onHistoryChanged("signIn");
- siteTokenListener.isCalledOnce();
+ Mockito.verify(siteTokenListener, Mockito.times(1)).onHistoryToken();
}
-
- private void changeState(final String... tokens) {
- for (final String token : tokens) {
- Mockito.when(state.getStateToken()).thenReturn(new StateToken(token));
- stateManager.setState(state);
- }
- }
-
- private String confBeforeStateChangeListeners(final boolean value, final boolean value2) {
- stateManager.addBeforeStateChangeListener(beforeChangeListener1);
- stateManager.addBeforeStateChangeListener(beforeChangeListener2);
- final String newToken = "something";
- Mockito.when(beforeChangeListener1.beforeAction()).thenReturn(value);
- Mockito.when(beforeChangeListener2.beforeAction()).thenReturn(value2);
- return newToken;
- }
-
- private void removeBeforeStateChangeListener() {
- stateManager.removeBeforeStateChangeListener(beforeChangeListener1);
- stateManager.removeBeforeStateChangeListener(beforeChangeListener2);
- }
}
Modified: trunk/src/test/java/org/ourproject/kune/platf/client/ui/TextUtilsTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/client/ui/TextUtilsTest.java 2011-01-24 23:22:16 UTC (rev 1223)
+++ trunk/src/test/java/org/ourproject/kune/platf/client/ui/TextUtilsTest.java 2011-01-26 21:18:00 UTC (rev 1224)
@@ -1,5 +1,6 @@
package org.ourproject.kune.platf.client.ui;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
@@ -8,38 +9,62 @@
public class TextUtilsTest {
@Test
+ public void dontRemoveLastSlashIfNoExists() {
+ final String text = "ab";
+ assertEquals("ab", TextUtils.removeLastSlash(text));
+ }
+
+ @Test
+ public void dontRemoveOtherSlashIfExists() {
+ final String text = "/ab";
+ assertEquals("/ab", TextUtils.removeLastSlash(text));
+ }
+
+ @Test
public void matchDemoEmail() {
- String email = "test100(a)emitedemo.ourproject.org";
+ final String email = "test100(a)emitedemo.ourproject.org";
assertTrue(email.matches(TextUtils.EMAIL_REGEXP));
}
@Test
public void matchLocalhostEmail() {
- String email = "me@localhost";
+ final String email = "me@localhost";
assertTrue(email.matches(TextUtils.EMAIL_REGEXP));
}
@Test
public void matchSimpleEmail() {
- String email = "me(a)example.com";
+ final String email = "me(a)example.com";
assertTrue(email.matches(TextUtils.EMAIL_REGEXP));
}
@Test
public void matchUrlWithHttp() {
- String gnuUrl = "http://gnu.org";
+ final String gnuUrl = "http://gnu.org";
assertTrue(gnuUrl.matches(TextUtils.URL_REGEXP));
}
@Test
public void matchUrlWithoutHttp() {
- String gnuUrl = "gnu.org";
+ final String gnuUrl = "gnu.org";
assertTrue(!gnuUrl.matches(TextUtils.URL_REGEXP));
}
@Test
public void notMatchWrongUrl() {
- String someWrong = "some(a)email.com";
+ final String someWrong = "some(a)email.com";
assertTrue(!someWrong.matches(TextUtils.URL_REGEXP));
}
+
+ @Test
+ public void removeLastSlashIfExists() {
+ final String text = "/";
+ assertEquals("", TextUtils.removeLastSlash(text));
+ }
+
+ @Test
+ public void removeOnlytLastSlashIfExists() {
+ final String text = "/ab/cd/";
+ assertEquals("/ab/cd", TextUtils.removeLastSlash(text));
+ }
}
1
0
Author: vjrj_
Date: 2011-01-25 00:22:16 +0100 (Tue, 25 Jan 2011)
New Revision: 1223
Modified:
wp-theme/kune/footer.php
Log:
Modified: wp-theme/kune/footer.php
===================================================================
--- wp-theme/kune/footer.php 2011-01-24 21:39:31 UTC (rev 1222)
+++ wp-theme/kune/footer.php 2011-01-24 23:22:16 UTC (rev 1223)
@@ -24,9 +24,7 @@
<div id="site-info">
© Copyleft ~
- <a href="<?php echo home_url( '/' ) ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home">
- <?php bloginfo( 'name' ); ?>
- </a>, under <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons by-sa</a>
+ <a href="<?php echo home_url( '/' ) ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a>, under <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons by-sa</a>
</div><!-- #site-info -->
<div id="site-generator">
1
0
Author: vjrj_
Date: 2011-01-24 22:39:31 +0100 (Mon, 24 Jan 2011)
New Revision: 1222
Modified:
wp-theme/kune/header.php
Log:
Modified: wp-theme/kune/header.php
===================================================================
--- wp-theme/kune/header.php 2011-01-24 21:35:15 UTC (rev 1221)
+++ wp-theme/kune/header.php 2011-01-24 21:39:31 UTC (rev 1222)
@@ -43,6 +43,17 @@
}
});
</script>
+<script type="text/javascript">
+/* <![CDATA[ */
+ (function() {
+ var s = document.createElement('script'), t = document.getElementsByTagName('script')[0];
+ s.type = 'text/javascript';
+ s.async = true;
+ s.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
+ t.parentNode.insertBefore(s, t);
+ })();
+/* ]]> */
+</script>
<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" />
<link rel="stylesheet" type="text/css" media="all" href="/kothers/ubuntufontface.css" />
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
1
0
Author: vjrj_
Date: 2011-01-24 22:35:15 +0100 (Mon, 24 Jan 2011)
New Revision: 1221
Modified:
wp-theme/kune/style.css
Log:
Modified: wp-theme/kune/style.css
===================================================================
--- wp-theme/kune/style.css 2011-01-24 21:31:31 UTC (rev 1220)
+++ wp-theme/kune/style.css 2011-01-24 21:35:15 UTC (rev 1221)
@@ -1477,3 +1477,7 @@
text-align: justify;
}
+#content .entry-title a {
+ font-size:20px;
+ font-weight:bold;
+}
\ No newline at end of file
1
0
Author: vjrj_
Date: 2011-01-24 22:31:31 +0100 (Mon, 24 Jan 2011)
New Revision: 1220
Modified:
wp-theme/kune/loop.php
Log:
Modified: wp-theme/kune/loop.php
===================================================================
--- wp-theme/kune/loop.php 2011-01-24 21:27:04 UTC (rev 1219)
+++ wp-theme/kune/loop.php 2011-01-24 21:31:31 UTC (rev 1220)
@@ -59,7 +59,7 @@
<?php if ( in_category( _x('gallery', 'gallery category slug', 'twentyten') ) ) : ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
- <h1 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h1>
+ <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
<div class="entry-meta">
<?php twentyten_posted_on(); ?>
@@ -123,7 +123,7 @@
<?php else : ?>
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
- <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>
+ <h1 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h1>
<div class="entry-meta">
<?php twentyten_posted_on(); ?>
1
0