rubyfox-server 2.8.4.0 → 2.9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE.txt +2 -2
- data/lib/rubyfox/server/data/config/ExtensionManagerLock.txt +2 -0
- data/lib/rubyfox/server/data/config/core.xml +9 -9
- data/lib/rubyfox/server/data/config/crossdomain.xml +1 -1
- data/lib/rubyfox/server/data/config/descriptors/config_room.txt +112 -3
- data/lib/rubyfox/server/data/config/descriptors/config_server.txt +550 -73
- data/lib/rubyfox/server/data/config/descriptors/config_zone.txt +11 -2
- data/lib/rubyfox/server/data/config/descriptors/runtime_mmo.txt +74 -0
- data/lib/rubyfox/server/data/config/descriptors/runtime_room.txt +33 -4
- data/lib/rubyfox/server/data/config/descriptors/runtime_user.txt +1 -1
- data/lib/rubyfox/server/data/config/descriptors/runtime_zone.txt +37 -5
- data/lib/rubyfox/server/data/config/keystore.jks +0 -0
- data/lib/rubyfox/server/data/config/log4j.properties +5 -1
- data/lib/rubyfox/server/data/config/logParser.properties +30 -0
- data/lib/rubyfox/server/data/config/server.xml +51 -9
- data/lib/rubyfox/server/data/config/templates/templates.dat +0 -0
- data/lib/rubyfox/server/data/lib/Lib/sfs2x-lib.jar +0 -0
- data/lib/rubyfox/server/data/lib/httpclient-4.3.3.jar +0 -0
- data/lib/rubyfox/server/data/lib/httpcore-4.3.2.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/VERSION.txt +7576 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/README.spnego +62 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jdbcRealm.properties +72 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-annotations.xml +20 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-debug.xml +23 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-deploy.xml +62 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-http.xml +41 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-https.xml +47 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-ipaccess.xml +31 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-jaas.xml +17 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-jmx-remote.xml +27 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-jmx.xml +43 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-logging.xml +36 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-lowresources.xml +22 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-monitor.xml +30 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-plus.xml +26 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-proxy.xml +35 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-requestlog.xml +32 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-rewrite.xml +41 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-setuid.xml +30 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-spdy-proxy.xml +158 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-spdy.xml +153 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-ssl.xml +41 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-started.xml +15 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-stats.xml +18 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-xinetd.xml +54 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty.conf +12 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty.xml +160 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/keystore +0 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/krb5.ini +23 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/spnego.conf +19 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/spnego.properties +1 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/webdefault.xml +540 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/asm-4.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/asm-commons-4.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/ext/.donotdelete +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jaspi/javax.security.auth.message-1.0.0.v201108011116.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/javax.annotation-api-1.2.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/javax.el-3.0.0.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/javax.servlet.jsp-2.3.2.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/javax.servlet.jsp-api-2.3.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/javax.servlet.jsp.jstl-1.2.0.v201105211821.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-annotations-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-client-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-continuation-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-deploy-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-http-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-io-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jaas-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jaspi-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jmx-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jndi-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jsp-jdt-2.3.3.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-plus-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-proxy-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-rewrite-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-schemas-3.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-security-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-server-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-servlet-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-servlets-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-util-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-webapp-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-xml-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jndi/javax.activation-1.1.0.v201105071233.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jndi/javax.transaction-api-1.2.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/monitor/jetty-monitor-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/org.apache.taglibs.standard.glassfish-1.2.0.v201112081803.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/org.eclipse.jdt.core-3.8.2.v20130121.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/servlet-api-3.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/setuid/jetty-setuid-java-1.0.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/setuid/libsetuid-linux.so +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/setuid/libsetuid-osx.so +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-client-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-core-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-http-common-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-http-server-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/spdy/spdy-server-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/start.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket-api-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket/javax-websocket-client-impl-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket/javax-websocket-server-impl-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket/javax.websocket-api-1.0.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket/websocket-client-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket/websocket-common-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket/websocket-server-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket/websocket-servlet-9.1.1.v20140108.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/license-eplv10-aslv20.html +576 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/.donotdelete +0 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/annotations.mod +17 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/client.mod +6 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/continuation.mod +6 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/debug.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/deploy.mod +15 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/ext.mod +11 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/http.mod +14 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/https.mod +16 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/ipaccess.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/jaas.mod +16 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/jaspi.mod +10 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/jmx-remote.mod +18 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/jmx.mod +10 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/jndi.mod +11 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/jsp.mod +14 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/jvm.mod +23 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/logging.mod +27 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/lowresources.mod +18 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/monitor.mod +13 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn.mod +32 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_10.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_11.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_13.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_15.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_17.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_21.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_25.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_4.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_40.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_45.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_5.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_6.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_7.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/npn/npn-1.7.0_9.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/plus.mod +14 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/proxy.mod +22 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/requestlog.mod +26 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/resources.mod +10 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/rewrite.mod +12 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/security.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/server.mod +38 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/servlet.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/servlets.mod +10 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/setuid.mod +19 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/spdy.mod +23 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/ssl.mod +29 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/stats.mod +9 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/webapp.mod +10 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/websocket.mod +12 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/xinetd.mod +17 -0
- data/lib/rubyfox/server/data/lib/jetty/notice.html +111 -0
- data/lib/rubyfox/server/data/lib/jetty/resources/.keep +0 -0
- data/lib/rubyfox/server/data/lib/jetty/start.d/README.TXT +24 -0
- data/lib/rubyfox/server/data/lib/jetty/start.d/http.ini +7 -0
- data/lib/rubyfox/server/data/lib/jetty/start.d/https.ini +9 -0
- data/lib/rubyfox/server/data/lib/jetty/start.d/ssl.ini +19 -0
- data/lib/rubyfox/server/data/lib/jetty/start.ini +84 -0
- data/lib/rubyfox/server/data/lib/jetty/webapps/.keep +0 -0
- data/lib/rubyfox/server/data/lib/logs-analysis-app.jar +0 -0
- data/lib/rubyfox/server/data/lib/netty-3.9.0.Final.jar +0 -0
- data/lib/rubyfox/server/data/lib/scala-library.jar +0 -0
- data/lib/rubyfox/server/data/lib/sfs2x-admin.jar +0 -0
- data/lib/rubyfox/server/data/lib/sfs2x-core.jar +0 -0
- data/lib/rubyfox/server/data/lib/sfs2x-lib.jar +0 -0
- data/lib/rubyfox/server/data/lib/sfs2x-util.jar +0 -0
- data/lib/rubyfox/server/data/lib/sfs2x.jar +0 -0
- data/lib/rubyfox/server/data/lib/slf4j-api-1.7.5.jar +0 -0
- data/lib/rubyfox/server/data/lib/slf4j-log4j12-1.7.5.jar +0 -0
- data/lib/rubyfox/server/data/sfs2x-service +9 -9
- data/lib/rubyfox/server/data/sfs2x-service.vmoptions +1 -1
- data/lib/rubyfox/server/data/sfs2x.sh +6 -6
- data/lib/rubyfox/server/data/www/root/admin/AdminTool.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/ReleaseNotes.txt +23 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bannedIPs.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bannedUsernames.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bookmarks.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bootLog.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/connection.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/globalServerStatus.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/logsDownload.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/mMOSettings.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/permissionsAndEvents.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/roomExtension.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/roomVariables.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeLog.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeRoomSettings.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeUserSettings.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeZoneSettings.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsApplication.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsDemographics.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsExceptions.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsOverview.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsTechnology.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/systemQueueStatus.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/threadPools.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/userManagement.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/zoneExtension.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/zoneTraffic.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/index.html +4 -16
- data/lib/rubyfox/server/data/www/root/admin/modules/Analytics/Analytics.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/BanManager/BanManager.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/BlueBoxMonitor/BlueBoxMonitor.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/Dashboard/Dashboard.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/ExtensionManager/ExtensionManager.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/ExtensionManager/icon.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/LicenseManager/LicenseManager.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/LogViewer/LogViewer.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/ServerConfigurator/ServerConfigurator.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/ZoneConfigurator/ZoneConfigurator.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/ZoneMonitor/ZoneMonitor.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/config.xml +1 -0
- data/lib/rubyfox/server/data/www/root/favicon.ico +0 -0
- data/lib/rubyfox/server/data/www/root/favicon.png +0 -0
- data/lib/rubyfox/server/data/www/sfs2x-ws.war +0 -0
- data/lib/rubyfox/server/data/www/sfs2x-ws.xml +30 -0
- data/lib/rubyfox/server/version.rb +1 -1
- data/rubyfox-server.gemspec +1 -0
- metadata +171 -48
- data/.rvmrc +0 -1
- data/lib/rubyfox/server/data/config/jetty/jetty.xml +0 -214
- data/lib/rubyfox/server/data/config/jetty/realm.properties +0 -21
- data/lib/rubyfox/server/data/config/jetty/webdefault.xml +0 -410
- data/lib/rubyfox/server/data/config/myprop.properties +0 -5
- data/lib/rubyfox/server/data/data/bannedusers/users.bin +0 -0
- data/lib/rubyfox/server/data/data/buddylists/BasicExamples/7364666773646667 +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/ant-1.6.5.jar +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/core-3.1.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/jetty-6.1.26.jar +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/jetty-util-6.1.26.jar +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/jsp-2.1-glassfish-2.1.v20091210.jar +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/jsp-2.1-jetty-6.1.26.jar +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/jsp-api-2.1-glassfish-2.1.v20091210.jar +0 -0
- data/lib/rubyfox/server/data/lib/Jetty/servlet-api-2.5-20081211.jar +0 -0
- data/lib/rubyfox/server/data/lib/extras/slf4j-jdk14-1.5.10.jar +0 -0
- data/lib/rubyfox/server/data/lib/httpclient-4.0.3.jar +0 -0
- data/lib/rubyfox/server/data/lib/httpcore-4.0.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jconsole/COPYING.txt +0 -504
- data/lib/rubyfox/server/data/lib/jconsole/bug_test_case.py +0 -49
- data/lib/rubyfox/server/data/lib/jconsole/console$py.class +0 -0
- data/lib/rubyfox/server/data/lib/jconsole/console.py +0 -439
- data/lib/rubyfox/server/data/lib/jconsole/history$py.class +0 -0
- data/lib/rubyfox/server/data/lib/jconsole/history.py +0 -82
- data/lib/rubyfox/server/data/lib/jconsole/history_test_case.py +0 -133
- data/lib/rubyfox/server/data/lib/jconsole/introspect$py.class +0 -0
- data/lib/rubyfox/server/data/lib/jconsole/introspect.py +0 -373
- data/lib/rubyfox/server/data/lib/jconsole/introspect_test_case.py +0 -19
- data/lib/rubyfox/server/data/lib/jconsole/issue_17_test_case.py +0 -36
- data/lib/rubyfox/server/data/lib/jconsole/jintrospect$py.class +0 -0
- data/lib/rubyfox/server/data/lib/jconsole/jintrospect.py +0 -316
- data/lib/rubyfox/server/data/lib/jconsole/jintrospect_test_case.py +0 -107
- data/lib/rubyfox/server/data/lib/jconsole/popup$py.class +0 -0
- data/lib/rubyfox/server/data/lib/jconsole/popup.py +0 -178
- data/lib/rubyfox/server/data/lib/jconsole/run_tests.py +0 -8
- data/lib/rubyfox/server/data/lib/jconsole/static_test_case.py +0 -36
- data/lib/rubyfox/server/data/lib/jconsole/testcase.py +0 -38
- data/lib/rubyfox/server/data/lib/jconsole/tip$py.class +0 -0
- data/lib/rubyfox/server/data/lib/jconsole/tip.py +0 -47
- data/lib/rubyfox/server/data/lib/slf4j-api-1.5.10.jar +0 -0
- data/lib/rubyfox/server/data/lib/slf4j-log4j12.jar +0 -0
- data/lib/rubyfox/server/data/lib/ws-engine.jar +0 -0
- data/lib/rubyfox/server/data/www/BlueBox.war +0 -0
- data/lib/rubyfox/server/data/www/root/admin/AdminTool.html +0 -120
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import unittest
|
|
2
|
-
import introspect
|
|
3
|
-
import jintrospect
|
|
4
|
-
|
|
5
|
-
class BugTestCase(unittest.TestCase):
|
|
6
|
-
|
|
7
|
-
def testPythonStackOverflow(self):
|
|
8
|
-
"""
|
|
9
|
-
jythonconsole-0.0.1 has a stack overflow when autocomplete with Jython-2.2b1
|
|
10
|
-
|
|
11
|
-
import sys
|
|
12
|
-
sys. <-- autocomplete starts and then the following stacktrace
|
|
13
|
-
|
|
14
|
-
Traceback (most recent call last):
|
|
15
|
-
File "bug_test_case.py", line 8, in testJython22b1Bug
|
|
16
|
-
list = jintrospect.getAutoCompleteList("sys.", locals())
|
|
17
|
-
File "/Users/don/jythonconsole/jintrospect.py", line 90, in getAutoCompleteList
|
|
18
|
-
attributes = getAttributeNames(object, includeMagic, includeSingle, includeDouble)
|
|
19
|
-
File "/Users/don/jythonconsole/introspect.py", line 61, in getAttributeNames
|
|
20
|
-
attrdict = getAllAttributeNames(object)
|
|
21
|
-
File "/Users/don/jythonconsole/introspect.py", line 125, in getAllAttributeNames
|
|
22
|
-
attrdict.update(getAllAttributeNames(klass))
|
|
23
|
-
...
|
|
24
|
-
File "/Users/don/jythonconsole/introspect.py", line 138, in getAllAttributeNames
|
|
25
|
-
attrdict.update(getAllAttributeNames(base))
|
|
26
|
-
File "/Users/don/jythonconsole/introspect.py", line 125, in getAllAttributeNames
|
|
27
|
-
attrdict.update(getAllAttributeNames(klass))
|
|
28
|
-
File "/Users/don/jythonconsole/introspect.py", line 138, in getAllAttributeNames
|
|
29
|
-
attrdict.update(getAllAttributeNames(base))
|
|
30
|
-
File "/Users/don/jythonconsole/introspect.py", line 125, in getAllAttributeNames
|
|
31
|
-
attrdict.update(getAllAttributeNames(klass))
|
|
32
|
-
File "/Users/don/jythonconsole/introspect.py", line 101, in getAllAttributeNames
|
|
33
|
-
wakeupcall = dir(object)
|
|
34
|
-
java.lang.StackOverflowError: java.lang.StackOverflowError
|
|
35
|
-
"""
|
|
36
|
-
dict = introspect.getAllAttributeNames("sys")
|
|
37
|
-
# if the bug is happening you'll never get here
|
|
38
|
-
# you'll get a stack overflow instead
|
|
39
|
-
self.assert_(len(dict) > 0)
|
|
40
|
-
|
|
41
|
-
# method completion for python strings was failing in 0.0.2 with python2.b1
|
|
42
|
-
def testAutoCompleteString(self):
|
|
43
|
-
f = "foo"
|
|
44
|
-
list = jintrospect.getAutoCompleteList("f", locals())
|
|
45
|
-
self.assert_(len(list) > 0)
|
|
46
|
-
self.assert_(list.index("startswith") > 0)
|
|
47
|
-
|
|
48
|
-
if __name__ == '__main__':
|
|
49
|
-
unittest.main()
|
|
Binary file
|
|
@@ -1,439 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Jython Console with Code Completion
|
|
3
|
-
|
|
4
|
-
This uses the basic Jython Interactive Interpreter.
|
|
5
|
-
The UI uses code from Carlos Quiroz's 'Jython Interpreter for JEdit' http://www.jedit.org
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
from javax.swing import JFrame, JScrollPane, JTextPane, Action, KeyStroke, WindowConstants
|
|
9
|
-
from javax.swing.text import JTextComponent, TextAction, SimpleAttributeSet, StyleConstants
|
|
10
|
-
from java.awt import Color, Font, Point
|
|
11
|
-
from java.awt.event import InputEvent, KeyEvent, WindowAdapter
|
|
12
|
-
from java.lang import System
|
|
13
|
-
from java.awt import Toolkit
|
|
14
|
-
from java.awt.datatransfer import DataFlavor
|
|
15
|
-
|
|
16
|
-
import jintrospect
|
|
17
|
-
from popup import Popup
|
|
18
|
-
from tip import Tip
|
|
19
|
-
from history import History
|
|
20
|
-
|
|
21
|
-
import sys
|
|
22
|
-
from code import InteractiveInterpreter
|
|
23
|
-
from org.python.util import InteractiveConsole
|
|
24
|
-
|
|
25
|
-
__author__ = "Don Coleman <dcoleman@chariotsolutions.com>"
|
|
26
|
-
|
|
27
|
-
import re
|
|
28
|
-
# allows multiple imports like "from java.lang import String, Properties"
|
|
29
|
-
_re_from_import = re.compile("from\s+\S+\s+import(\s+\S+,\s?)?")
|
|
30
|
-
|
|
31
|
-
try:
|
|
32
|
-
True, False
|
|
33
|
-
except NameError:
|
|
34
|
-
(True, False) = (1, 0)
|
|
35
|
-
|
|
36
|
-
class Console:
|
|
37
|
-
PROMPT = sys.ps1
|
|
38
|
-
PROCESS = sys.ps2
|
|
39
|
-
BANNER = ["Jython Completion Shell", InteractiveConsole.getDefaultBanner()]
|
|
40
|
-
|
|
41
|
-
include_single_underscore_methods = False
|
|
42
|
-
include_double_underscore_methods = False
|
|
43
|
-
|
|
44
|
-
def __init__(self, namespace=None):
|
|
45
|
-
"""
|
|
46
|
-
Create a Jython Console.
|
|
47
|
-
namespace is an optional and should be a dictionary or Map
|
|
48
|
-
"""
|
|
49
|
-
self.history = History(self)
|
|
50
|
-
|
|
51
|
-
if namespace != None:
|
|
52
|
-
self.locals = namespace
|
|
53
|
-
else:
|
|
54
|
-
self.locals = {}
|
|
55
|
-
|
|
56
|
-
self.buffer = [] # buffer for multi-line commands
|
|
57
|
-
|
|
58
|
-
self.interp = Interpreter(self, self.locals)
|
|
59
|
-
sys.stdout = StdOutRedirector(self)
|
|
60
|
-
|
|
61
|
-
self.text_pane = JTextPane(keyTyped = self.keyTyped, keyPressed = self.keyPressed)
|
|
62
|
-
self.__initKeyMap()
|
|
63
|
-
|
|
64
|
-
self.doc = self.text_pane.document
|
|
65
|
-
self.__propertiesChanged()
|
|
66
|
-
self.__inittext()
|
|
67
|
-
self.initialLocation = self.doc.createPosition(self.doc.length-1)
|
|
68
|
-
|
|
69
|
-
# Don't pass frame to popups. JWindows with null owners are not focusable
|
|
70
|
-
# this fixes the focus problem on Win32, but make the mouse problem worse
|
|
71
|
-
self.popup = Popup(None, self.text_pane)
|
|
72
|
-
self.tip = Tip(None)
|
|
73
|
-
|
|
74
|
-
# get fontmetrics info so we can position the popup
|
|
75
|
-
metrics = self.text_pane.getFontMetrics(self.text_pane.getFont())
|
|
76
|
-
self.dotWidth = metrics.charWidth('.')
|
|
77
|
-
self.textHeight = metrics.getHeight()
|
|
78
|
-
|
|
79
|
-
# add some handles to our objects
|
|
80
|
-
self.locals['console'] = self
|
|
81
|
-
|
|
82
|
-
def insertText(self, text):
|
|
83
|
-
"""insert text at the current caret position"""
|
|
84
|
-
# seems like there should be a better way to do this....
|
|
85
|
-
# might be better as a method on the text component?
|
|
86
|
-
caretPosition = self.text_pane.getCaretPosition()
|
|
87
|
-
self.text_pane.select(caretPosition, caretPosition)
|
|
88
|
-
self.text_pane.replaceSelection(text)
|
|
89
|
-
self.text_pane.setCaretPosition(caretPosition + len(text))
|
|
90
|
-
|
|
91
|
-
def getText(self):
|
|
92
|
-
"""get text from last line of console"""
|
|
93
|
-
offsets = self.__lastLine()
|
|
94
|
-
text = self.doc.getText(offsets[0], offsets[1]-offsets[0])
|
|
95
|
-
return text.rstrip()
|
|
96
|
-
|
|
97
|
-
def getDisplayPoint(self):
|
|
98
|
-
"""Get the point where the popup window should be displayed"""
|
|
99
|
-
screenPoint = self.text_pane.getLocationOnScreen()
|
|
100
|
-
caretPoint = self.text_pane.caret.getMagicCaretPosition()
|
|
101
|
-
|
|
102
|
-
# BUG: sometimes caretPoint is None
|
|
103
|
-
# To duplicate type "java.aw" and hit '.' to complete selection while popup is visible
|
|
104
|
-
|
|
105
|
-
x = screenPoint.getX() + caretPoint.getX() + self.dotWidth
|
|
106
|
-
y = screenPoint.getY() + caretPoint.getY() + self.textHeight
|
|
107
|
-
return Point(int(x),int(y))
|
|
108
|
-
|
|
109
|
-
def hide(self, event=None):
|
|
110
|
-
"""Hide the popup or tip window if visible"""
|
|
111
|
-
if self.popup.visible:
|
|
112
|
-
self.popup.hide()
|
|
113
|
-
if self.tip.visible:
|
|
114
|
-
self.tip.hide()
|
|
115
|
-
|
|
116
|
-
def hideTip(self, event=None):
|
|
117
|
-
self.tip.hide()
|
|
118
|
-
self.insertText(')')
|
|
119
|
-
|
|
120
|
-
def showTip(self, event=None):
|
|
121
|
-
# get the display point before writing text
|
|
122
|
-
# otherwise magicCaretPosition is None
|
|
123
|
-
displayPoint = self.getDisplayPoint()
|
|
124
|
-
|
|
125
|
-
if self.popup.visible:
|
|
126
|
-
self.popup.hide()
|
|
127
|
-
|
|
128
|
-
line = self.getText()
|
|
129
|
-
|
|
130
|
-
self.insertText('(')
|
|
131
|
-
|
|
132
|
-
(name, argspec, tip) = jintrospect.getCallTipJava(line, self.locals)
|
|
133
|
-
|
|
134
|
-
if tip:
|
|
135
|
-
self.tip.showTip(tip, displayPoint)
|
|
136
|
-
|
|
137
|
-
def showPopup(self, event=None):
|
|
138
|
-
"""show code completion popup"""
|
|
139
|
-
|
|
140
|
-
try:
|
|
141
|
-
line = self.getText()
|
|
142
|
-
list = jintrospect.getAutoCompleteList(line, self.locals, includeSingle=self.include_single_underscore_methods, includeDouble=self.include_double_underscore_methods)
|
|
143
|
-
if len(list) > 0:
|
|
144
|
-
self.popup.showMethodCompletionList(list, self.getDisplayPoint())
|
|
145
|
-
|
|
146
|
-
except Exception, e:
|
|
147
|
-
print >> sys.stderr, "Error getting completion list: ", e
|
|
148
|
-
#traceback.print_exc(file=sys.stderr)
|
|
149
|
-
|
|
150
|
-
def inLastLine(self, include = 1):
|
|
151
|
-
""" Determines whether the cursor is in the last line """
|
|
152
|
-
limits = self.__lastLine()
|
|
153
|
-
caret = self.text_pane.caretPosition
|
|
154
|
-
if self.text_pane.selectedText:
|
|
155
|
-
caret = self.text_pane.selectionStart
|
|
156
|
-
if include:
|
|
157
|
-
return (caret >= limits[0] and caret <= limits[1])
|
|
158
|
-
else:
|
|
159
|
-
return (caret > limits[0] and caret <= limits[1])
|
|
160
|
-
|
|
161
|
-
def enter(self, event=None):
|
|
162
|
-
""" Triggered when enter is pressed """
|
|
163
|
-
text = self.getText()
|
|
164
|
-
self.buffer.append(text)
|
|
165
|
-
source = "\n".join(self.buffer)
|
|
166
|
-
more = self.interp.runsource(source)
|
|
167
|
-
if more:
|
|
168
|
-
self.printOnProcess()
|
|
169
|
-
else:
|
|
170
|
-
self.resetbuffer()
|
|
171
|
-
self.printPrompt()
|
|
172
|
-
self.history.append(text)
|
|
173
|
-
|
|
174
|
-
self.hide()
|
|
175
|
-
|
|
176
|
-
def quit(self, event=None):
|
|
177
|
-
sys.exit()
|
|
178
|
-
|
|
179
|
-
def resetbuffer(self):
|
|
180
|
-
self.buffer = []
|
|
181
|
-
|
|
182
|
-
def home(self, event):
|
|
183
|
-
""" Triggered when HOME is pressed """
|
|
184
|
-
if self.inLastLine():
|
|
185
|
-
# go to end of PROMPT
|
|
186
|
-
self.text_pane.caretPosition = self.__lastLine()[0]
|
|
187
|
-
else:
|
|
188
|
-
lines = self.doc.rootElements[0].elementCount
|
|
189
|
-
for i in xrange(0,lines-1):
|
|
190
|
-
offsets = (self.doc.rootElements[0].getElement(i).startOffset, \
|
|
191
|
-
self.doc.rootElements[0].getElement(i).endOffset)
|
|
192
|
-
line = self.doc.getText(offsets[0], offsets[1]-offsets[0])
|
|
193
|
-
if self.text_pane.caretPosition >= offsets[0] and \
|
|
194
|
-
self.text_pane.caretPosition <= offsets[1]:
|
|
195
|
-
if line.startswith(Console.PROMPT) or line.startswith(Console.PROCESS):
|
|
196
|
-
self.text_pane.caretPosition = offsets[0] + len(Console.PROMPT)
|
|
197
|
-
else:
|
|
198
|
-
self.text_pane.caretPosition = offsets[0]
|
|
199
|
-
|
|
200
|
-
def end(self, event):
|
|
201
|
-
if self.inLastLine():
|
|
202
|
-
self.text_pane.caretPosition = self.__lastLine()[1] - 1
|
|
203
|
-
|
|
204
|
-
# TODO look using text_pane replace selection like self.insertText
|
|
205
|
-
def replaceRow(self, text):
|
|
206
|
-
""" Replaces the last line of the textarea with text """
|
|
207
|
-
offset = self.__lastLine()
|
|
208
|
-
last = self.doc.getText(offset[0], offset[1]-offset[0])
|
|
209
|
-
if last != "\n":
|
|
210
|
-
self.doc.remove(offset[0], offset[1]-offset[0]-1)
|
|
211
|
-
self.__addOutput(self.infoColor, text)
|
|
212
|
-
|
|
213
|
-
def delete(self, event):
|
|
214
|
-
""" Intercepts delete events only allowing it to work in the last line """
|
|
215
|
-
if self.inLastLine():
|
|
216
|
-
if self.text_pane.selectedText:
|
|
217
|
-
self.doc.remove(self.text_pane.selectionStart, self.text_pane.selectionEnd - self.text_pane.selectionStart)
|
|
218
|
-
elif self.text_pane.caretPosition < self.doc.length:
|
|
219
|
-
self.doc.remove(self.text_pane.caretPosition, 1)
|
|
220
|
-
|
|
221
|
-
def backSpaceListener(self, event=None):
|
|
222
|
-
""" Don't allow backspace or left arrow to go over prompt """
|
|
223
|
-
onFirstPosition = self.text_pane.getCaretPosition() <= self.__lastLine()[0]
|
|
224
|
-
if onFirstPosition and not self.text_pane.selectedText:
|
|
225
|
-
event.consume()
|
|
226
|
-
|
|
227
|
-
def spaceTyped(self, event=None):
|
|
228
|
-
"""check we we should complete on the space key"""
|
|
229
|
-
matches = _re_from_import.match(self.getText())
|
|
230
|
-
if matches:
|
|
231
|
-
self.showPopup()
|
|
232
|
-
|
|
233
|
-
def killToEndLine(self, event=None):
|
|
234
|
-
if self.inLastLine():
|
|
235
|
-
caretPosition = self.text_pane.getCaretPosition()
|
|
236
|
-
self.text_pane.setSelectionStart(caretPosition)
|
|
237
|
-
self.text_pane.setSelectionEnd(self.__lastLine()[1] - 1)
|
|
238
|
-
self.text_pane.cut()
|
|
239
|
-
|
|
240
|
-
def paste(self, event=None):
|
|
241
|
-
# if getText was smarter, this method would be unnecessary
|
|
242
|
-
if self.inLastLine():
|
|
243
|
-
clipboard = Toolkit.getDefaultToolkit().getSystemClipboard()
|
|
244
|
-
clipboard.getContents(self.text_pane)
|
|
245
|
-
contents = clipboard.getData(DataFlavor.stringFlavor)
|
|
246
|
-
|
|
247
|
-
lines = contents.split("\n")
|
|
248
|
-
for line in lines:
|
|
249
|
-
self.insertText(line)
|
|
250
|
-
if len(lines) > 1:
|
|
251
|
-
self.enter()
|
|
252
|
-
|
|
253
|
-
def keyTyped(self, event):
|
|
254
|
-
#print >> sys.stderr, "keyTyped", event.getKeyCode()
|
|
255
|
-
if not self.inLastLine():
|
|
256
|
-
event.consume()
|
|
257
|
-
|
|
258
|
-
def keyPressed(self, event):
|
|
259
|
-
if self.popup.visible:
|
|
260
|
-
self.popup.key(event)
|
|
261
|
-
#print >> sys.stderr, "keyPressed", event.getKeyCode()
|
|
262
|
-
if event.keyCode == KeyEvent.VK_BACK_SPACE or event.keyCode == KeyEvent.VK_LEFT:
|
|
263
|
-
self.backSpaceListener(event)
|
|
264
|
-
|
|
265
|
-
def keyboardInterrupt(self, event=None):
|
|
266
|
-
""" Raises a KeyboardInterrupt"""
|
|
267
|
-
self.hide()
|
|
268
|
-
self.interp.runsource("raise KeyboardInterrupt\n")
|
|
269
|
-
self.resetbuffer()
|
|
270
|
-
self.printPrompt()
|
|
271
|
-
|
|
272
|
-
# TODO refactor me
|
|
273
|
-
def write(self, text):
|
|
274
|
-
self.__addOutput(self.infoColor, text)
|
|
275
|
-
|
|
276
|
-
def printResult(self, msg):
|
|
277
|
-
""" Prints the results of an operation """
|
|
278
|
-
self.__addOutput(self.text_pane.foreground, "\n" + str(msg))
|
|
279
|
-
|
|
280
|
-
def printError(self, msg):
|
|
281
|
-
self.__addOutput(self.errorColor, "\n" + str(msg))
|
|
282
|
-
|
|
283
|
-
def printOnProcess(self):
|
|
284
|
-
""" Prints the process symbol """
|
|
285
|
-
self.__addOutput(self.infoColor, "\n" + Console.PROCESS)
|
|
286
|
-
|
|
287
|
-
def printPrompt(self):
|
|
288
|
-
""" Prints the prompt """
|
|
289
|
-
self.__addOutput(self.infoColor, "\n" + Console.PROMPT)
|
|
290
|
-
|
|
291
|
-
def __addOutput(self, color, msg):
|
|
292
|
-
""" Adds the output to the text area using a given color """
|
|
293
|
-
from javax.swing.text import BadLocationException
|
|
294
|
-
style = SimpleAttributeSet()
|
|
295
|
-
|
|
296
|
-
if color:
|
|
297
|
-
style.addAttribute(StyleConstants.Foreground, color)
|
|
298
|
-
|
|
299
|
-
self.doc.insertString(self.doc.length, msg, style)
|
|
300
|
-
self.text_pane.caretPosition = self.doc.length
|
|
301
|
-
|
|
302
|
-
def __propertiesChanged(self):
|
|
303
|
-
""" Detects when the properties have changed """
|
|
304
|
-
self.text_pane.background = Color.white #jEdit.getColorProperty("jython.bgColor")
|
|
305
|
-
self.text_pane.foreground = Color.blue #jEdit.getColorProperty("jython.resultColor")
|
|
306
|
-
self.infoColor = Color.black #jEdit.getColorProperty("jython.textColor")
|
|
307
|
-
self.errorColor = Color.red # jEdit.getColorProperty("jython.errorColor")
|
|
308
|
-
|
|
309
|
-
family = "Monospaced" # jEdit.getProperty("jython.font", "Monospaced")
|
|
310
|
-
size = 14 #jEdit.getIntegerProperty("jython.fontsize", 14)
|
|
311
|
-
style = Font.PLAIN #jEdit.getIntegerProperty("jython.fontstyle", Font.PLAIN)
|
|
312
|
-
self.text_pane.setFont(Font(family,style,size))
|
|
313
|
-
|
|
314
|
-
def __inittext(self):
|
|
315
|
-
""" Inserts the initial text with the jython banner """
|
|
316
|
-
self.doc.remove(0, self.doc.length)
|
|
317
|
-
for line in "\n".join(Console.BANNER):
|
|
318
|
-
self.__addOutput(self.infoColor, line)
|
|
319
|
-
self.printPrompt()
|
|
320
|
-
self.text_pane.requestFocus()
|
|
321
|
-
|
|
322
|
-
def __initKeyMap(self):
|
|
323
|
-
os_name = System.getProperty("os.name")
|
|
324
|
-
if os_name.startswith("Win"):
|
|
325
|
-
exit_key = KeyEvent.VK_Z
|
|
326
|
-
interrupt_key = KeyEvent.VK_PAUSE # BREAK
|
|
327
|
-
else:
|
|
328
|
-
exit_key = KeyEvent.VK_D
|
|
329
|
-
interrupt_key = KeyEvent.VK_C
|
|
330
|
-
|
|
331
|
-
keyBindings = [
|
|
332
|
-
(KeyEvent.VK_ENTER, 0, "jython.enter", self.enter),
|
|
333
|
-
(KeyEvent.VK_DELETE, 0, "jython.delete", self.delete),
|
|
334
|
-
(KeyEvent.VK_HOME, 0, "jython.home", self.home),
|
|
335
|
-
(KeyEvent.VK_LEFT, InputEvent.META_DOWN_MASK, "jython.home", self.home),
|
|
336
|
-
(KeyEvent.VK_UP, 0, "jython.up", self.history.historyUp),
|
|
337
|
-
(KeyEvent.VK_DOWN, 0, "jython.down", self.history.historyDown),
|
|
338
|
-
(KeyEvent.VK_PERIOD, 0, "jython.showPopup", self.showPopup),
|
|
339
|
-
(KeyEvent.VK_ESCAPE, 0, "jython.hide", self.hide),
|
|
340
|
-
|
|
341
|
-
('(', 0, "jython.showTip", self.showTip),
|
|
342
|
-
(')', 0, "jython.hideTip", self.hideTip),
|
|
343
|
-
(exit_key, InputEvent.CTRL_MASK, "jython.exit", self.quit),
|
|
344
|
-
(KeyEvent.VK_SPACE, InputEvent.CTRL_MASK, "jython.showPopup", self.showPopup),
|
|
345
|
-
(KeyEvent.VK_SPACE, 0, "jython.space", self.spaceTyped),
|
|
346
|
-
|
|
347
|
-
# explicitly set paste since we're overriding functionality
|
|
348
|
-
(KeyEvent.VK_V, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), "jython.paste", self.paste),
|
|
349
|
-
|
|
350
|
-
# Mac/Emacs keystrokes
|
|
351
|
-
(KeyEvent.VK_A, InputEvent.CTRL_MASK, "jython.home", self.home),
|
|
352
|
-
(KeyEvent.VK_E, InputEvent.CTRL_MASK, "jython.end", self.end),
|
|
353
|
-
(KeyEvent.VK_K, InputEvent.CTRL_MASK, "jython.killToEndLine", self.killToEndLine),
|
|
354
|
-
(KeyEvent.VK_Y, InputEvent.CTRL_MASK, "jython.paste", self.paste),
|
|
355
|
-
|
|
356
|
-
(interrupt_key, InputEvent.CTRL_MASK, "jython.keyboardInterrupt", self.keyboardInterrupt),
|
|
357
|
-
]
|
|
358
|
-
|
|
359
|
-
keymap = JTextComponent.addKeymap("jython", self.text_pane.keymap)
|
|
360
|
-
for (key, modifier, name, function) in keyBindings:
|
|
361
|
-
keymap.addActionForKeyStroke(KeyStroke.getKeyStroke(key, modifier), ActionDelegator(name, function))
|
|
362
|
-
self.text_pane.keymap = keymap
|
|
363
|
-
|
|
364
|
-
def __lastLine(self):
|
|
365
|
-
""" Returns the char offests of the last line """
|
|
366
|
-
lines = self.doc.rootElements[0].elementCount
|
|
367
|
-
offsets = (self.doc.rootElements[0].getElement(lines-1).startOffset, \
|
|
368
|
-
self.doc.rootElements[0].getElement(lines-1).endOffset)
|
|
369
|
-
line = self.doc.getText(offsets[0], offsets[1]-offsets[0])
|
|
370
|
-
if len(line) >= 4 and (line[0:4]==Console.PROMPT or line[0:4]==Console.PROCESS):
|
|
371
|
-
return (offsets[0] + len(Console.PROMPT), offsets[1])
|
|
372
|
-
return offsets
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
class ActionDelegator(TextAction):
|
|
376
|
-
"""
|
|
377
|
-
Class action delegator encapsulates a TextAction delegating the action
|
|
378
|
-
event to a simple function
|
|
379
|
-
"""
|
|
380
|
-
def __init__(self, name, delegate):
|
|
381
|
-
TextAction.__init__(self, name)
|
|
382
|
-
self.delegate = delegate
|
|
383
|
-
|
|
384
|
-
def actionPerformed(self, event):
|
|
385
|
-
if isinstance(self.delegate, Action):
|
|
386
|
-
self.delegate.actionPerformed(event)
|
|
387
|
-
else:
|
|
388
|
-
self.delegate(event)
|
|
389
|
-
|
|
390
|
-
class Interpreter(InteractiveInterpreter):
|
|
391
|
-
def __init__(self, console, locals):
|
|
392
|
-
InteractiveInterpreter.__init__(self, locals)
|
|
393
|
-
self.console = console
|
|
394
|
-
|
|
395
|
-
def write(self, data):
|
|
396
|
-
# send all output to the textpane
|
|
397
|
-
# KLUDGE remove trailing linefeed
|
|
398
|
-
self.console.printError(data[:-1])
|
|
399
|
-
|
|
400
|
-
# redirect stdout to the textpane
|
|
401
|
-
class StdOutRedirector:
|
|
402
|
-
def __init__(self, console):
|
|
403
|
-
self.console = console
|
|
404
|
-
|
|
405
|
-
def write(self, data):
|
|
406
|
-
#print >> sys.stderr, ">>%s<<" % data
|
|
407
|
-
if data != '\n':
|
|
408
|
-
# This is a sucky hack. Fix printResult
|
|
409
|
-
self.console.printResult(data)
|
|
410
|
-
|
|
411
|
-
class JythonFrame(JFrame):
|
|
412
|
-
def __init__(self):
|
|
413
|
-
self.title = "Jython"
|
|
414
|
-
self.size = (600, 400)
|
|
415
|
-
try:
|
|
416
|
-
self.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE)
|
|
417
|
-
except:
|
|
418
|
-
# assume jdk < 1.4
|
|
419
|
-
self.addWindowListener(KillListener())
|
|
420
|
-
self.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)
|
|
421
|
-
|
|
422
|
-
class KillListener(WindowAdapter):
|
|
423
|
-
"""
|
|
424
|
-
Handle EXIT_ON_CLOSE for jdk < 1.4
|
|
425
|
-
Thanks to James Richards for this method
|
|
426
|
-
"""
|
|
427
|
-
def windowClosed(self, evt):
|
|
428
|
-
import java.lang.System as System
|
|
429
|
-
System.exit(0)
|
|
430
|
-
|
|
431
|
-
def main(namespace=None):
|
|
432
|
-
frame = JythonFrame()
|
|
433
|
-
console = Console(namespace)
|
|
434
|
-
frame.getContentPane().add(JScrollPane(console.text_pane))
|
|
435
|
-
frame.visible = True
|
|
436
|
-
|
|
437
|
-
if __name__ == "__main__":
|
|
438
|
-
main()
|
|
439
|
-
|