rubyfox-server 2.8.4.0 → 2.9.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|