jsxe-cvs Mailing List for jsXe (Page 3)
Status: Inactive
Brought to you by:
ian_lewis
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(29) |
Dec
(63) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(4) |
Feb
(23) |
Mar
(19) |
Apr
(102) |
May
(88) |
Jun
(30) |
Jul
(42) |
Aug
(43) |
Sep
(17) |
Oct
(19) |
Nov
(41) |
Dec
(46) |
2005 |
Jan
(32) |
Feb
(8) |
Mar
(110) |
Apr
(102) |
May
(139) |
Jun
(45) |
Jul
(5) |
Aug
(1) |
Sep
(9) |
Oct
(30) |
Nov
(18) |
Dec
|
2006 |
Jan
(10) |
Feb
(85) |
Mar
(9) |
Apr
(64) |
May
(24) |
Jun
(95) |
Jul
(107) |
Aug
(123) |
Sep
(37) |
Oct
(15) |
Nov
(1) |
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <ian...@us...> - 2006-09-01 23:33:47
|
Revision: 1222 http://svn.sourceforge.net/jsxe/?rev=1222&view=rev Author: ian_lewis Date: 2006-09-01 16:33:32 -0700 (Fri, 01 Sep 2006) Log Message: ----------- Updated to support Japanese language Modified Paths: -------------- trunk/web/htdocs/content/en/overview.html trunk/web/htdocs/css/main.css trunk/web/htdocs/downloads.php trunk/web/htdocs/features.php trunk/web/htdocs/functions.php trunk/web/htdocs/get-involved.php trunk/web/htdocs/index.php trunk/web/htdocs/links.php trunk/web/htdocs/news.php trunk/web/htdocs/screenshots.php trunk/web/htdocs/sidebar.php Added Paths: ----------- trunk/web/htdocs/content/ja/ trunk/web/htdocs/content/ja/_global.php trunk/web/htdocs/images/de.png trunk/web/htdocs/images/jp.png trunk/web/htdocs/images/ru.png trunk/web/htdocs/images/se.png trunk/web/htdocs/images/us.png Modified: trunk/web/htdocs/content/en/overview.html =================================================================== --- trunk/web/htdocs/content/en/overview.html 2006-09-01 12:49:00 UTC (rev 1221) +++ trunk/web/htdocs/content/en/overview.html 2006-09-01 23:33:32 UTC (rev 1222) @@ -14,4 +14,4 @@ are not currently implemented. If you are interesting in helping to make jsXe a great editor by contributing your suggestions and needs or if you are a developer and would like to contribute time and code check - out <a href="get-involved.php">how to get involved</a>.</p> \ No newline at end of file + out <a href="get-involved.php">how to get involved</a></p> \ No newline at end of file Added: trunk/web/htdocs/content/ja/_global.php =================================================================== --- trunk/web/htdocs/content/ja/_global.php (rev 0) +++ trunk/web/htdocs/content/ja/_global.php 2006-09-01 23:33:32 UTC (rev 1222) @@ -0,0 +1,12 @@ +<?php +$trans['ja'] = array( + 'News' => 'ニュース', + 'Features' => '機能概要', + 'Screenshot' => 'スクリーンショット', + 'Screenshots' => 'スクリーンショット', + 'Download' => 'ダウンロード', + 'Downloads' => 'ダウンロード', + 'Get Involved' => '参加情報', + 'SourceForge Project' => 'SourceForge プロジェクト' +); +?> \ No newline at end of file Modified: trunk/web/htdocs/css/main.css =================================================================== --- trunk/web/htdocs/css/main.css 2006-09-01 12:49:00 UTC (rev 1221) +++ trunk/web/htdocs/css/main.css 2006-09-01 23:33:32 UTC (rev 1222) @@ -71,6 +71,13 @@ padding: 5px; } +#languages img { + display: inline; + margin-left: 0px; + margin-right: 0px; + padding: 0px; +} + #mainBody { position: absolute; /*float: right;*/ Modified: trunk/web/htdocs/downloads.php =================================================================== --- trunk/web/htdocs/downloads.php 2006-09-01 12:49:00 UTC (rev 1221) +++ trunk/web/htdocs/downloads.php 2006-09-01 23:33:32 UTC (rev 1222) @@ -4,7 +4,7 @@ ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo get_locale() ?>" lang="<?php echo get_locale() ?>"> <head> <title>jsXe: Downloads</title> <?php include("meta.php") ?> Modified: trunk/web/htdocs/features.php =================================================================== --- trunk/web/htdocs/features.php 2006-09-01 12:49:00 UTC (rev 1221) +++ trunk/web/htdocs/features.php 2006-09-01 23:33:32 UTC (rev 1222) @@ -4,7 +4,7 @@ ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo get_locale() ?>" lang="<?php echo get_locale() ?>"> <head> <title>jsXe: Features</title> <?php include("meta.php") ?> @@ -15,6 +15,7 @@ <div id="sidebar"> <?php include("sidebar.php") ?> </div> + <div id="mainBody"> <?php get_content('features'); ?> Modified: trunk/web/htdocs/functions.php =================================================================== --- trunk/web/htdocs/functions.php 2006-09-01 12:49:00 UTC (rev 1221) +++ trunk/web/htdocs/functions.php 2006-09-01 23:33:32 UTC (rev 1222) @@ -1,25 +1,124 @@ <?php +/* +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: +*/ + if( !defined('ROOT') ) die( 'Please, do not access this page directly.' ); +global $default_locale, $locales; +$default_locale = "en-us"; + +$dir = dirname(__FILE__).'/content/'; +$locales = directory_list($dir); + +//{{{ get_locale() + function get_locale() { - $req_locale="en"; - if (isset($_GET['lang'])) { - //IML: Support the lang attribute - $req_locale = $_GET['lang']; + if (!defined('LOCALE')) { + if (isset($_GET['lang'])) { + //IML: Support the lang attribute + $locale = match_locale($_GET['lang']); + if (!empty($locale)) { + define('LANG', $locale); + return $locale; + } + } + $locale = locale_from_httpaccept(); + define( 'LOCALE', $locale ); + return LOCALE; } - return $req_locale; -} + return LOCALE; +}//}}} -function create_link( $href, $contents ) { +//{{{ match_locale() + +function match_locale($locale) { + + global $locales; + + // echo 'match_locale('.$locale.')'; + // echo '<br/>'; + + + // look for exact match. (lang and country) + foreach ($locales as $key => $value) { + // echo 'searching '.$key; + // echo '<br/>'; + if ($key == $locale) { + // echo 'found '.$key; + // echo '<br/>'; + return $locale; + } + } + + // look for just lang + foreach ($locales as $key => $value) { + $pos = strpos( $locale, '-'); + if ($pos !== false) { + $locale = substr($locale, 0, $pos); + } + // echo 'searching '.$key; + // echo '<br/>'; + if ($key == $locale) { + // echo 'found '.$key; + // echo '<br/>'; + return $locale; + } + } + // echo '<br/>'; + //no matches at all. + return ''; +}//}}} + +//{{{ get_image() + +function get_image($image, $alt='') { + $location = 'http://jsxe.sourceforge.net/images/'.$image; + // $location = 'http://www.ianlewis.org/jsxetest/images/'.$image; + return '<img src="'.$location.'" alt="'.$alt.'"/>'; +}//}}} + +//{{{ create_link() + +function create_link( $href, $contents, $params = array() ) { + global $default_locale; + $link = '<a href="'.$href; - if (isset($_GET['lang'])) { - $locale = $_GET['lang']; - $link = $link.'?lang='.$locale; + + if (isset($_GET['lang']) and empty($params['lang'])) { + $params['lang'] = $_GET['lang']; } + // if (isset($_GET['id'])) { + // $params['id'] = $_GET['id']; + // } + + if (count($params) > 0) { + $link = $link.'?'; + foreach ($params as $key => $value) { + if (!empty($key) and !empty($value)) { + $link = $link.$key.'='.$value.'&'; + } + } + //remove the last '&' + $link = substr($link, 0, -1); + } + $link = $link.'">'.T_($contents).'</a>'; return $link; -} +}//}}} +//{{{ create_language_link() + +function create_language_link($lang, $text) { + $current_file = $_SERVER['PHP_SELF']; + $params = array(); + $params['lang'] = $lang; + return create_link($current_file, $text, $params); +}//}}} + +//{{{ get_content() + function get_content( $name ) { $file = 'content/'.get_locale().'/'.$name.'.html'; if (!file_exists($file)) { @@ -29,8 +128,10 @@ $data = fread($fh, filesize($file)); fclose($fh); echo $data; -} +}//}}} +//{{{ get_news() + function get_news() { $file = 'content/'.get_locale().'/news-header.html'; @@ -51,8 +152,10 @@ echo $header; echo $data; -} +}//}}} +//{{{ T_() + function T_( $string, $lang = '' ) { global $trans; @@ -87,8 +190,118 @@ // Return the English string: return $string; -} +}//}}} +//{{{ locale_from_httpaccept() +/** + * Detect language from HTTP_ACCEPT_LANGUAGE + * + * First matched full locale code in HTTP_ACCEPT_LANGUAGE will win + * Otherwise, first locale in table matching a lang code will win + * + * {@internal locale_from_httpaccept(-)}} + * + * @return locale made out of HTTP_ACCEPT_LANGUAGE or $default_locale, if no match + */ +function locale_from_httpaccept() { + + global $locales, $default_locale; + if ( isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ) { + + $accept = strtolower( $_SERVER['HTTP_ACCEPT_LANGUAGE'] ); + // pre_dump($accept, 'http_accept_language'); + // echo $accept; + // $accept = 'en;q=0.3,ru,ja;q=0.8,ar-sa;q=0.5'; + + $accept_locales = array(); + + $tok = strtok($accept, ","); + + while ($tok !== false) { + // echo "Word=$tok<br/>"; + + $priority = 1; + $locale = $tok; + + $pos = strpos( $tok, ';'); + if ($pos !== false) { + $locale = substr($locale, 0, $pos); + + //check priority + $priority_string = substr($tok, $pos+1); + // echo $priority_string; + // echo '<br/>'; + if (substr($priority_string, 0,2) == 'q=') { + $priority = substr($priority_string, 2); + } + } + + // echo 'locale='.$locale; + // echo '<br/>'; + // echo 'priority='.$priority; + // echo '<br/>'; + $accept_locales[$locale] = $priority; + + $tok = strtok(","); + } + // echo '<br/>'; + $accept_locales = array_sort($accept_locales, 'desc'); + foreach ( $accept_locales as $locale => $priority ) { + // echo $priority.' => '.$locale.'<br/>'; + $selected_locale = match_locale($locale); + if (!empty($selected_locale)) { + return $selected_locale; + } + } + } + return $default_locale; +}//}}} + +//{{{ array_sort() + +function array_sort($array, $type='asc'){ + $result=array(); + foreach($array as $var => $val){ + $set=false; + foreach($result as $var2 => $val2){ + if($set==false){ + if($val>$val2 && $type=='desc' || $val<$val2 && $type=='asc'){ + $temp=array(); + foreach($result as $var3 => $val3){ + if($var3==$var2) $set=true; + if($set){ + $temp[$var3]=$val3; + unset($result[$var3]); + } + } + $result[$var]=$val; + foreach($temp as $var3 => $val3){ + $result[$var3]=$val3; + } + } + } + } + if(!$set){ + $result[$var]=$val; + } + } + return $result; +}//}}} + +//{{{ directory_list() + +function directory_list($dir) { + $d = dir($dir); + while (false !== ($entry = $d->read())) { + if($entry != '.' && $entry != '..' && is_dir($dir.$entry)) + $arDir[$entry] = $dir.$entry.'/'; + } + $d->close(); + return $arDir; +}//}}} + +//{{{ redirect() + // func: redirect($to,$code=307) // spec: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html function redirect($to,$code=301) @@ -140,5 +353,6 @@ echo "</div>\n</div>\n"; } exit(0); -} +}//}}} + ?> \ No newline at end of file Modified: trunk/web/htdocs/get-involved.php =================================================================== --- trunk/web/htdocs/get-involved.php 2006-09-01 12:49:00 UTC (rev 1221) +++ trunk/web/htdocs/get-involved.php 2006-09-01 23:33:32 UTC (rev 1222) @@ -4,7 +4,7 @@ ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo get_locale() ?>" lang="<?php echo get_locale() ?>"> <head> <title>jsXe: Getting Involved</title> <?php include("meta.php") ?> @@ -15,6 +15,7 @@ <div id="sidebar"> <?php include("sidebar.php") ?> </div> + <div id="mainBody"> <?php get_content('get-involved') ?> Added: trunk/web/htdocs/images/de.png =================================================================== (Binary files differ) Property changes on: trunk/web/htdocs/images/de.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/web/htdocs/images/jp.png =================================================================== (Binary files differ) Property changes on: trunk/web/htdocs/images/jp.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/web/htdocs/images/ru.png =================================================================== (Binary files differ) Property changes on: trunk/web/htdocs/images/ru.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/web/htdocs/images/se.png =================================================================== (Binary files differ) Property changes on: trunk/web/htdocs/images/se.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/web/htdocs/images/us.png =================================================================== (Binary files differ) Property changes on: trunk/web/htdocs/images/us.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/web/htdocs/index.php =================================================================== --- trunk/web/htdocs/index.php 2006-09-01 12:49:00 UTC (rev 1221) +++ trunk/web/htdocs/index.php 2006-09-01 23:33:32 UTC (rev 1222) @@ -15,6 +15,7 @@ <div id="sidebar"> <?php include("sidebar.php") ?> </div> + <div id="mainBody"> <?php get_content('overview'); ?> Modified: trunk/web/htdocs/links.php =================================================================== --- trunk/web/htdocs/links.php 2006-09-01 12:49:00 UTC (rev 1221) +++ trunk/web/htdocs/links.php 2006-09-01 23:33:32 UTC (rev 1222) @@ -1,6 +1,57 @@ <?php -include("functions.php"); +// func: redirect($to,$code=307) +// spec: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html +function redirect($to,$code=301) +{ + $location = null; + $sn = $_SERVER['SCRIPT_NAME']; + $cp = dirname($sn); + if (substr($to,0,4)=='http') $location = $to; // Absolute URL + else + { + $schema = $_SERVER['SERVER_PORT']=='443'?'https':'http'; + $host = strlen($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:$_SERVER['SERVER_NAME']; + if (substr($to,0,1)=='/') $location = "$schema://$host$to"; + elseif (substr($to,0,1)=='.') // Relative Path + { + $location = "$schema://$host"; + $pu = parse_url($to); + $cd = dirname($_SERVER['SCRIPT_FILENAME']).'/'; + $np = realpath($cd.$pu['path']); + $np = str_replace($_SERVER['DOCUMENT_ROOT'],'',$np); + $location.= $np; + if ((isset($pu['query'])) && (strlen($pu['query'])>0)) $location.= '?'.$pu['query']; + } + } + $hs = headers_sent(); + if ($hs==false) + { + if ($code==301) header("301 Moved Permanently HTTP/1.1"); // Convert to GET + elseif ($code==302) header("302 Found HTTP/1.1"); // Conform re-POST + elseif ($code==303) header("303 See Other HTTP/1.1"); // dont cache, always use GET + elseif ($code==304) header("304 Not Modified HTTP/1.1"); // use cache + elseif ($code==305) header("305 Use Proxy HTTP/1.1"); + elseif ($code==306) header("306 Not Used HTTP/1.1"); + elseif ($code==307) header("307 Temorary Redirect HTTP/1.1"); + else trigger_error("Unhandled redirect() HTTP Code: $code",E_USER_ERROR); + header("Location: $location"); + header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); + } + elseif (($hs==true) || ($code==302) || ($code==303)) + { + // todo: draw some javascript to redirect + $cover_div_style = 'background-color: #ccc; height: 100%; left: 0px; position: absolute; top: 0px; width: 100%;'; + echo "<div style='$cover_div_style'>\n"; + $link_div_style = 'background-color: #fff; border: 2px solid #f00; left: 0px; margin: 5px; padding: 3px; '; + $link_div_style.= 'position: absolute; text-align: center; top: 0px; width: 95%; z-index: 99;'; + echo "<div style='$link_div_style'>\n"; + echo "<p>Please See: <a href='$to'>".htmlspecialchars($location)."</a></p>\n"; + echo "</div>\n</div>\n"; + } + exit(0); +} + // Do stuff here before sending headers redirect('/get-involved.php') ?> Modified: trunk/web/htdocs/news.php =================================================================== --- trunk/web/htdocs/news.php 2006-09-01 12:49:00 UTC (rev 1221) +++ trunk/web/htdocs/news.php 2006-09-01 23:33:32 UTC (rev 1222) @@ -1,6 +1,57 @@ <?php -include("functions.php"); +// func: redirect($to,$code=307) +// spec: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html +function redirect($to,$code=301) +{ + $location = null; + $sn = $_SERVER['SCRIPT_NAME']; + $cp = dirname($sn); + if (substr($to,0,4)=='http') $location = $to; // Absolute URL + else + { + $schema = $_SERVER['SERVER_PORT']=='443'?'https':'http'; + $host = strlen($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:$_SERVER['SERVER_NAME']; + if (substr($to,0,1)=='/') $location = "$schema://$host$to"; + elseif (substr($to,0,1)=='.') // Relative Path + { + $location = "$schema://$host"; + $pu = parse_url($to); + $cd = dirname($_SERVER['SCRIPT_FILENAME']).'/'; + $np = realpath($cd.$pu['path']); + $np = str_replace($_SERVER['DOCUMENT_ROOT'],'',$np); + $location.= $np; + if ((isset($pu['query'])) && (strlen($pu['query'])>0)) $location.= '?'.$pu['query']; + } + } + $hs = headers_sent(); + if ($hs==false) + { + if ($code==301) header("301 Moved Permanently HTTP/1.1"); // Convert to GET + elseif ($code==302) header("302 Found HTTP/1.1"); // Conform re-POST + elseif ($code==303) header("303 See Other HTTP/1.1"); // dont cache, always use GET + elseif ($code==304) header("304 Not Modified HTTP/1.1"); // use cache + elseif ($code==305) header("305 Use Proxy HTTP/1.1"); + elseif ($code==306) header("306 Not Used HTTP/1.1"); + elseif ($code==307) header("307 Temorary Redirect HTTP/1.1"); + else trigger_error("Unhandled redirect() HTTP Code: $code",E_USER_ERROR); + header("Location: $location"); + header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); + } + elseif (($hs==true) || ($code==302) || ($code==303)) + { + // todo: draw some javascript to redirect + $cover_div_style = 'background-color: #ccc; height: 100%; left: 0px; position: absolute; top: 0px; width: 100%;'; + echo "<div style='$cover_div_style'>\n"; + $link_div_style = 'background-color: #fff; border: 2px solid #f00; left: 0px; margin: 5px; padding: 3px; '; + $link_div_style.= 'position: absolute; text-align: center; top: 0px; width: 95%; z-index: 99;'; + echo "<div style='$link_div_style'>\n"; + echo "<p>Please See: <a href='$to'>".htmlspecialchars($location)."</a></p>\n"; + echo "</div>\n</div>\n"; + } + exit(0); +} + // Do stuff here before sending headers redirect('/index.php') ?> Modified: trunk/web/htdocs/screenshots.php =================================================================== --- trunk/web/htdocs/screenshots.php 2006-09-01 12:49:00 UTC (rev 1221) +++ trunk/web/htdocs/screenshots.php 2006-09-01 23:33:32 UTC (rev 1222) @@ -4,7 +4,7 @@ ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo get_locale() ?>" lang="<?php echo get_locale() ?>"> <head> <title>jsXe: Screenshots</title> <?php include("meta.php") ?> @@ -15,6 +15,7 @@ <div id="sidebar"> <?php include("sidebar.php") ?> </div> + <div id="mainBody"> <?php if (isset($_GET['id'])) { @@ -29,9 +30,11 @@ <table border="0" cellpadding="0" cellspacing="15" width="100%"> <tr> <td> - <a href="screenshots.php?id=86758"> - <img alt="screenshot" border="0" src="http://sourceforge.net/dbimage.php?id=86757"/> - </a> + <?php + $params = array(); + $params['id'] = '86758'; + echo create_link('screenshots.php', '<img alt="screenshot" border="0" src="http://sourceforge.net/dbimage.php?id=86757"/>', $params); + ?> </td> <td> jsXe with Japanese locale. @@ -42,9 +45,11 @@ </tr> <tr> <td> - <a href="screenshots.php?id=59765"> - <img alt="screenshot" border="0" src="https://sourceforge.net/dbimage.php?id=59764"/> - </a> + <?php + $params = array(); + $params['id'] = '59765'; + echo create_link('screenshots.php', '<img alt="screenshot" border="0" src="https://sourceforge.net/dbimage.php?id=59764"/>', $params); + ?> </td> <td> A screenshot showing the context dialog including cut/paste @@ -56,9 +61,11 @@ <tr> <td> - <a href="screenshots.php?id=34496"> - <img alt="screenshot" border="0" src="https://sourceforge.net/dbimage.php?id=34495"/> - </a> + <?php + $params = array(); + $params['id'] = '34496'; + echo create_link('screenshots.php', '<img alt="screenshot" border="0" src="https://sourceforge.net/dbimage.php?id=34495"/>', $params); + ?> </td> <td> A screenshot showing validation features. jsXe allows you to add nodes defined by DTD/Schema @@ -69,9 +76,11 @@ </tr> <tr> <td> - <a href="screenshots.php?id=34498"> - <img alt="screenshot" border="0" src="https://sourceforge.net/dbimage.php?id=34497"/> - </a> + <?php + $params = array(); + $params['id'] = '34498'; + echo create_link('screenshots.php', '<img alt="screenshot" border="0" src="https://sourceforge.net/dbimage.php?id=34497"/>', $params); + ?> </td> <td> A screenshot showing the syntax highlighted source view. @@ -82,9 +91,11 @@ </tr> <tr> <td> - <a href="screenshots.php?id=34500"> - <img alt="screenshot" border="0" src="https://sourceforge.net/dbimage.php?id=34499"/> - </a> + <?php + $params = array(); + $params['id'] = '34500'; + echo create_link('screenshots.php', '<img alt="screenshot" border="0" src="https://sourceforge.net/dbimage.php?id=34499"/>', $params); + ?> </td> <td> A screenshot of jsXe's options panel. @@ -95,9 +106,11 @@ </tr> <tr> <td> - <a href="screenshots.php?id=34502"> - <img alt="screenshot" border="0" src="https://sourceforge.net/dbimage.php?id=34501"/> - </a> + <?php + $params = array(); + $params['id'] = '34502'; + echo create_link('screenshots.php', '<img alt="screenshot" border="0" src="https://sourceforge.net/dbimage.php?id=34501"/>', $params); + ?> </td> <td> A screenshot of the edit node dialog. This dialog can be used to edit nodes defined in DTD/Schema Modified: trunk/web/htdocs/sidebar.php =================================================================== --- trunk/web/htdocs/sidebar.php 2006-09-01 12:49:00 UTC (rev 1221) +++ trunk/web/htdocs/sidebar.php 2006-09-01 23:33:32 UTC (rev 1222) @@ -3,9 +3,9 @@ <ul> <li><?php echo create_link("index.php", "News") ?></li> <li><?php echo create_link("features.php", "Features") ?></li> - <li><?php echo create_link("screenshots.php", "Screenshots") ?></a></li> + <li><?php echo create_link("screenshots.php", "Screenshots") ?></li> <li><?php echo create_link("downloads.php", "Downloads") ?></li> - <li><?php echo create_link("get-involved.php", "Get Involved") ?></a></li> + <li><?php echo create_link("get-involved.php", "Get Involved") ?></li> </ul> <ul> @@ -15,3 +15,10 @@ <a href="http://sourceforge.net/"><img alt="SourceForge Logo" src="http://sourceforge.net/sflogo.php?group_id=58584"/></a> <a href="http://sourceforge.jp/"><img alt="SourceForge.jp" src="http://sourceforge.jp/sflogo.php?group_id=2456"/></a> + +<div id="languages"/> + <ul> + <li><?php echo get_image('us.png');?> <?php echo create_language_link('en-us', 'English'); ?></li> + <li><?php echo get_image('jp.png');?> <?php echo create_language_link('ja-jp', '日本語'); ?></li> + </ul> +</div> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-01 12:49:06
|
Revision: 1221 http://svn.sourceforge.net/jsxe/?rev=1221&view=rev Author: ian_lewis Date: 2006-09-01 05:49:00 -0700 (Fri, 01 Sep 2006) Log Message: ----------- moved redirect function to functions.php Modified Paths: -------------- trunk/web/htdocs/functions.php trunk/web/htdocs/links.php trunk/web/htdocs/news.php Modified: trunk/web/htdocs/functions.php =================================================================== --- trunk/web/htdocs/functions.php 2006-09-01 05:11:19 UTC (rev 1220) +++ trunk/web/htdocs/functions.php 2006-09-01 12:49:00 UTC (rev 1221) @@ -88,4 +88,57 @@ // Return the English string: return $string; } + +// func: redirect($to,$code=307) +// spec: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html +function redirect($to,$code=301) +{ + $location = null; + $sn = $_SERVER['SCRIPT_NAME']; + $cp = dirname($sn); + if (substr($to,0,4)=='http') $location = $to; // Absolute URL + else + { + $schema = $_SERVER['SERVER_PORT']=='443'?'https':'http'; + $host = strlen($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:$_SERVER['SERVER_NAME']; + if (substr($to,0,1)=='/') $location = "$schema://$host$to"; + elseif (substr($to,0,1)=='.') // Relative Path + { + $location = "$schema://$host"; + $pu = parse_url($to); + $cd = dirname($_SERVER['SCRIPT_FILENAME']).'/'; + $np = realpath($cd.$pu['path']); + $np = str_replace($_SERVER['DOCUMENT_ROOT'],'',$np); + $location.= $np; + if ((isset($pu['query'])) && (strlen($pu['query'])>0)) $location.= '?'.$pu['query']; + } + } + + $hs = headers_sent(); + if ($hs==false) + { + if ($code==301) header("301 Moved Permanently HTTP/1.1"); // Convert to GET + elseif ($code==302) header("302 Found HTTP/1.1"); // Conform re-POST + elseif ($code==303) header("303 See Other HTTP/1.1"); // dont cache, always use GET + elseif ($code==304) header("304 Not Modified HTTP/1.1"); // use cache + elseif ($code==305) header("305 Use Proxy HTTP/1.1"); + elseif ($code==306) header("306 Not Used HTTP/1.1"); + elseif ($code==307) header("307 Temorary Redirect HTTP/1.1"); + else trigger_error("Unhandled redirect() HTTP Code: $code",E_USER_ERROR); + header("Location: $location"); + header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); + } + elseif (($hs==true) || ($code==302) || ($code==303)) + { + // todo: draw some javascript to redirect + $cover_div_style = 'background-color: #ccc; height: 100%; left: 0px; position: absolute; top: 0px; width: 100%;'; + echo "<div style='$cover_div_style'>\n"; + $link_div_style = 'background-color: #fff; border: 2px solid #f00; left: 0px; margin: 5px; padding: 3px; '; + $link_div_style.= 'position: absolute; text-align: center; top: 0px; width: 95%; z-index: 99;'; + echo "<div style='$link_div_style'>\n"; + echo "<p>Please See: <a href='$to'>".htmlspecialchars($location)."</a></p>\n"; + echo "</div>\n</div>\n"; + } + exit(0); +} ?> \ No newline at end of file Modified: trunk/web/htdocs/links.php =================================================================== --- trunk/web/htdocs/links.php 2006-09-01 05:11:19 UTC (rev 1220) +++ trunk/web/htdocs/links.php 2006-09-01 12:49:00 UTC (rev 1221) @@ -1,57 +1,6 @@ <?php -// func: redirect($to,$code=307) -// spec: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html -function redirect($to,$code=301) -{ - $location = null; - $sn = $_SERVER['SCRIPT_NAME']; - $cp = dirname($sn); - if (substr($to,0,4)=='http') $location = $to; // Absolute URL - else - { - $schema = $_SERVER['SERVER_PORT']=='443'?'https':'http'; - $host = strlen($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:$_SERVER['SERVER_NAME']; - if (substr($to,0,1)=='/') $location = "$schema://$host$to"; - elseif (substr($to,0,1)=='.') // Relative Path - { - $location = "$schema://$host"; - $pu = parse_url($to); - $cd = dirname($_SERVER['SCRIPT_FILENAME']).'/'; - $np = realpath($cd.$pu['path']); - $np = str_replace($_SERVER['DOCUMENT_ROOT'],'',$np); - $location.= $np; - if ((isset($pu['query'])) && (strlen($pu['query'])>0)) $location.= '?'.$pu['query']; - } - } +include("functions.php"); - $hs = headers_sent(); - if ($hs==false) - { - if ($code==301) header("301 Moved Permanently HTTP/1.1"); // Convert to GET - elseif ($code==302) header("302 Found HTTP/1.1"); // Conform re-POST - elseif ($code==303) header("303 See Other HTTP/1.1"); // dont cache, always use GET - elseif ($code==304) header("304 Not Modified HTTP/1.1"); // use cache - elseif ($code==305) header("305 Use Proxy HTTP/1.1"); - elseif ($code==306) header("306 Not Used HTTP/1.1"); - elseif ($code==307) header("307 Temorary Redirect HTTP/1.1"); - else trigger_error("Unhandled redirect() HTTP Code: $code",E_USER_ERROR); - header("Location: $location"); - header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); - } - elseif (($hs==true) || ($code==302) || ($code==303)) - { - // todo: draw some javascript to redirect - $cover_div_style = 'background-color: #ccc; height: 100%; left: 0px; position: absolute; top: 0px; width: 100%;'; - echo "<div style='$cover_div_style'>\n"; - $link_div_style = 'background-color: #fff; border: 2px solid #f00; left: 0px; margin: 5px; padding: 3px; '; - $link_div_style.= 'position: absolute; text-align: center; top: 0px; width: 95%; z-index: 99;'; - echo "<div style='$link_div_style'>\n"; - echo "<p>Please See: <a href='$to'>".htmlspecialchars($location)."</a></p>\n"; - echo "</div>\n</div>\n"; - } - exit(0); -} - // Do stuff here before sending headers redirect('/get-involved.php') ?> Modified: trunk/web/htdocs/news.php =================================================================== --- trunk/web/htdocs/news.php 2006-09-01 05:11:19 UTC (rev 1220) +++ trunk/web/htdocs/news.php 2006-09-01 12:49:00 UTC (rev 1221) @@ -1,57 +1,6 @@ <?php -// func: redirect($to,$code=307) -// spec: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html -function redirect($to,$code=301) -{ - $location = null; - $sn = $_SERVER['SCRIPT_NAME']; - $cp = dirname($sn); - if (substr($to,0,4)=='http') $location = $to; // Absolute URL - else - { - $schema = $_SERVER['SERVER_PORT']=='443'?'https':'http'; - $host = strlen($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:$_SERVER['SERVER_NAME']; - if (substr($to,0,1)=='/') $location = "$schema://$host$to"; - elseif (substr($to,0,1)=='.') // Relative Path - { - $location = "$schema://$host"; - $pu = parse_url($to); - $cd = dirname($_SERVER['SCRIPT_FILENAME']).'/'; - $np = realpath($cd.$pu['path']); - $np = str_replace($_SERVER['DOCUMENT_ROOT'],'',$np); - $location.= $np; - if ((isset($pu['query'])) && (strlen($pu['query'])>0)) $location.= '?'.$pu['query']; - } - } +include("functions.php"); - $hs = headers_sent(); - if ($hs==false) - { - if ($code==301) header("301 Moved Permanently HTTP/1.1"); // Convert to GET - elseif ($code==302) header("302 Found HTTP/1.1"); // Conform re-POST - elseif ($code==303) header("303 See Other HTTP/1.1"); // dont cache, always use GET - elseif ($code==304) header("304 Not Modified HTTP/1.1"); // use cache - elseif ($code==305) header("305 Use Proxy HTTP/1.1"); - elseif ($code==306) header("306 Not Used HTTP/1.1"); - elseif ($code==307) header("307 Temorary Redirect HTTP/1.1"); - else trigger_error("Unhandled redirect() HTTP Code: $code",E_USER_ERROR); - header("Location: $location"); - header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); - } - elseif (($hs==true) || ($code==302) || ($code==303)) - { - // todo: draw some javascript to redirect - $cover_div_style = 'background-color: #ccc; height: 100%; left: 0px; position: absolute; top: 0px; width: 100%;'; - echo "<div style='$cover_div_style'>\n"; - $link_div_style = 'background-color: #fff; border: 2px solid #f00; left: 0px; margin: 5px; padding: 3px; '; - $link_div_style.= 'position: absolute; text-align: center; top: 0px; width: 95%; z-index: 99;'; - echo "<div style='$link_div_style'>\n"; - echo "<p>Please See: <a href='$to'>".htmlspecialchars($location)."</a></p>\n"; - echo "</div>\n</div>\n"; - } - exit(0); -} - // Do stuff here before sending headers redirect('/index.php') ?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-01 05:11:24
|
Revision: 1220 http://svn.sourceforge.net/jsxe/?rev=1220&view=rev Author: ian_lewis Date: 2006-08-31 22:11:19 -0700 (Thu, 31 Aug 2006) Log Message: ----------- Japanese page for sourceforge.jp: Added Paths: ----------- trunk/web-jp/ trunk/web-jp/htdocs/ trunk/web-jp/htdocs/index.php Added: trunk/web-jp/htdocs/index.php =================================================================== --- trunk/web-jp/htdocs/index.php (rev 0) +++ trunk/web-jp/htdocs/index.php 2006-09-01 05:11:19 UTC (rev 1220) @@ -0,0 +1,57 @@ +<?php +// func: redirect($to,$code=307) +// spec: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html +function redirect($to,$code=301) +{ + $location = null; + $sn = $_SERVER['SCRIPT_NAME']; + $cp = dirname($sn); + if (substr($to,0,4)=='http') $location = $to; // Absolute URL + else + { + $schema = $_SERVER['SERVER_PORT']=='443'?'https':'http'; + $host = strlen($_SERVER['HTTP_HOST'])?$_SERVER['HTTP_HOST']:$_SERVER['SERVER_NAME']; + if (substr($to,0,1)=='/') $location = "$schema://$host$to"; + elseif (substr($to,0,1)=='.') // Relative Path + { + $location = "$schema://$host"; + $pu = parse_url($to); + $cd = dirname($_SERVER['SCRIPT_FILENAME']).'/'; + $np = realpath($cd.$pu['path']); + $np = str_replace($_SERVER['DOCUMENT_ROOT'],'',$np); + $location.= $np; + if ((isset($pu['query'])) && (strlen($pu['query'])>0)) $location.= '?'.$pu['query']; + } + } + + $hs = headers_sent(); + if ($hs==false) + { + if ($code==301) header("301 Moved Permanently HTTP/1.1"); // Convert to GET + elseif ($code==302) header("302 Found HTTP/1.1"); // Conform re-POST + elseif ($code==303) header("303 See Other HTTP/1.1"); // dont cache, always use GET + elseif ($code==304) header("304 Not Modified HTTP/1.1"); // use cache + elseif ($code==305) header("305 Use Proxy HTTP/1.1"); + elseif ($code==306) header("306 Not Used HTTP/1.1"); + elseif ($code==307) header("307 Temorary Redirect HTTP/1.1"); + else trigger_error("Unhandled redirect() HTTP Code: $code",E_USER_ERROR); + header("Location: $location"); + header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0'); + } + elseif (($hs==true) || ($code==302) || ($code==303)) + { + // todo: draw some javascript to redirect + $cover_div_style = 'background-color: #ccc; height: 100%; left: 0px; position: absolute; top: 0px; width: 100%;'; + echo "<div style='$cover_div_style'>\n"; + $link_div_style = 'background-color: #fff; border: 2px solid #f00; left: 0px; margin: 5px; padding: 3px; '; + $link_div_style.= 'position: absolute; text-align: center; top: 0px; width: 95%; z-index: 99;'; + echo "<div style='$link_div_style'>\n"; + echo "<p>Please See: <a href='$to'>".htmlspecialchars($location)."</a></p>\n"; + echo "</div>\n</div>\n"; + } + exit(0); +} + +// Do stuff here before sending headers +redirect('http://jsxe.sourceforge.net/') +?> Property changes on: trunk/web-jp/htdocs/index.php ___________________________________________________________________ Name: svn:executable + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-01 04:28:57
|
Revision: 1219 http://svn.sourceforge.net/jsxe/?rev=1219&view=rev Author: ian_lewis Date: 2006-08-31 21:28:54 -0700 (Thu, 31 Aug 2006) Log Message: ----------- Added period to end of overview paragraph Modified Paths: -------------- trunk/web/htdocs/content/en/overview.html Modified: trunk/web/htdocs/content/en/overview.html =================================================================== --- trunk/web/htdocs/content/en/overview.html 2006-09-01 04:27:48 UTC (rev 1218) +++ trunk/web/htdocs/content/en/overview.html 2006-09-01 04:28:54 UTC (rev 1219) @@ -14,4 +14,4 @@ are not currently implemented. If you are interesting in helping to make jsXe a great editor by contributing your suggestions and needs or if you are a developer and would like to contribute time and code check - out <a href="get-involved.php">how to get involved</a></p> \ No newline at end of file + out <a href="get-involved.php">how to get involved</a>.</p> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-01 04:28:01
|
Revision: 1218 http://svn.sourceforge.net/jsxe/?rev=1218&view=rev Author: ian_lewis Date: 2006-08-31 21:27:48 -0700 (Thu, 31 Aug 2006) Log Message: ----------- Updated the website infrastructure to have multi-language support Modified Paths: -------------- trunk/web/htdocs/downloads.php trunk/web/htdocs/features.php trunk/web/htdocs/footer.php trunk/web/htdocs/get-involved.php trunk/web/htdocs/index.php trunk/web/htdocs/meta.php trunk/web/htdocs/screenshots.php trunk/web/htdocs/sidebar.php Added Paths: ----------- trunk/web/htdocs/content/ trunk/web/htdocs/content/en/ trunk/web/htdocs/content/en/downloads.html trunk/web/htdocs/content/en/features.html trunk/web/htdocs/content/en/get-involved.html trunk/web/htdocs/content/en/news-header.html trunk/web/htdocs/content/en/news.html trunk/web/htdocs/content/en/overview.html trunk/web/htdocs/content/jp/ trunk/web/htdocs/content/jp/_global.php trunk/web/htdocs/functions.php Added: trunk/web/htdocs/content/en/downloads.html =================================================================== --- trunk/web/htdocs/content/en/downloads.html (rev 0) +++ trunk/web/htdocs/content/en/downloads.html 2006-09-01 04:27:48 UTC (rev 1218) @@ -0,0 +1,74 @@ +<h2>Downloads</h2> + +<h3>Requirements</h3> + +<ul> +<li>jsXe requires Java 2 version 1.4.2</li> +<li>jsXe currently requires a specific version of Xerces-J to + run. Xerces-J 2.8.0 is required since some features are + implemented using the DOM level 3 interfaces that were in 2.6.0 + but were changed in later versions. Xerces-J 2.8.0 included in + the normal binary and source releases of jsXe for convenience. + You can also get Xerces-J 2.8.0 + <a href="http://archive.apache.org/dist/xml/xerces-j/">here</a>.</li> +</ul> + +<h3>Download</h3> + +<ul> + <li>The latest stable version of jsXe is <a href="https://sourceforge.net/project/showfiles.php?group_id=58584&package_id=120827">0.4 beta</a></li> + <li>The latest development version of jsXe is <a href="https://sourceforge.net/project/showfiles.php?group_id=58584&package_id=54488">0.5 pre2</a></li> +</ul> + +<h3>Install</h3> + +<ul> + <li><b>0.4 beta</b> + <ul> + <li><p>To install and run jsXe simply unzip jsXe into the directory + of your choosing and run the included batch program or shell + script. You will need to make sure that the java runtime is in + your path. In the root of the jsXe install directory type the + following at a command prompt.</p> + <p>./bin/jsXe.sh</p> + <p>or</p> + <p>./bin/jsXe.bat</p> + <p>The batch program should be run in with the jsXe root + directory of as the working directory. So you can create a + shortcut to run jsXe by specifying the batch file as the program + to run and jsXe's root directory as the working directory.</p> + + <p>Ex.<br/> + Target: "C:\Program Files\jsXe\bin\jsXe.bat"<br/> + Start in: "C:\Program Files\jsXe\"</p> + + <p>You can also edit the JSXEDIR variable in the batch program + to be the directory where you installed jsXe and then the + 'Start in' directory can be anywhere.</p> + </li> + </ul> + </li> + <li><b>0.5 pre2</b> + <ul> + <li><b>Windows</b> + + <p>Just run jsXe using the jsXe.exe in the install directory. The + exe will detect your version of Java and run jsXe using that + version.</p> + </li> + + <li><b>Unix/Linux</b> + + <p>To run jsXe you should just run the java interpreter on the + jsXe.jar file. There is a shell script included in the + source tree for this purpose.</p> + + <p>./bin/jsXe.sh</p> + + <p>The shell script should be run in with the jsXe root directory of + as the working directory. You can also edit the JSXEDIR variable in + the shell script to be the directory where you installed jsXe.</p> + </li> + </ul> + </li> +</ul> \ No newline at end of file Added: trunk/web/htdocs/content/en/features.html =================================================================== --- trunk/web/htdocs/content/en/features.html (rev 0) +++ trunk/web/htdocs/content/en/features.html 2006-09-01 04:27:48 UTC (rev 1218) @@ -0,0 +1,64 @@ +<h2>Features</h2> + +<p>These are features currently implemented in the stable version of jsXe</p> + +<h3>General</h3> + +<ul> + <li>Written in Java, so it runs on Mac OS X, OS/2, Unix, VMS and Windows.</li> + <li>XML documents are edited using views. jsXe allows for + multiple views.</li> + <li>Syntax highlighted source view (version 0.4 beta)</li> + <li>Plugin interface that allows the addition of views + without re-compiling</li> + <li>Relatively good serialization of XML documents. + Supports the option of formatting serialized XML + documents or not formatting. Supports preserving + whitespace in text.</li> + <li>Allows opening and editing of multiple XML documents in + one open window.</li> + <li>Incremental parsing. Parsing the document and validation + will be done automatically without having to + continuously hit a validate/parse button.</li> + <li>Support for validation of an XML document using DTDs and + other forms of Schema.</li> + <li>DTD/Schema introspection. Information in the DTD/Schema is used to + allow users to add and edit nodes based on defined + within the DTD/Schema.</li> + <li>Internationalization. jsXe has support to easily + create translations of menus and messages into your native + language.</li> + <li>Built-in completion support for XML Schema, XHTML, XSLT, and + XSL:FO</li> +</ul> + +<h3>Tree View</h3> + +<ul> + <li>Adding, deleting, and editing of Nodes in an XML document using context menus.</li> + <li>Adding, deleting, and editing of attributes of an element node.</li> + <li>Drag and Drop of XML nodes within the Tree view and to text editors.</li> +</ul> + +<h3>Source View</h3> + +<ul> + <li>Text editing of the full XML source of any XML document</li> + <li>Cut, copy, and paste and other limited features.</li> +</ul> + + +<h2>Planned Features</h2> + +<p>These are features that have been added to the development version of jsXe or are planned for the future</p> + +<ul> + <li>A schema designer view that uses <a href="http://www.jgraph.com/">JGraph</a></li> + <li>A docbook editor view using <a href="http://vex.sourceforge.net/">Vex</a></li> + <li>An XHTML renderer using <a href="https://xhtmlrenderer.dev.java.net/">Flying Saucer</a></li> + <li>Support for transforming XML documents using XSLT stylesheets.</li> + <li>Support for Unlimited Undo (version 0.5 beta)</li> + <li>Tag completion using DTD/Schema introspection (version 0.5 beta)</li> + <li>Automatic insertion of closing tags (version 0.5 beta)</li> + <li>A help system using <a href="http://aurigadoc.sourceforge.net/">AurigaDoc</a> or <a href="http://docbook.sourceforge.net/">Docbook</a> (version 0.6 beta)</li> +</ul> \ No newline at end of file Added: trunk/web/htdocs/content/en/get-involved.html =================================================================== --- trunk/web/htdocs/content/en/get-involved.html (rev 0) +++ trunk/web/htdocs/content/en/get-involved.html 2006-09-01 04:27:48 UTC (rev 1218) @@ -0,0 +1,104 @@ +<h2>Getting Involved</h2> + +<p>jsXe needs developers to implement new features and fix bugs, + testers for testing jsXe, translators for translating messages and the + website, and web designers who are interested in updating the project's + website.</p> + +<p>Getting involved is fairly easy. There are a multitude of ways that + you can become involved in the project. The easiest is probably by + subscribing to the mailing lists, however there are many methods at + your disposal.</p> + +<p>Note: Contributers will be expected to give their real names.</p> + +<h3>Developers</h3> + +<p>If you are interested in working on jsXe, please + <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">subscribe</a> + and send a mail to the jsxe-devel mailing list. The developers can help + get you started. Developers should know how to use SVN and have some + experience with Java swing or XML.</p> + +<h3>Testers</h3> + +<p>If you are interested in testing jsXe, please + <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">subscribe</a> + and send a mail to the jsxe-devel mailing list. Testing will normally be + done on SVN and beta releases. Familiarity with + <a href="http://subversion.tigris.org/">SVN</a> and + <a href="http://ant.apache.org/">ant</a> is a plus since it will be needed + for testing code from the SVN repository.</p> + +<h3>Translators</h3> + +<p>If you are interested in translating for the jsXe project. Please + <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">subscribe</a> + and send a mail to the jsxe-devel mailing list. For those who are + knowlegeable of SVN, you can check out the messages files from jsXe's + <a href="http://svn.sourceforge.net/viewcvs.cgi/jsxe/trunk/jsxe/">SVN repository</a>. + But even if you are not versed in SVN, the developers on the + mailing list can help get you started.</p> + +<h3>Web Developers</h3> + +<p>If you are interested in working on jsXe's webpage, please + <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">subscribe</a> + and send a mail to the jsxe-devel mailing list. The developers can help + get you started. Web developers should have some knowledge of CSS and + PHP.</p> + +<h3>Users</h3> + +<p>Let us know what you think! + <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-users">Subscribe</a> + to the jsxe-users mailing list and let us know what you think and what + features you would like to have implemented. Or you could submit a + <a href="http://sourceforge.net/tracker/?atid=488271&group_id=58584&func=browse">feature request</a>.</p> + +<h3>Mailing Lists</h3> + +<p>These three mailing lists will be low traffic.</p> + +<ul> + <li>jsXe-users: <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-users">Subscribe/Unsubscribe/Preferences</a>: a general discussion list for users of jsXe.</li> + <li>jsXe-devel: <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">Subscribe/Unsubscribe/Preferences</a>: a list for technical discussion regarding jsXe development.</li> + <li>jsXe-cvs: <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-cvs">Subscribe/Unsubscribe/Preferences</a>: a list where SVN commits are posted. Anyone subscribing to this list will be notified when changes are commited to SVN.</li> +</ul> + +<h3>Forums</h3> + +<p>To get support if you're having problems installing or running + jsXe please post to the Help forum. Any other comments and criticism + can be posted in the open discussion forum.</p> + +<ul> + <li><a href="http://sourceforge.net/forum/forum.php?forum_id=197160">Open Discussion</a></li> + <li><a href="http://sourceforge.net/forum/forum.php?forum_id=197161">Help</a></li> +</ul> + +<h3>IRC</h3> + +<p>Come to #jsxe on irc.freenode.net to talk with the developers.</p> + +<h3>Reporting Bugs</h3> + +<p>Reporting bugs is easy. Just submit a bug report on <a href="http://sourceforge.net/tracker/?atid=488268&group_id=58584&func=browse">jsXe's Bug Tracker</a>. + Just enter a description of the bug and if possible how to reproduce it + and it will be assigned and addressed by the project development team.</p> + +<h3>Feature Requests</h3> + +<p>Features requests are always welcome and will be addressed based on user + need and whether the feature fits with jsXe's vision. Feature + requests are easy too! Just submit a feature requests to + <a href="http://sourceforge.net/tracker/?atid=488271&group_id=58584&func=browse">jsXe's Feature Request Tracker</a>.</p> + +<h3>Patches</h3> + +<p>This is probably the best way to start becoming involved in the devolopment of jsXe. + You can submit patches using + <a href="http://sourceforge.net/tracker/?atid=488270&group_id=58584&func=browse">jsXe's Sourceforge Patch Tracker</a>. + Just provide the patch or code change itself and a discription of what + it does when you submit it. If your work is good then we'll add + you as developer with SVN access.</p> \ No newline at end of file Added: trunk/web/htdocs/content/en/news-header.html =================================================================== --- trunk/web/htdocs/content/en/news-header.html (rev 0) +++ trunk/web/htdocs/content/en/news-header.html 2006-09-01 04:27:48 UTC (rev 1218) @@ -0,0 +1 @@ +<h2>News</h2> \ No newline at end of file Added: trunk/web/htdocs/content/en/news.html =================================================================== --- trunk/web/htdocs/content/en/news.html (rev 0) +++ trunk/web/htdocs/content/en/news.html 2006-09-01 04:27:48 UTC (rev 1218) @@ -0,0 +1,9 @@ + <p><a href="http://sourceforge.net/forum/forum.php?forum_id=594064"><strong>jsXe 0.5 pre2 released!!</strong></a> <small class="date">2006-07-24 12:39 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe team is proud to announce the release of jsXe 0.5 pre2. This release is a bugfix release to fix a number of bugs that were released with 0.5 pre1. A NullPointerException being thrown by the source view as well as horizontal scrolling issues in the source view have been fixed. jsXe will also reload a file that is not-wellformed on disk properly.<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=594064">Read More »</a></p> + <p><a href="http://sourceforge.net/forum/forum.php?forum_id=592911"><strong>jsXe 0.5 pre1 released!!</strong></a> <small class="date">2006-07-20 09:48 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe team is proud to release the newest unstable version of jsXe which will eventually become the 0.5 beta release. +<br /> +<br />This release contains support for user defined keyboard shortcuts. These shortcuts can be used to run actions defined by jsXe. This release also includes fixes for translation files. Translation files with non-ASCII characters should display properly now.<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=592911">Read More »</a></p> + <p><a href="http://sourceforge.net/forum/forum.php?forum_id=575087"><strong>jsXe has migrated to SVN!!!</strong></a> <small class="date">2006-05-24 17:57 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe project team has just finished migrating from sourceforge's CVS services to sourceforge's SVN services. From now on users should use SVN to download the current working version of jsXe's source code. Please see <a href="http://sourceforge.net/svn/?group_id=58584" target="_new">http://sourceforge.net/svn/?group_id=58584</a> for instructions on how to download from SVN.<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=575087">Read More »</a></p> + <p><a href="http://sourceforge.net/forum/forum.php?forum_id=565332"><strong>jsXe 0.4 beta released!</strong></a> <small class="date">2006-04-25 13:49 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe team is proud to announce the release of jsXe 0.4 beta! This improves on 0.3 beta by adding support for DTD/Schema validation and introspection, a syntax highlighted source view, full encoding support, and many, many gui changes. See below for all changes over 0.3 beta! +<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=565332">Read More »</a></p> + <p><a href="http://sourceforge.net/forum/forum.php?forum_id=541741"><strong>jsXe 0.4 pre3 released!</strong></a> <small class="date">2006-02-19 13:45 - <a href="http://sourceforge.net/projects/jsxe/">jsXe</a></small><br />The jsXe team is pleased to annonce the release of version 0.4pre3. This release focused on adding support for viewing validation errors with documents that are validated against DTD and Schema. However, A number of UI enhancements were also added in this release including cut/copy/paste in the tree view and an activity log dialog for troubleshooting. The source view was made a bit easier to use by adding the ability to maintain indent and solving some problems with syntax highlighting. +<br /><a href="http://sourceforge.net/forum/forum.php?forum_id=541741">Read More »</a></p><p><a href="http://sourceforge.net/news/?group_id=58584">Site news archive »</a></p> \ No newline at end of file Added: trunk/web/htdocs/content/en/overview.html =================================================================== --- trunk/web/htdocs/content/en/overview.html (rev 0) +++ trunk/web/htdocs/content/en/overview.html 2006-09-01 04:27:48 UTC (rev 1218) @@ -0,0 +1,17 @@ +<h2>Overview</h2> + +<p>jsXe is the <b>J</b>ava <b>S</b>imple <b>X</b>ML <b>E</b>ditor.</p> +<p>jsXe is a fast, intuitive, scalable, platform-independent XML editor. + It is written in <a href="http://java.sun.com">Java</a> using the Swing + toolkit, and <a href="http://xml.apache.org/xerces2-j/">Xerces-J</a> + and is released under the terms of the + <a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a>. + It aims to provide end users and developers with an + intuitive way of creating XML documents that is simple enough to deal + with any XML document but flexible to allow the addition of support for + XML document formats through the use of plugins.</p> +<p>jsXe is currently in the beta stage and many intended features + are not currently implemented. If you are interesting in helping to + make jsXe a great editor by contributing your suggestions and needs or + if you are a developer and would like to contribute time and code check + out <a href="get-involved.php">how to get involved</a></p> \ No newline at end of file Added: trunk/web/htdocs/content/jp/_global.php =================================================================== --- trunk/web/htdocs/content/jp/_global.php (rev 0) +++ trunk/web/htdocs/content/jp/_global.php 2006-09-01 04:27:48 UTC (rev 1218) @@ -0,0 +1,7 @@ +<?php +$trans['jp'] = array( + 'News' => 'ニュース', + 'Download' => 'ダウンロード', + 'Downloads' => 'ダウンロード' +); +?> \ No newline at end of file Modified: trunk/web/htdocs/downloads.php =================================================================== --- trunk/web/htdocs/downloads.php 2006-09-01 00:54:00 UTC (rev 1217) +++ trunk/web/htdocs/downloads.php 2006-09-01 04:27:48 UTC (rev 1218) @@ -1,3 +1,8 @@ +<?php +define( 'ROOT', 'true' ); +include("functions.php"); +?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> @@ -12,82 +17,9 @@ </div> <div id="mainBody"> - <h2>Downloads</h2> - <h3>Requirements</h3> + <?php get_content('downloads') ?> - <ul> - <li>jsXe requires Java 2 version 1.4.2</li> - <li>jsXe currently requires a specific version of Xerces-J to - run. Xerces-J 2.8.0 is required since some features are - implemented using the DOM level 3 interfaces that were in 2.6.0 - but were changed in later versions. Xerces-J 2.8.0 included in - the normal binary and source releases of jsXe for convenience. - You can also get Xerces-J 2.8.0 - <a href="http://archive.apache.org/dist/xml/xerces-j/">here</a>.</li> - </ul> - - <h3>Download</h3> - - <ul> - <li>The latest stable version of jsXe is <a href="https://sourceforge.net/project/showfiles.php?group_id=58584&package_id=120827">0.4 beta</a></li> - <li>The latest development version of jsXe is <a href="https://sourceforge.net/project/showfiles.php?group_id=58584&package_id=54488">0.5 pre2</a></li> - </ul> - - <h3>Install</h3> - - <ul> - <li><b>0.4 beta</b> - <ul> - <li><p>To install and run jsXe simply unzip jsXe into the directory - of your choosing and run the included batch program or shell - script. You will need to make sure that the java runtime is in - your path. In the root of the jsXe install directory type the - following at a command prompt.</p> - <p>./bin/jsXe.sh</p> - <p>or</p> - <p>./bin/jsXe.bat</p> - <p>The batch program should be run in with the jsXe root - directory of as the working directory. So you can create a - shortcut to run jsXe by specifying the batch file as the program - to run and jsXe's root directory as the working directory.</p> - - <p>Ex.<br/> - Target: "C:\Program Files\jsXe\bin\jsXe.bat"<br/> - Start in: "C:\Program Files\jsXe\"</p> - - <p>You can also edit the JSXEDIR variable in the batch program - to be the directory where you installed jsXe and then the - 'Start in' directory can be anywhere.</p> - - </li> - </ul> - </li> - <li><b>0.5 pre2</b> - <ul> - <li><b>Windows</b> - - <p>Just run jsXe using the jsXe.exe in the install directory. The - exe will detect your version of Java and run jsXe using that - version.</p> - </li> - - <li><b>Unix/Linux</b> - - <p>To run jsXe you should just run the java interpreter on the - jsXe.jar file. There is a shell script included in the - source tree for this purpose.</p> - - <p>./bin/jsXe.sh</p> - - <p>The shell script should be run in with the jsXe root directory of - as the working directory. You can also edit the JSXEDIR variable in - the shell script to be the directory where you installed jsXe.</p> - </li> - </ul> - </li> - </ul> - <?php include("footer.php") ?> </div> </body> Modified: trunk/web/htdocs/features.php =================================================================== --- trunk/web/htdocs/features.php 2006-09-01 00:54:00 UTC (rev 1217) +++ trunk/web/htdocs/features.php 2006-09-01 04:27:48 UTC (rev 1218) @@ -1,3 +1,8 @@ +<?php +define( 'ROOT', 'true' ); +include("functions.php"); +?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> @@ -11,71 +16,9 @@ <?php include("sidebar.php") ?> </div> <div id="mainBody"> - <h2>Features</h2> - <p>These are features currently implemented in the stable version of jsXe</p> + <?php get_content('features'); ?> - <h3>General</h3> - - <ul> - <li>Written in Java, so it runs on Mac OS X, OS/2, Unix, VMS and Windows.</li> - <li>XML documents are edited using views. jsXe allows for - multiple views.</li> - <li>Syntax highlighted source view (version 0.4 beta)</li> - <li>Plugin interface that allows the addition of views - without re-compiling</li> - <li>Relatively good serialization of XML documents. - Supports the option of formatting serialized XML - documents or not formatting. Supports preserving - whitespace in text.</li> - <li>Allows opening and editing of multiple XML documents in - one open window.</li> - <li>Incremental parsing. Parsing the document and validation - will be done automatically without having to - continuously hit a validate/parse button.</li> - <li>Support for validation of an XML document using DTDs and - other forms of Schema.</li> - <li>DTD/Schema introspection. Information in the DTD/Schema is used to - allow users to add and edit nodes based on defined - within the DTD/Schema.</li> - <li>Internationalization. jsXe has support to easily - create translations of menus and messages into your native - language.</li> - <li>Built-in completion support for XML Schema, XHTML, XSLT, and - XSL:FO</li> - </ul> - - <h3>Tree View</h3> - - <ul> - <li>Adding, deleting, and editing of Nodes in an XML document using context menus.</li> - <li>Adding, deleting, and editing of attributes of an element node.</li> - <li>Drag and Drop of XML nodes within the Tree view and to text editors.</li> - </ul> - - <h3>Source View</h3> - - <ul> - <li>Text editing of the full XML source of any XML document</li> - <li>Cut, copy, and paste and other limited features.</li> - </ul> - - - <h2>Planned Features</h2> - - <p>These are features that have been added to the development version of jsXe or are planned for the future</p> - - <ul> - <li>A schema designer view that uses <a href="http://www.jgraph.com/">JGraph</a></li> - <li>A docbook editor view using <a href="http://vex.sourceforge.net/">Vex</a></li> - <li>An XHTML renderer using <a href="https://xhtmlrenderer.dev.java.net/">Flying Saucer</a></li> - <li>Support for transforming XML documents using XSLT stylesheets.</li> - <li>Support for Unlimited Undo (version 0.5 beta)</li> - <li>Tag completion using DTD/Schema introspection (version 0.5 beta)</li> - <li>Automatic insertion of closing tags (version 0.5 beta)</li> - <li>A help system using <a href="http://aurigadoc.sourceforge.net/">AurigaDoc</a> or <a href="http://docbook.sourceforge.net/">Docbook</a> (version 0.6 beta)</li> - </ul> - <?php include("footer.php") ?> </div> </body> Modified: trunk/web/htdocs/footer.php =================================================================== --- trunk/web/htdocs/footer.php 2006-09-01 00:54:00 UTC (rev 1217) +++ trunk/web/htdocs/footer.php 2006-09-01 04:27:48 UTC (rev 1218) @@ -1,3 +1,5 @@ +<?php if( !defined('ROOT') ) die( 'Please, do not access this page directly.' ); ?> + <div id="images"> <a href="http://validator.w3.org/check/referer"><img title="This site is valid XHTML." alt="Valid XHTML 1.0 Transitional" src="http://www.ianlewis.org/images/xhtml.png"/></a> <a href="http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Fjsxe.sourceforge.net%2Fcss%2Fmain.css&usermedium=all"><img title="This site is valid CSS." alt="Valid CSS" src="http://www.ianlewis.org/images/css.png"/></a> Added: trunk/web/htdocs/functions.php =================================================================== --- trunk/web/htdocs/functions.php (rev 0) +++ trunk/web/htdocs/functions.php 2006-09-01 04:27:48 UTC (rev 1218) @@ -0,0 +1,91 @@ +<?php +if( !defined('ROOT') ) die( 'Please, do not access this page directly.' ); + +function get_locale() { + $req_locale="en"; + if (isset($_GET['lang'])) { + //IML: Support the lang attribute + $req_locale = $_GET['lang']; + } + return $req_locale; +} + +function create_link( $href, $contents ) { + $link = '<a href="'.$href; + if (isset($_GET['lang'])) { + $locale = $_GET['lang']; + $link = $link.'?lang='.$locale; + } + $link = $link.'">'.T_($contents).'</a>'; + return $link; +} + +function get_content( $name ) { + $file = 'content/'.get_locale().'/'.$name.'.html'; + if (!file_exists($file)) { + $file = 'content/en/'.$name.'.html'; + } + $fh = fopen($file, 'r'); + $data = fread($fh, filesize($file)); + fclose($fh); + echo $data; +} + +function get_news() { + + $file = 'content/'.get_locale().'/news-header.html'; + if (!file_exists($file)) { + $file = 'content/en/news-header.html'; + } + $fh = fopen($file, 'r'); + $header = fread($fh, filesize($file)); + fclose($fh); + + $file = 'content/'.get_locale().'/news.html'; + if (!file_exists($file)) { + $file = 'content/en/news.html'; + } + $fh = fopen($file, 'r'); + $data = fread($fh, filesize($file)); + fclose($fh); + + echo $header; + echo $data; +} + +function T_( $string, $lang = '' ) { + + global $trans; + + if (empty($lang)) { + $lang = get_locale(); + } + + // echo $lang; + + if (empty($lang)) + return $string; // don't translate if we have no locale + + if ( !isset($trans[ $lang ] ) ) { + // Translations for current locale have not yet been loaded: + // echo 'LOADING', dirname(__FILE__).'/content/'.$lang.'/_global.php'; + @include_once dirname(__FILE__).'/content/'.$lang.'/_global.php'; + if ( !isset($trans[ $lang ] ) ) { + // Still not loaded... file doesn't exist, memorize that no translation are available + // echo 'file not found!'; + $trans[ $lang ] = array(); + } + } + + $search = str_replace( array("\n", "\r", "\t"), array('\n', '', '\t'), $string ); + + if (isset($trans[ $lang ][ $search ] ) ) { // If the string has been translated: + return $trans[ $lang ][ $search ]; + } + + // echo "Not found: ".$string; + + // Return the English string: + return $string; +} +?> \ No newline at end of file Modified: trunk/web/htdocs/get-involved.php =================================================================== --- trunk/web/htdocs/get-involved.php 2006-09-01 00:54:00 UTC (rev 1217) +++ trunk/web/htdocs/get-involved.php 2006-09-01 04:27:48 UTC (rev 1218) @@ -1,3 +1,8 @@ +<?php +define( 'ROOT', 'true' ); +include("functions.php"); +?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> @@ -11,110 +16,9 @@ <?php include("sidebar.php") ?> </div> <div id="mainBody"> - <h2>Getting Involved</h2> - <p>jsXe needs developers to implement new features and fix bugs, - testers for testing jsXe, translators for translating messages and the - website, and web designers who are interested in updating the project's - website.</p> + <?php get_content('get-involved') ?> - <p>Getting involved is fairly easy. There are a multitude of ways that - you can become involved in the project. The easiest is probably by - subscribing to the mailing lists, however there are many methods at - your disposal.</p> - - <p>Note: Contributers will be expected to give their real names.</p> - - <h3>Developers</h3> - - <p>If you are interested in working on jsXe, please - <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">subscribe</a> - and send a mail to the jsxe-devel mailing list. The developers can help - get you started. Developers should know how to use SVN and have some - experience with Java swing or XML.</p> - - <h3>Testers</h3> - - <p>If you are interested in testing jsXe, please - <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">subscribe</a> - and send a mail to the jsxe-devel mailing list. Testing will normally be - done on SVN and beta releases. Familiarity with - <a href="http://subversion.tigris.org/">SVN</a> and - <a href="http://ant.apache.org/">ant</a> is a plus since it will be needed - for testing code from the SVN repository.</p> - - <h3>Translators</h3> - - <p>If you are interested in translating for the jsXe project. Please - <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">subscribe</a> - and send a mail to the jsxe-devel mailing list. For those who are - knowlegeable of SVN, you can check out the messages files from jsXe's - <a href="http://svn.sourceforge.net/viewcvs.cgi/jsxe/trunk/jsxe/">SVN repository</a>. - But even if you are not versed in SVN, the developers on the - mailing list can help get you started.</p> - - <h3>Web Developers</h3> - - <p>If you are interested in working on jsXe's webpage, please - <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">subscribe</a> - and send a mail to the jsxe-devel mailing list. The developers can help - get you started. Web developers should have some knowledge of CSS and - PHP.</p> - - <h3>Users</h3> - - <p>Let us know what you think! - <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-users">Subscribe</a> - to the jsxe-users mailing list and let us know what you think and what - features you would like to have implemented. Or you could submit a - <a href="http://sourceforge.net/tracker/?atid=488271&group_id=58584&func=browse">feature request</a>.</p> - - <h3>Mailing Lists</h3> - - <p>These three mailing lists will be low traffic.</p> - - <ul> - <li>jsXe-users: <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-users">Subscribe/Unsubscribe/Preferences</a>: a general discussion list for users of jsXe.</li> - <li>jsXe-devel: <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-devel">Subscribe/Unsubscribe/Preferences</a>: a list for technical discussion regarding jsXe development.</li> - <li>jsXe-cvs: <a href="http://lists.sourceforge.net/mailman/listinfo/jsxe-cvs">Subscribe/Unsubscribe/Preferences</a>: a list where SVN commits are posted. Anyone subscribing to this list will be notified when changes are commited to SVN.</li> - </ul> - - <h3>Forums</h3> - - <p>To get support if you're having problems installing or running - jsXe please post to the Help forum. Any other comments and criticism - can be posted in the open discussion forum.</p> - <ul> - <li><a href="http://sourceforge.net/forum/forum.php?forum_id=197160">Open Discussion</a></li> - <li><a href="http://sourceforge.net/forum/forum.php?forum_id=197161">Help</a></li> - </ul> - - <h3>IRC</h3> - - <p>Come to #jsxe on irc.freenode.net to talk with the developers.</p> - - <h3>Reporting Bugs</h3> - - <p>Reporting bugs is easy. Just submit a bug report on <a href="http://sourceforge.net/tracker/?atid=488268&group_id=58584&func=browse">jsXe's Bug Tracker</a>. - Just enter a description of the bug and if possible how to reproduce it - and it will be assigned and addressed by the project development team.</p> - - <h3>Feature Requests</h3> - - <p>Features requests are always welcome and will be addressed based on user - need and whether the feature fits with jsXe's vision. Feature - requests are easy too! Just submit a feature requests to - <a href="http://sourceforge.net/tracker/?atid=488271&group_id=58584&func=browse">jsXe's Feature Request Tracker</a>.</p> - - <h3>Patches</h3> - - <p>This is probably the best way to start becoming involved in the devolopment of jsXe. - You can submit patches using - <a href="http://sourceforge.net/tracker/?atid=488270&group_id=58584&func=browse">jsXe's Sourceforge Patch Tracker</a>. - Just provide the patch or code change itself and a discription of what - it does when you submit it. If your work is good then we'll add - you as developer with SVN access.</p> - <?php include("footer.php") ?> </div> </body> Modified: trunk/web/htdocs/index.php =================================================================== --- trunk/web/htdocs/index.php 2006-09-01 00:54:00 UTC (rev 1217) +++ trunk/web/htdocs/index.php 2006-09-01 04:27:48 UTC (rev 1218) @@ -1,5 +1,10 @@ +<?php +define( 'ROOT', 'true' ); +include("functions.php"); +?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo get_locale() ?>" lang="<?php echo get_locale() ?>"> <head> <title>jsXe: The Java Simple XML Editor</title> <?php include("meta.php") ?> @@ -12,30 +17,10 @@ </div> <div id="mainBody"> - <h2>Overview</h2> + <?php get_content('overview'); ?> - <p>jsXe is the <b>J</b>ava <b>S</b>imple <b>X</b>ML <b>E</b>ditor.</p> - <p>jsXe is a fast, intuitive, scalable, platform-independent XML editor. - It is written in <a href="http://java.sun.com">Java</a> using the Swing - toolkit, and <a href="http://xml.apache.org/xerces2-j/">Xerces-J</a> - and is released under the terms of the - <a href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a>. It aims to provide end users and developers with an - intuitive way of creating XML documents that is simple enough to deal - with any XML document but flexible to allow the addition of support for - XML document formats through the use of plugins.</p> - <p>jsXe is currently in the beta stage and many intended features - are not currently implemented. If you are interesting in helping to - make jsXe a great editor by contributing your suggestions and needs or - if you are a developer and would like to contribute time and code check - out <a href="get-involved.php">how to get involved</a></p> - - <h2>News</h2> + <?php get_news() ?> - <?php include("news.cache") ?> - <?php - //include("http://sourceforge.net/export/projnews.php?group_id=58584&limit=5&flat=FLATSETTING&show_summaries=1") - ?> - <?php include("footer.php") ?> </div> </body> Modified: trunk/web/htdocs/meta.php =================================================================== --- trunk/web/htdocs/meta.php 2006-09-01 00:54:00 UTC (rev 1217) +++ trunk/web/htdocs/meta.php 2006-09-01 04:27:48 UTC (rev 1218) @@ -1,3 +1,5 @@ +<?php if( !defined('ROOT') ) die( 'Please, do not access this page directly.' ); ?> + <meta content="General" name="rating"/> <meta content="Index, follow" name="robots"/> <meta content="text/html; charset=UTF-8" http-equiv="Content-type"/> Modified: trunk/web/htdocs/screenshots.php =================================================================== --- trunk/web/htdocs/screenshots.php 2006-09-01 00:54:00 UTC (rev 1217) +++ trunk/web/htdocs/screenshots.php 2006-09-01 04:27:48 UTC (rev 1218) @@ -1,3 +1,8 @@ +<?php +define( 'ROOT', 'true' ); +include("functions.php"); +?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> Modified: trunk/web/htdocs/sidebar.php =================================================================== --- trunk/web/htdocs/sidebar.php 2006-09-01 00:54:00 UTC (rev 1217) +++ trunk/web/htdocs/sidebar.php 2006-09-01 04:27:48 UTC (rev 1218) @@ -1,15 +1,17 @@ +<?php if( !defined('ROOT') ) die( 'Please, do not access this page directly.' ); ?> + <ul> - <li><a href="index.php">News</a></li> - <li><a href="features.php" >Features</a></li> - <li><a href="screenshots.php">Screenshots</a></li> - <li><a href="downloads.php">Downloads</a></li> - <li><a href="get-involved.php">Get Involved</a></li> + <li><?php echo create_link("index.php", "News") ?></li> + <li><?php echo create_link("features.php", "Features") ?></li> + <li><?php echo create_link("screenshots.php", "Screenshots") ?></a></li> + <li><?php echo create_link("downloads.php", "Downloads") ?></li> + <li><?php echo create_link("get-involved.php", "Get Involved") ?></a></li> </ul> <ul> - <li><a href="api/">API Docs</a></li> - <li><a href="http://www.sourceforge.net/projects/jsxe/">SourceForge Project</a></li> + <li><a href="api/"><?php T_("API Docs") ?></a></li> + <li><a href="http://www.sourceforge.net/projects/jsxe/"><?php echo T_("SourceForge Project")?></a></li> </ul> <a href="http://sourceforge.net/"><img alt="SourceForge Logo" src="http://sourceforge.net/sflogo.php?group_id=58584"/></a> -<a href="http://sourceforge.jp/"><img alt="SourceForge.jp" src="http://sourceforge.jp/sflogo.php?group_id=2456"></a> +<a href="http://sourceforge.jp/"><img alt="SourceForge.jp" src="http://sourceforge.jp/sflogo.php?group_id=2456"/></a> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-09-01 00:54:07
|
Revision: 1217 http://svn.sourceforge.net/jsxe/?rev=1217&view=rev Author: ian_lewis Date: 2006-08-31 17:54:00 -0700 (Thu, 31 Aug 2006) Log Message: ----------- Added sourceforge.jp image Modified Paths: -------------- trunk/web/htdocs/sidebar.php Modified: trunk/web/htdocs/sidebar.php =================================================================== --- trunk/web/htdocs/sidebar.php 2006-08-31 20:42:55 UTC (rev 1216) +++ trunk/web/htdocs/sidebar.php 2006-09-01 00:54:00 UTC (rev 1217) @@ -12,3 +12,4 @@ </ul> <a href="http://sourceforge.net/"><img alt="SourceForge Logo" src="http://sourceforge.net/sflogo.php?group_id=58584"/></a> +<a href="http://sourceforge.jp/"><img alt="SourceForge.jp" src="http://sourceforge.jp/sflogo.php?group_id=2456"></a> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-31 20:43:04
|
Revision: 1216 http://svn.sourceforge.net/jsxe/?rev=1216&view=rev Author: ian_lewis Date: 2006-08-31 13:42:55 -0700 (Thu, 31 Aug 2006) Log Message: ----------- merge from 05pre3 branch rev. 1213 Modified Paths: -------------- trunk/sourceview/Changelog trunk/sourceview/src/sourceview/SourceView.java trunk/sourceview/src/sourceview/SourceViewPlugin.java trunk/sourceview/src/sourceview/action/EditCopyAction.java trunk/sourceview/src/sourceview/action/EditCutAction.java trunk/sourceview/src/sourceview/action/EditFindAction.java trunk/sourceview/src/sourceview/action/EditFindNextAction.java trunk/sourceview/src/sourceview/action/EditPasteAction.java Modified: trunk/sourceview/Changelog =================================================================== --- trunk/sourceview/Changelog 2006-08-31 20:41:42 UTC (rev 1215) +++ trunk/sourceview/Changelog 2006-08-31 20:42:55 UTC (rev 1216) @@ -1,3 +1,8 @@ +08/31/2006 Ian Lewis <Ian...@me...> + + * Updated the sourceview actions to use the new ContextSpecificActions in + jsXe. + 08/22/2006 Ian Lewis <Ian...@me...> * Changing the encoding now updates the SourceViewDocument so that it Modified: trunk/sourceview/src/sourceview/SourceView.java =================================================================== --- trunk/sourceview/src/sourceview/SourceView.java 2006-08-31 20:41:42 UTC (rev 1215) +++ trunk/sourceview/src/sourceview/SourceView.java 2006-08-31 20:42:55 UTC (rev 1216) @@ -25,12 +25,9 @@ package sourceview; //{{{ imports -/* -All classes are listed explicitly so -it is easy to see which package it -belongs to. -*/ +import sourceview.action.*; + //{{{ jsXe classes import net.sourceforge.jsxe.*; import net.sourceforge.jsxe.gui.Messages; @@ -132,6 +129,12 @@ m_textarea.putClientProperty(InputHandler.SMART_HOME_END_PROPERTY, Boolean.TRUE); + ActionManager.addActionImplementation("cut", m_textarea, new EditCutAction()); + ActionManager.addActionImplementation("copy", m_textarea, new EditCopyAction()); + ActionManager.addActionImplementation("paste", m_textarea, new EditPasteAction()); + ActionManager.addActionImplementation("find", m_textarea, new EditFindAction()); + ActionManager.addActionImplementation("findnext", m_textarea, new EditFindNextAction()); + //{{{ create popup menu JPopupMenu popup = new JPopupMenu(); @@ -238,6 +241,13 @@ dialog.dispose(); } m_document.removeXMLDocumentListener(docListener); + + ActionManager.removeActionImplementation("cut", m_textarea); + ActionManager.removeActionImplementation("copy", m_textarea); + ActionManager.removeActionImplementation("paste", m_textarea); + ActionManager.removeActionImplementation("find", m_textarea); + ActionManager.removeActionImplementation("findNext", m_textarea); + return true; }//}}} Modified: trunk/sourceview/src/sourceview/SourceViewPlugin.java =================================================================== --- trunk/sourceview/src/sourceview/SourceViewPlugin.java 2006-08-31 20:41:42 UTC (rev 1215) +++ trunk/sourceview/src/sourceview/SourceViewPlugin.java 2006-08-31 20:42:55 UTC (rev 1216) @@ -60,11 +60,6 @@ //{{{ SourceViewPlugin public SourceViewPlugin() { - addAction(new EditCutAction()); - addAction(new EditCopyAction()); - addAction(new EditPasteAction()); - addAction(new EditFindAction()); - addAction(new EditFindNextAction()); }//}}} //{{{ newDocumentView() Modified: trunk/sourceview/src/sourceview/action/EditCopyAction.java =================================================================== --- trunk/sourceview/src/sourceview/action/EditCopyAction.java 2006-08-31 20:41:42 UTC (rev 1215) +++ trunk/sourceview/src/sourceview/action/EditCopyAction.java 2006-08-31 20:42:55 UTC (rev 1216) @@ -30,14 +30,14 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.util.Log; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -49,20 +49,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class EditCopyAction extends LocalizedAction { +public class EditCopyAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditCopyAction constructor - public EditCopyAction() { - super(SourceViewPlugin.PLUGIN_NAME+".copy"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.copy"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; Modified: trunk/sourceview/src/sourceview/action/EditCutAction.java =================================================================== --- trunk/sourceview/src/sourceview/action/EditCutAction.java 2006-08-31 20:41:42 UTC (rev 1215) +++ trunk/sourceview/src/sourceview/action/EditCutAction.java 2006-08-31 20:42:55 UTC (rev 1216) @@ -30,14 +30,14 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.util.Log; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -49,20 +49,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class EditCutAction extends LocalizedAction { +public class EditCutAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditCutAction constructor - public EditCutAction() { - super(SourceViewPlugin.PLUGIN_NAME+".cut"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.cut"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; Modified: trunk/sourceview/src/sourceview/action/EditFindAction.java =================================================================== --- trunk/sourceview/src/sourceview/action/EditFindAction.java 2006-08-31 20:41:42 UTC (rev 1215) +++ trunk/sourceview/src/sourceview/action/EditFindAction.java 2006-08-31 20:42:55 UTC (rev 1216) @@ -30,13 +30,13 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.DocumentView; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -48,20 +48,10 @@ * @version $Id$ */ -public class EditFindAction extends LocalizedAction { +public class EditFindAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditFindAction constructor - public EditFindAction() { - super(SourceViewPlugin.PLUGIN_NAME+".find"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.find"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; Modified: trunk/sourceview/src/sourceview/action/EditFindNextAction.java =================================================================== --- trunk/sourceview/src/sourceview/action/EditFindNextAction.java 2006-08-31 20:41:42 UTC (rev 1215) +++ trunk/sourceview/src/sourceview/action/EditFindNextAction.java 2006-08-31 20:42:55 UTC (rev 1216) @@ -30,13 +30,13 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.DocumentView; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -49,20 +49,10 @@ * @version $Id$ */ -public class EditFindNextAction extends LocalizedAction { +public class EditFindNextAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditFindNextAction constructor - public EditFindNextAction() { - super(SourceViewPlugin.PLUGIN_NAME+".findnext"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.findnext"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; Modified: trunk/sourceview/src/sourceview/action/EditPasteAction.java =================================================================== --- trunk/sourceview/src/sourceview/action/EditPasteAction.java 2006-08-31 20:41:42 UTC (rev 1215) +++ trunk/sourceview/src/sourceview/action/EditPasteAction.java 2006-08-31 20:42:55 UTC (rev 1216) @@ -30,14 +30,14 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; -import net.sourceforge.jsxe.gui.DocumentView; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.util.Log; +import net.sourceforge.jsxe.gui.DocumentView; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -49,20 +49,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class EditPasteAction extends LocalizedAction { +public class EditPasteAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditPasteAction constructor - public EditPasteAction() { - super(SourceViewPlugin.PLUGIN_NAME+".paste"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.paste"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-31 20:41:53
|
Revision: 1215 http://svn.sourceforge.net/jsxe/?rev=1215&view=rev Author: ian_lewis Date: 2006-08-31 13:41:42 -0700 (Thu, 31 Aug 2006) Log Message: ----------- merge from 05pre3 branch rev. 1213 Modified Paths: -------------- trunk/treeview/Changelog trunk/treeview/src/treeview/DefaultView.java trunk/treeview/src/treeview/TreeViewPlugin.java trunk/treeview/src/treeview/TreeViewTree.java trunk/treeview/src/treeview/action/CopyNodeAction.java trunk/treeview/src/treeview/action/CutNodeAction.java trunk/treeview/src/treeview/action/PasteNodeAction.java Modified: trunk/treeview/Changelog =================================================================== --- trunk/treeview/Changelog 2006-08-31 20:41:10 UTC (rev 1214) +++ trunk/treeview/Changelog 2006-08-31 20:41:42 UTC (rev 1215) @@ -1,3 +1,8 @@ +08/31/2006 Ian Lewis <Ian...@me...> + + * Updated the sourceview actions to use the new ContextSpecificActions in + jsXe. + 08/30/2006 Ian Lewis <Ian...@me...> * Fixed null pointer exception when trying to cut a node that can't be Modified: trunk/treeview/src/treeview/DefaultView.java =================================================================== --- trunk/treeview/src/treeview/DefaultView.java 2006-08-31 20:41:10 UTC (rev 1214) +++ trunk/treeview/src/treeview/DefaultView.java 2006-08-31 20:41:42 UTC (rev 1215) @@ -32,8 +32,10 @@ import net.sourceforge.jsxe.dom.*; import net.sourceforge.jsxe.dom.completion.ElementDecl; import net.sourceforge.jsxe.*; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.Messages; +import net.sourceforge.jsxe.gui.TabbedView; import net.sourceforge.jsxe.util.Log; import net.sourceforge.jsxe.msg.PropertyChanged; import net.sourceforge.jsxe.msg.UndoEvent; @@ -120,6 +122,7 @@ m_valueTextArea.setFont(new Font("Monospaced", 0, 12)); m_valueTextArea.setLineWrap(false); JScrollPane htmlView = new JScrollPane(m_valueTextArea); + //}}} //{{{ init attributes table @@ -138,6 +141,11 @@ JScrollPane treeView = new JScrollPane(tree); tree.addTreeSelectionListener(new DefaultTreeSelectionListener(this)); + //add context specific actions for the tree. + ActionManager.addActionImplementation("cut", tree, new CutNodeAction()); + ActionManager.addActionImplementation("copy", tree, new CopyNodeAction()); + ActionManager.addActionImplementation("paste", tree, new PasteNodeAction()); + //starts editing if the user start typing on one of the nodes //seems to catch user shortcuts too. Not sure how to resolve that. @@ -233,6 +241,10 @@ } } + ActionManager.removeActionImplementation("cut", tree); + ActionManager.removeActionImplementation("copy", tree); + ActionManager.removeActionImplementation("paste", tree); + EditBus.removeFromBus(this); return true; Modified: trunk/treeview/src/treeview/TreeViewPlugin.java =================================================================== --- trunk/treeview/src/treeview/TreeViewPlugin.java 2006-08-31 20:41:10 UTC (rev 1214) +++ trunk/treeview/src/treeview/TreeViewPlugin.java 2006-08-31 20:41:42 UTC (rev 1215) @@ -63,9 +63,6 @@ addAction(new RemoveAttributeAction()); addAction(new EditNodeAction()); addAction(new AddDocTypeAction()); - addAction(new CutNodeAction()); - addAction(new CopyNodeAction()); - addAction(new PasteNodeAction()); }//}}} //{{{ newDocumentView() Modified: trunk/treeview/src/treeview/TreeViewTree.java =================================================================== --- trunk/treeview/src/treeview/TreeViewTree.java 2006-08-31 20:41:10 UTC (rev 1214) +++ trunk/treeview/src/treeview/TreeViewTree.java 2006-08-31 20:41:42 UTC (rev 1215) @@ -684,48 +684,48 @@ }//}}} - //{{{ ElementTreeCellRenderer class + // //{{{ ElementTreeCellRenderer class - private class ElementTreeCellRenderer extends DefaultTreeCellRenderer { + // private class ElementTreeCellRenderer extends DefaultTreeCellRenderer { - //{{{ ElementTreeCellRenderer constructor + // //{{{ ElementTreeCellRenderer constructor - public ElementTreeCellRenderer() { - m_defaultLeafIcon = getLeafIcon(); - }//}}} + // public ElementTreeCellRenderer() { + // m_defaultLeafIcon = getLeafIcon(); + // }//}}} - //{{{ getTreeCellRendererComponent + // //{{{ getTreeCellRendererComponent - public Component getTreeCellRendererComponent(JTree tree, - Object value, boolean selected, boolean expanded, - boolean leaf, int row, boolean hasFocus) - { - AdapterNode node = (AdapterNode)value; + // public Component getTreeCellRendererComponent(JTree tree, + // Object value, boolean selected, boolean expanded, + // boolean leaf, int row, boolean hasFocus) + // { + // AdapterNode node = (AdapterNode)value; - // We can rename processing instruction nodes here too. - if (node.getNodeType() == AdapterNode.PROCESSING_INSTRUCTION_NODE) { - setIcon(m_defaultLeafIcon); - setLeafIcon(m_defaultLeafIcon); - setOpenIcon(m_defaultLeafIcon); - setClosedIcon(m_defaultLeafIcon); - setToolTipText(Messages.getMessage("xml.processing.instruction")); - } else { - setIcon(m_elementIcon); - setLeafIcon(m_elementIcon); - setOpenIcon(m_elementIcon); - setClosedIcon(m_elementIcon); - setToolTipText(Messages.getMessage("xml.element")); - } + // // We can rename processing instruction nodes here too. + // if (node.getNodeType() == AdapterNode.PROCESSING_INSTRUCTION_NODE) { + // setIcon(m_defaultLeafIcon); + // setLeafIcon(m_defaultLeafIcon); + // setOpenIcon(m_defaultLeafIcon); + // setClosedIcon(m_defaultLeafIcon); + // setToolTipText(Messages.getMessage("xml.processing.instruction")); + // } else { + // setIcon(m_elementIcon); + // setLeafIcon(m_elementIcon); + // setOpenIcon(m_elementIcon); + // setClosedIcon(m_elementIcon); + // setToolTipText(Messages.getMessage("xml.element")); + // } - //just use the node name, we don't want attributes and such. - setText(((AdapterNode)value).getNodeName()); - return this; + // //just use the node name, we don't want attributes and such. + // setText(((AdapterNode)value).getNodeName()); + // return this; - }//}}} + // }//}}} - private Icon m_defaultLeafIcon; + // private Icon m_defaultLeafIcon; - }//}}} + // }//}}} //{{{ ElementCellEditor class Modified: trunk/treeview/src/treeview/action/CopyNodeAction.java =================================================================== --- trunk/treeview/src/treeview/action/CopyNodeAction.java 2006-08-31 20:41:10 UTC (rev 1214) +++ trunk/treeview/src/treeview/action/CopyNodeAction.java 2006-08-31 20:41:42 UTC (rev 1215) @@ -29,10 +29,8 @@ import treeview.*; //{{{ AWT classes -import java.awt.datatransfer.Clipboard; import java.awt.event.ActionEvent; -import java.awt.Toolkit; -import java.awt.HeadlessException; +import java.awt.Component; //}}} //{{{ Swing classes @@ -43,7 +41,7 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.TabbedView; @@ -60,24 +58,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class CopyNodeAction extends LocalizedAction { +public class CopyNodeAction implements ContextSpecificAction.ActionImplementation { - //{{{ CopyNodeAction constructor - /** - * Creates a action that copies the current node out of the tree and into - * the clipboard. - */ - public CopyNodeAction() { - super(TreeViewPlugin.PLUGIN_NAME+".copy"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.copy"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof DefaultView) { DefaultView defView = (DefaultView)docView; Modified: trunk/treeview/src/treeview/action/CutNodeAction.java =================================================================== --- trunk/treeview/src/treeview/action/CutNodeAction.java 2006-08-31 20:41:10 UTC (rev 1214) +++ trunk/treeview/src/treeview/action/CutNodeAction.java 2006-08-31 20:41:42 UTC (rev 1215) @@ -30,6 +30,7 @@ //{{{ AWT classes import java.awt.event.ActionEvent; +import java.awt.Component; //}}} //{{{ Swing classes @@ -45,7 +46,7 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.TabbedView; @@ -63,25 +64,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class CutNodeAction extends LocalizedAction { +public class CutNodeAction implements ContextSpecificAction.ActionImplementation { - //{{{ CutNodeAction constructor - /** - * Creates a action that cuts the current node out of the tree and into - * the clipboard. - */ - public CutNodeAction() { - super(TreeViewPlugin.PLUGIN_NAME+".cut"); - // putValue(Action.ACCELERATOR_KEY,KeyStroke.getKeyStroke("ctrl X")); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.cut"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof DefaultView) { DefaultView defView = (DefaultView)docView; Modified: trunk/treeview/src/treeview/action/PasteNodeAction.java =================================================================== --- trunk/treeview/src/treeview/action/PasteNodeAction.java 2006-08-31 20:41:10 UTC (rev 1214) +++ trunk/treeview/src/treeview/action/PasteNodeAction.java 2006-08-31 20:41:42 UTC (rev 1215) @@ -29,10 +29,8 @@ import treeview.*; //{{{ AWT classes -import java.awt.datatransfer.Clipboard; import java.awt.event.ActionEvent; -import java.awt.Toolkit; -import java.awt.HeadlessException; +import java.awt.Component; //}}} //{{{ Swing classes @@ -48,7 +46,7 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.TabbedView; @@ -65,24 +63,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class PasteNodeAction extends LocalizedAction { +public class PasteNodeAction implements ContextSpecificAction.ActionImplementation { - //{{{ PasteNodeAction constructor - /** - * Creates an action that pastes the node in the clipboard to the currently - * selected node in the tree. - */ - public PasteNodeAction() { - super(TreeViewPlugin.PLUGIN_NAME+".paste"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.paste"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof DefaultView) { DefaultView defView = (DefaultView)docView; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-31 20:41:24
|
Revision: 1214 http://svn.sourceforge.net/jsxe/?rev=1214&view=rev Author: ian_lewis Date: 2006-08-31 13:41:10 -0700 (Thu, 31 Aug 2006) Log Message: ----------- merge from 05pre3 branch rev. 1213 Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/messages/messages.properties trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java trunk/jsxe/src/net/sourceforge/jsxe/LocalizedAction.java trunk/jsxe/src/net/sourceforge/jsxe/action/CopyAction.java trunk/jsxe/src/net/sourceforge/jsxe/action/CutAction.java trunk/jsxe/src/net/sourceforge/jsxe/action/FindAction.java trunk/jsxe/src/net/sourceforge/jsxe/action/FindNextAction.java trunk/jsxe/src/net/sourceforge/jsxe/action/PasteAction.java trunk/jsxe/src/net/sourceforge/jsxe/gui/GUIUtilities.java trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java trunk/jsxe/src/net/sourceforge/jsxe/options/ShortcutsOptionPane.java Added Paths: ----------- trunk/jsxe/src/net/sourceforge/jsxe/action/ContextSpecificAction.java Removed Paths: ------------- trunk/jsxe/src/net/sourceforge/jsxe/action/ViewSpecificAction.java Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-31 20:20:36 UTC (rev 1213) +++ trunk/jsxe/Changelog 2006-08-31 20:41:10 UTC (rev 1214) @@ -1,3 +1,9 @@ +08/31/2006 Ian Lewis <Ian...@me...> + + * Added new ContextSpecificActions to replace ViewSpecificActions. Now + actions such as cut and paste can be registered for specific components + not just a specific view. + 08/29/2006 Ian Lewis <Ian...@me...> * Fixed a memory leak with JMenuItems. ActionManager kept a cache of Modified: trunk/jsxe/messages/messages.properties =================================================================== --- trunk/jsxe/messages/messages.properties 2006-08-31 20:20:36 UTC (rev 1213) +++ trunk/jsxe/messages/messages.properties 2006-08-31 20:41:10 UTC (rev 1214) @@ -236,6 +236,10 @@ No.Xerces.Error.title={0} not found. IO.Error.title=I/O Error IO.Error.message=An I/O error has occurred + +#generic error message +XML.Error.title=XML Error +XML.Error.message={0} #}}} #}}} Modified: trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java 2006-08-31 20:20:36 UTC (rev 1213) +++ trunk/jsxe/src/net/sourceforge/jsxe/ActionManager.java 2006-08-31 20:41:10 UTC (rev 1214) @@ -27,13 +27,13 @@ //{{{ imports //{{{ jsXe classes +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.GUIUtilities; import net.sourceforge.jsxe.gui.KeyEventTranslator; import net.sourceforge.jsxe.util.Log; import net.sourceforge.jsxe.util.MiscUtilities; import net.sourceforge.jsxe.msg.PropertyChanged; -import net.sourceforge.jsxe.action.ViewSpecificAction; //}}} //{{{ Java classes @@ -49,6 +49,7 @@ //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; //}}} @@ -73,16 +74,6 @@ */ public class ActionManager { - //{{{ Public static identifiers - - public static final String CUT_SUFFIX = ".cut"; - public static final String COPY_SUFFIX = ".copy"; - public static final String PASTE_SUFFIX = ".paste"; - public static final String FIND_SUFFIX = ".find"; - public static final String FIND_NEXT_SUFFIX = ".findnext"; - - //}}} - //{{{ addActionSet() /** * Adds a set of actions to the jsXe's pool of action sets. @@ -94,11 +85,51 @@ m_actionSets.add(set); }//}}} + //{{{ addActionImplementation() + /** + * Register an ActionImplementation with a registered ContextSpecificAction. + * If the ContextSpecificAction isn't registered this method does nothing. + * @param actionName the name of the ContextSpecificAction + * @param comp the component context the recieves the action + * @param imp the action implementation + */ + public static void addActionImplementation(String actionName, Component comp, ContextSpecificAction.ActionImplementation imp) { + ContextSpecificAction action = getContextSpecificAction(actionName); + if (action != null) { + action.registerComponent(comp, imp); + } + }//}}} + + //{{{ removeActionImplementation() + /** + * Removes the ActionImplementation from the registered + * ContextSpecificAction. + */ + public static void removeActionImplementation(String actionName, Component comp) { + ContextSpecificAction action = getContextSpecificAction(actionName); + if (action != null) { + action.removeComponent(comp); + } + }//}}} + + //{{{ getContextSpecificAction() + /** + * Gets a context specific action or null if no context specific action + * exists with that name. + */ + public static ContextSpecificAction getContextSpecificAction(String name) { + LocalizedAction action = getLocalizedAction(name); + if (action instanceof ContextSpecificAction) { + return (ContextSpecificAction)action; + } + return null; + }//}}} + //{{{ getLocalizedAction() /** * Gets the LocalizedAction set with the given name - * @param the name of the action set. - * @return the action set that matches the name, or null if none match. + * @param the name of the action. + * @return the action that matches the name, or null if none match. */ public static LocalizedAction getLocalizedAction(String name) { for (int i = 0; i < m_actionSets.size(); i++) { @@ -113,8 +144,8 @@ //{{{ getAction() /** - * Gets a true action for the LocalizedAction with the given name. This can be - * used in menus and toobars etc. + * Creates a true action for the LocalizedAction with the given name. This + * can be used in menus and toobars etc. * @param name the name of the action. */ public static Action getAction(String name) { @@ -267,18 +298,6 @@ } }//}}} - //{{{ isDocviewSpecific() - /** - * Returns whether the action with the given name is document view specific. - */ - public static boolean isDocViewSpecific(String actionName) { - return (actionName.endsWith(CUT_SUFFIX) || - actionName.endsWith(COPY_SUFFIX) || - actionName.endsWith(PASTE_SUFFIX) || - actionName.endsWith(FIND_SUFFIX) || - actionName.endsWith(FIND_NEXT_SUFFIX)); - }//}}} - //{{{ Wrapper class /** * The Wrapper class wraps LocalizedActions so they can be invoked Modified: trunk/jsxe/src/net/sourceforge/jsxe/LocalizedAction.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/LocalizedAction.java 2006-08-31 20:20:36 UTC (rev 1213) +++ trunk/jsxe/src/net/sourceforge/jsxe/LocalizedAction.java 2006-08-31 20:41:10 UTC (rev 1214) @@ -45,7 +45,7 @@ * @version $Id$ * @see jsXe * @see ActionSet - * @see InputManager + * @see ActionManager * @since jsXe 0.5 pre1 */ public abstract class LocalizedAction { Copied: trunk/jsxe/src/net/sourceforge/jsxe/action/ContextSpecificAction.java (from rev 1213, tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/ContextSpecificAction.java) =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/action/ContextSpecificAction.java (rev 0) +++ trunk/jsxe/src/net/sourceforge/jsxe/action/ContextSpecificAction.java 2006-08-31 20:41:10 UTC (rev 1214) @@ -0,0 +1,146 @@ +/* +ContextSpecificAction.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +Copyright (C) 2006 Ian Lewis (Ian...@me...) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +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 General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package net.sourceforge.jsxe.action; + +//{{{ imports + +//{{{ jsXe classes +import net.sourceforge.jsxe.jsXe; +import net.sourceforge.jsxe.ActionManager; +import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.gui.TabbedView; +import net.sourceforge.jsxe.gui.GUIUtilities; +//}}} + +//{{{ Java classes +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +//}}} + +//{{{ AWT components +import java.awt.event.ActionEvent; +import java.awt.Component; +import java.awt.KeyboardFocusManager; +//}}} + +//}}} + +/** + * The ContextSpecificAction is a class that defines actions that are + * context specific. i.e. Actions that are defined by jsXe but whose + * implementation is determined by the context or component that + * currently has focus. + * + * The ContextSpecificAction class allows components to be assocatied + * with a specific action implementation that is specific to that context + * (component). When the ContextSpecificAction is run, the action will + * search the registered components. If the component that has focus is owned + * by registered component then the action implementation associated with + * that component is then invoked. + * + * The order of the search is not specified and the first match that is found + * will be invoked. + * + * Examples where this class may be useful is cut, copy, paste, insert, or + * delete where the implementation may depend on the components implementation. + * + * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) + * @version $Id$ + * @since jsXe 0.5 pre3 + */ +public abstract class ContextSpecificAction extends LocalizedAction { + + //{{{ ContextSpecificAction constructor + public ContextSpecificAction(String name) { + super(name); + }//}}} + + //{{{ invoke() + /** + * Invokes the specific ActionImplementation for the component in + * the current context. This method should generally not be overridden by + * subclasses. + */ + public void invoke(TabbedView view, ActionEvent evt) { + /* + Invoke the action registered for the current component named + */ + Component comp = KeyboardFocusManager.getCurrentKeyboardFocusManager().getPermanentFocusOwner(); + Iterator itr = m_actionMap.keySet().iterator(); + while (itr.hasNext()) { + Component key = (Component)itr.next(); + if (GUIUtilities.isComponentParentOf(key, comp)) { + ActionImplementation imp = (ActionImplementation)m_actionMap.get(key); + imp.invoke(view, key, evt); + return; + } + } + }//}}} + + //{{{ registerComponent() + /** + * Adds a component and implementation to the action map for this + * action. + * @param comp The component that will recieve the action + * @param imp the action implementation that implements the action for the + * given component. + */ + public void registerComponent(Component comp, ActionImplementation imp) { + m_actionMap.put(comp, imp); + }//}}} + + //{{{ removeComponent() + /** + * Removes the component from the action map for this action + */ + public void removeComponent(Component comp) { + m_actionMap.remove(comp); + }//}}} + + //{{{ interface ActionImplementation + /** + * An ActionImplementation is an implementation of an action that can be + * registered with a ContextSpecificAction and run in a context. + */ + public static interface ActionImplementation { + + /** + * This method is run when the ContextSpecificAction is run and + * the registered component has focus. + * @param view the view that invoked the action + * @param comp the registered component + * @param evt the event that triggered the action + */ + public void invoke(TabbedView view, Component comp, ActionEvent evt); + + }//}}} + + //{{{ Private Members + + private HashMap m_actionMap = new HashMap(); + + //}}} +} Modified: trunk/jsxe/src/net/sourceforge/jsxe/action/CopyAction.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/action/CopyAction.java 2006-08-31 20:20:36 UTC (rev 1213) +++ trunk/jsxe/src/net/sourceforge/jsxe/action/CopyAction.java 2006-08-31 20:41:10 UTC (rev 1214) @@ -40,9 +40,13 @@ //}}} //{{{ AWT components +import java.awt.Component; +import java.awt.KeyboardFocusManager; import java.awt.event.ActionEvent; //}}} +import javax.swing.text.JTextComponent; + //}}} /** @@ -53,11 +57,23 @@ * @version $Id$ * @since jsXe 0.5 pre1 */ -public class CopyAction extends ViewSpecificAction { +public class CopyAction extends ContextSpecificAction { //{{{ CopyAction constructor public CopyAction() { super("copy"); }//}}} + //{{{ invoke() + public void invoke(TabbedView view, ActionEvent evt) { + /* + Invoke the action registered for the current component named + */ + Component comp = KeyboardFocusManager.getCurrentKeyboardFocusManager().getPermanentFocusOwner(); + if (comp instanceof JTextComponent) { + ((JTextComponent)comp).copy(); + } else { + super.invoke(view, evt); + } + }//}}} } Modified: trunk/jsxe/src/net/sourceforge/jsxe/action/CutAction.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/action/CutAction.java 2006-08-31 20:20:36 UTC (rev 1213) +++ trunk/jsxe/src/net/sourceforge/jsxe/action/CutAction.java 2006-08-31 20:41:10 UTC (rev 1214) @@ -40,9 +40,13 @@ //}}} //{{{ AWT components +import java.awt.Component; +import java.awt.KeyboardFocusManager; import java.awt.event.ActionEvent; //}}} +import javax.swing.text.JTextComponent; + //}}} /** @@ -52,11 +56,24 @@ * @version $Id$ * @since jsXe 0.5 pre1 */ -public class CutAction extends ViewSpecificAction { +public class CutAction extends ContextSpecificAction { //{{{ CutAction constructor public CutAction() { super("cut"); }//}}} + //{{{ invoke() + public void invoke(TabbedView view, ActionEvent evt) { + /* + Invoke the action registered for the current component named + */ + Component comp = KeyboardFocusManager.getCurrentKeyboardFocusManager().getPermanentFocusOwner(); + if (comp instanceof JTextComponent) { + ((JTextComponent)comp).cut(); + } else { + super.invoke(view, evt); + } + }//}}} + } Modified: trunk/jsxe/src/net/sourceforge/jsxe/action/FindAction.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/action/FindAction.java 2006-08-31 20:20:36 UTC (rev 1213) +++ trunk/jsxe/src/net/sourceforge/jsxe/action/FindAction.java 2006-08-31 20:41:10 UTC (rev 1214) @@ -53,7 +53,7 @@ * @version $Id$ * @since jsXe 0.5 pre1 */ -public class FindAction extends ViewSpecificAction { +public class FindAction extends ContextSpecificAction { //{{{ FindAction constructor public FindAction() { Modified: trunk/jsxe/src/net/sourceforge/jsxe/action/FindNextAction.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/action/FindNextAction.java 2006-08-31 20:20:36 UTC (rev 1213) +++ trunk/jsxe/src/net/sourceforge/jsxe/action/FindNextAction.java 2006-08-31 20:41:10 UTC (rev 1214) @@ -53,7 +53,7 @@ * @version $Id$ * @since jsXe 0.5 pre1 */ -public class FindNextAction extends ViewSpecificAction { +public class FindNextAction extends ContextSpecificAction { //{{{ FindNextAction constructor public FindNextAction() { Modified: trunk/jsxe/src/net/sourceforge/jsxe/action/PasteAction.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/action/PasteAction.java 2006-08-31 20:20:36 UTC (rev 1213) +++ trunk/jsxe/src/net/sourceforge/jsxe/action/PasteAction.java 2006-08-31 20:41:10 UTC (rev 1214) @@ -40,9 +40,13 @@ //}}} //{{{ AWT components +import java.awt.Component; +import java.awt.KeyboardFocusManager; import java.awt.event.ActionEvent; //}}} +import javax.swing.text.JTextComponent; + //}}} /** @@ -53,11 +57,24 @@ * @version $Id$ * @since jsXe 0.5 pre1 */ -public class PasteAction extends ViewSpecificAction { +public class PasteAction extends ContextSpecificAction { //{{{ PasteAction constructor public PasteAction() { super("paste"); }//}}} -} + //{{{ invoke() + public void invoke(TabbedView view, ActionEvent evt) { + /* + Invoke the action registered for the current component named + */ + Component comp = KeyboardFocusManager.getCurrentKeyboardFocusManager().getPermanentFocusOwner(); + if (comp instanceof JTextComponent) { + ((JTextComponent)comp).paste(); + } else { + super.invoke(view, evt); + } + }//}}} + +} \ No newline at end of file Deleted: trunk/jsxe/src/net/sourceforge/jsxe/action/ViewSpecificAction.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/action/ViewSpecificAction.java 2006-08-31 20:20:36 UTC (rev 1213) +++ trunk/jsxe/src/net/sourceforge/jsxe/action/ViewSpecificAction.java 2006-08-31 20:41:10 UTC (rev 1214) @@ -1,81 +0,0 @@ -/* -ViewSpecificAction.java -:tabSize=4:indentSize=4:noTabs=true: -:folding=explicit:collapseFolds=1: - -Copyright (C) 2006 Ian Lewis (Ian...@me...) - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -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 General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -Optionally, you may find a copy of the GNU General Public License -from http://www.fsf.org/copyleft/gpl.txt -*/ - -package net.sourceforge.jsxe.action; - -//{{{ imports - -//{{{ jsXe classes -import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.JARClassLoader; -import net.sourceforge.jsxe.ActionManager; -import net.sourceforge.jsxe.LocalizedAction; -import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; -//}}} - -//{{{ Java classes -import java.io.IOException; -//}}} - -//{{{ AWT components -import java.awt.event.ActionEvent; -//}}} - -//}}} - -/** - * The ViewSpecificAction is a class that defines actions that are - * view specific. i.e. Actions that are defined by jsXe but whose - * implementation is determined by the currently active view. - * - * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) - * @version $Id$ - * @since jsXe 0.5 pre3 - */ -public abstract class ViewSpecificAction extends LocalizedAction { - - //{{{ ViewSpecificAction constructor - public ViewSpecificAction(String name) { - super(name); - }//}}} - - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { - /* - invoke the action registered for the current DocumentView named - viewname.actionname if there is one. - */ - ActionManager.invokeAction(getViewActionName(view), evt); - }//}}} - - //{{{ getViewActionName() - /** - * Gets the view specific action name for the current DocumentView in the - * given TabbedView. - */ - private String getViewActionName(TabbedView view) { - return jsXe.getPluginLoader().getPluginProperty(view.getDocumentView().getViewPlugin(), JARClassLoader.PLUGIN_NAME)+"."+getName(); - }//}}} -} Modified: trunk/jsxe/src/net/sourceforge/jsxe/gui/GUIUtilities.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/gui/GUIUtilities.java 2006-08-31 20:20:36 UTC (rev 1213) +++ trunk/jsxe/src/net/sourceforge/jsxe/gui/GUIUtilities.java 2006-08-31 20:41:10 UTC (rev 1214) @@ -1271,6 +1271,40 @@ return (p instanceof JDialog) ? (JDialog) p : null; } //}}} + //{{{ isComponentParentOf() method + /** + * Returns true if the parent is a parent component of child. + * @param parent the parent component + * @param child the child component + * @since jsXe 0.5 pre3 + */ + public static boolean isComponentParentOf(Component parent, Component child) { + Component comp = child; + for(;;) { + if (comp == null) { + break; + } + + if (comp instanceof JComponent) { + Component real = (Component)((JComponent)comp).getClientProperty("KORTE_REAL_FRAME"); + if (real != null) { + comp = real; + } + } + + if (comp.equals(parent)) { + return true; + } else { + if (comp instanceof JPopupMenu) { + comp = ((JPopupMenu)comp).getInvoker(); + } else { + comp = comp.getParent(); + } + } + } + return false; + }//}}} + //{{{ getComponentParent() method /** * Finds a parent of the specified component. Modified: trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-08-31 20:20:36 UTC (rev 1213) +++ trunk/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-08-31 20:41:10 UTC (rev 1214) @@ -589,69 +589,68 @@ m_editMenu.add(menuItem); m_editMenu.addSeparator(); Action action = ActionManager.getAction("cut"); - if (view != null) { - String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".cut"; - if (ActionManager.getLocalizedAction(name) == null) { - action.setEnabled(false); - } else { - action.setEnabled(true); - } - } else { - action.setEnabled(false); - } + // if (view != null) { + // if (ActionManager.getLocalizedAction(name) == null) { + // action.setEnabled(false); + // } else { + // action.setEnabled(true); + // } + // } else { + // action.setEnabled(false); + // } menuItem = new JMenuItem(action); m_editMenu.add(menuItem); action = ActionManager.getAction("copy"); - if (view != null) { - String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".copy"; - if (ActionManager.getLocalizedAction(name) == null) { - action.setEnabled(false); - } else { - action.setEnabled(true); - } - } else { - action.setEnabled(false); - } + // if (view != null) { + // String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".copy"; + // if (ActionManager.getLocalizedAction(name) == null) { + // action.setEnabled(false); + // } else { + // action.setEnabled(true); + // } + // } else { + // action.setEnabled(false); + // } menuItem = new JMenuItem(action); m_editMenu.add(menuItem); action = ActionManager.getAction("paste"); - if (view != null) { - String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".paste"; - if (ActionManager.getLocalizedAction(name) == null) { - action.setEnabled(false); - } else { - action.setEnabled(true); - } - } else { - action.setEnabled(false); - } + // if (view != null) { + // String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".paste"; + // if (ActionManager.getLocalizedAction(name) == null) { + // action.setEnabled(false); + // } else { + // action.setEnabled(true); + // } + // } else { + // action.setEnabled(false); + // } menuItem = new JMenuItem(action); m_editMenu.add(menuItem); m_editMenu.addSeparator(); action = ActionManager.getAction("find"); - if (view != null) { - String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".find"; - if (ActionManager.getLocalizedAction(name) == null) { - action.setEnabled(false); - } else { - action.setEnabled(true); - } - } else { - action.setEnabled(false); - } + // if (view != null) { + // String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".find"; + // if (ActionManager.getLocalizedAction(name) == null) { + // action.setEnabled(false); + // } else { + // action.setEnabled(true); + // } + // } else { + // action.setEnabled(false); + // } menuItem = new JMenuItem(action); m_editMenu.add(menuItem); action = ActionManager.getAction("findnext"); - if (view != null) { - String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".findnext"; - if (ActionManager.getLocalizedAction(name) == null) { - action.setEnabled(false); - } else { - action.setEnabled(true); - } - } else { - action.setEnabled(false); - } + // if (view != null) { + // String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".findnext"; + // if (ActionManager.getLocalizedAction(name) == null) { + // action.setEnabled(false); + // } else { + // action.setEnabled(true); + // } + // } else { + // action.setEnabled(false); + // } menuItem = new JMenuItem(action); m_editMenu.add(menuItem); }//}}} Modified: trunk/jsxe/src/net/sourceforge/jsxe/options/ShortcutsOptionPane.java =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/options/ShortcutsOptionPane.java 2006-08-31 20:20:36 UTC (rev 1213) +++ trunk/jsxe/src/net/sourceforge/jsxe/options/ShortcutsOptionPane.java 2006-08-31 20:41:10 UTC (rev 1214) @@ -146,10 +146,8 @@ if (label == null) { Log.log(Log.WARNING, this, names[i]+" has a null label"); } else { - if (!ActionManager.isDocViewSpecific(names[i])) { - String binding = jsXe.getProperty(names[i]+".shortcut"); - m_set.add(new GrabKeyDialog.KeyBinding(names[i], label, binding)); - } + String binding = jsXe.getProperty(names[i]+".shortcut"); + m_set.add(new GrabKeyDialog.KeyBinding(names[i], label, binding)); } } MiscUtilities.quicksort(m_set, new KeyCompare()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-31 20:20:52
|
Revision: 1213 http://svn.sourceforge.net/jsxe/?rev=1213&view=rev Author: ian_lewis Date: 2006-08-31 13:20:36 -0700 (Thu, 31 Aug 2006) Log Message: ----------- Updated the sourceview to use new ContextSpecificActions Modified Paths: -------------- tags/05pre3/sourceview/Changelog tags/05pre3/sourceview/src/sourceview/SourceView.java tags/05pre3/sourceview/src/sourceview/SourceViewPlugin.java tags/05pre3/sourceview/src/sourceview/action/EditCopyAction.java tags/05pre3/sourceview/src/sourceview/action/EditCutAction.java tags/05pre3/sourceview/src/sourceview/action/EditFindAction.java tags/05pre3/sourceview/src/sourceview/action/EditFindNextAction.java tags/05pre3/sourceview/src/sourceview/action/EditPasteAction.java Modified: tags/05pre3/sourceview/Changelog =================================================================== --- tags/05pre3/sourceview/Changelog 2006-08-31 20:20:10 UTC (rev 1212) +++ tags/05pre3/sourceview/Changelog 2006-08-31 20:20:36 UTC (rev 1213) @@ -1,3 +1,8 @@ +08/31/2006 Ian Lewis <Ian...@me...> + + * Updated the sourceview actions to use the new ContextSpecificActions in + jsXe. + 08/22/2006 Ian Lewis <Ian...@me...> * Changing the encoding now updates the SourceViewDocument so that it Modified: tags/05pre3/sourceview/src/sourceview/SourceView.java =================================================================== --- tags/05pre3/sourceview/src/sourceview/SourceView.java 2006-08-31 20:20:10 UTC (rev 1212) +++ tags/05pre3/sourceview/src/sourceview/SourceView.java 2006-08-31 20:20:36 UTC (rev 1213) @@ -25,12 +25,9 @@ package sourceview; //{{{ imports -/* -All classes are listed explicitly so -it is easy to see which package it -belongs to. -*/ +import sourceview.action.*; + //{{{ jsXe classes import net.sourceforge.jsxe.*; import net.sourceforge.jsxe.gui.Messages; @@ -132,6 +129,12 @@ m_textarea.putClientProperty(InputHandler.SMART_HOME_END_PROPERTY, Boolean.TRUE); + ActionManager.addActionImplementation("cut", m_textarea, new EditCutAction()); + ActionManager.addActionImplementation("copy", m_textarea, new EditCopyAction()); + ActionManager.addActionImplementation("paste", m_textarea, new EditPasteAction()); + ActionManager.addActionImplementation("find", m_textarea, new EditFindAction()); + ActionManager.addActionImplementation("findnext", m_textarea, new EditFindNextAction()); + //{{{ create popup menu JPopupMenu popup = new JPopupMenu(); @@ -238,6 +241,13 @@ dialog.dispose(); } m_document.removeXMLDocumentListener(docListener); + + ActionManager.removeActionImplementation("cut", m_textarea); + ActionManager.removeActionImplementation("copy", m_textarea); + ActionManager.removeActionImplementation("paste", m_textarea); + ActionManager.removeActionImplementation("find", m_textarea); + ActionManager.removeActionImplementation("findNext", m_textarea); + return true; }//}}} Modified: tags/05pre3/sourceview/src/sourceview/SourceViewPlugin.java =================================================================== --- tags/05pre3/sourceview/src/sourceview/SourceViewPlugin.java 2006-08-31 20:20:10 UTC (rev 1212) +++ tags/05pre3/sourceview/src/sourceview/SourceViewPlugin.java 2006-08-31 20:20:36 UTC (rev 1213) @@ -60,11 +60,6 @@ //{{{ SourceViewPlugin public SourceViewPlugin() { - addAction(new EditCutAction()); - addAction(new EditCopyAction()); - addAction(new EditPasteAction()); - addAction(new EditFindAction()); - addAction(new EditFindNextAction()); }//}}} //{{{ newDocumentView() Modified: tags/05pre3/sourceview/src/sourceview/action/EditCopyAction.java =================================================================== --- tags/05pre3/sourceview/src/sourceview/action/EditCopyAction.java 2006-08-31 20:20:10 UTC (rev 1212) +++ tags/05pre3/sourceview/src/sourceview/action/EditCopyAction.java 2006-08-31 20:20:36 UTC (rev 1213) @@ -30,14 +30,14 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.util.Log; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -49,20 +49,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class EditCopyAction extends LocalizedAction { +public class EditCopyAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditCopyAction constructor - public EditCopyAction() { - super(SourceViewPlugin.PLUGIN_NAME+".copy"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.copy"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; Modified: tags/05pre3/sourceview/src/sourceview/action/EditCutAction.java =================================================================== --- tags/05pre3/sourceview/src/sourceview/action/EditCutAction.java 2006-08-31 20:20:10 UTC (rev 1212) +++ tags/05pre3/sourceview/src/sourceview/action/EditCutAction.java 2006-08-31 20:20:36 UTC (rev 1213) @@ -30,14 +30,14 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.util.Log; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -49,20 +49,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class EditCutAction extends LocalizedAction { +public class EditCutAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditCutAction constructor - public EditCutAction() { - super(SourceViewPlugin.PLUGIN_NAME+".cut"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.cut"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; Modified: tags/05pre3/sourceview/src/sourceview/action/EditFindAction.java =================================================================== --- tags/05pre3/sourceview/src/sourceview/action/EditFindAction.java 2006-08-31 20:20:10 UTC (rev 1212) +++ tags/05pre3/sourceview/src/sourceview/action/EditFindAction.java 2006-08-31 20:20:36 UTC (rev 1213) @@ -30,13 +30,13 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.DocumentView; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -48,20 +48,10 @@ * @version $Id$ */ -public class EditFindAction extends LocalizedAction { +public class EditFindAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditFindAction constructor - public EditFindAction() { - super(SourceViewPlugin.PLUGIN_NAME+".find"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.find"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; Modified: tags/05pre3/sourceview/src/sourceview/action/EditFindNextAction.java =================================================================== --- tags/05pre3/sourceview/src/sourceview/action/EditFindNextAction.java 2006-08-31 20:20:10 UTC (rev 1212) +++ tags/05pre3/sourceview/src/sourceview/action/EditFindNextAction.java 2006-08-31 20:20:36 UTC (rev 1213) @@ -30,13 +30,13 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.DocumentView; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -49,20 +49,10 @@ * @version $Id$ */ -public class EditFindNextAction extends LocalizedAction { +public class EditFindNextAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditFindNextAction constructor - public EditFindNextAction() { - super(SourceViewPlugin.PLUGIN_NAME+".findnext"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.findnext"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; Modified: tags/05pre3/sourceview/src/sourceview/action/EditPasteAction.java =================================================================== --- tags/05pre3/sourceview/src/sourceview/action/EditPasteAction.java 2006-08-31 20:20:10 UTC (rev 1212) +++ tags/05pre3/sourceview/src/sourceview/action/EditPasteAction.java 2006-08-31 20:20:36 UTC (rev 1213) @@ -30,14 +30,14 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; -import net.sourceforge.jsxe.gui.DocumentView; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.util.Log; +import net.sourceforge.jsxe.gui.DocumentView; //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; //}}} @@ -49,20 +49,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class EditPasteAction extends LocalizedAction { +public class EditPasteAction implements ContextSpecificAction.ActionImplementation { - //{{{ EditPasteAction constructor - public EditPasteAction() { - super(SourceViewPlugin.PLUGIN_NAME+".paste"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.paste"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof SourceView) { SourceView sourceView = (SourceView)docView; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-31 20:20:21
|
Revision: 1212 http://svn.sourceforge.net/jsxe/?rev=1212&view=rev Author: ian_lewis Date: 2006-08-31 13:20:10 -0700 (Thu, 31 Aug 2006) Log Message: ----------- Updated the treeview to use new ContextSpecificActions Modified Paths: -------------- tags/05pre3/treeview/Changelog tags/05pre3/treeview/src/treeview/DefaultView.java tags/05pre3/treeview/src/treeview/TreeViewPlugin.java tags/05pre3/treeview/src/treeview/TreeViewTree.java tags/05pre3/treeview/src/treeview/action/CopyNodeAction.java tags/05pre3/treeview/src/treeview/action/CutNodeAction.java tags/05pre3/treeview/src/treeview/action/PasteNodeAction.java Modified: tags/05pre3/treeview/Changelog =================================================================== --- tags/05pre3/treeview/Changelog 2006-08-31 20:19:03 UTC (rev 1211) +++ tags/05pre3/treeview/Changelog 2006-08-31 20:20:10 UTC (rev 1212) @@ -1,3 +1,8 @@ +08/31/2006 Ian Lewis <Ian...@me...> + + * Updated the sourceview actions to use the new ContextSpecificActions in + jsXe. + 08/30/2006 Ian Lewis <Ian...@me...> * Fixed null pointer exception when trying to cut a node that can't be Modified: tags/05pre3/treeview/src/treeview/DefaultView.java =================================================================== --- tags/05pre3/treeview/src/treeview/DefaultView.java 2006-08-31 20:19:03 UTC (rev 1211) +++ tags/05pre3/treeview/src/treeview/DefaultView.java 2006-08-31 20:20:10 UTC (rev 1212) @@ -32,8 +32,10 @@ import net.sourceforge.jsxe.dom.*; import net.sourceforge.jsxe.dom.completion.ElementDecl; import net.sourceforge.jsxe.*; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.Messages; +import net.sourceforge.jsxe.gui.TabbedView; import net.sourceforge.jsxe.util.Log; import net.sourceforge.jsxe.msg.PropertyChanged; import net.sourceforge.jsxe.msg.UndoEvent; @@ -120,6 +122,7 @@ m_valueTextArea.setFont(new Font("Monospaced", 0, 12)); m_valueTextArea.setLineWrap(false); JScrollPane htmlView = new JScrollPane(m_valueTextArea); + //}}} //{{{ init attributes table @@ -138,6 +141,11 @@ JScrollPane treeView = new JScrollPane(tree); tree.addTreeSelectionListener(new DefaultTreeSelectionListener(this)); + //add context specific actions for the tree. + ActionManager.addActionImplementation("cut", tree, new CutNodeAction()); + ActionManager.addActionImplementation("copy", tree, new CopyNodeAction()); + ActionManager.addActionImplementation("paste", tree, new PasteNodeAction()); + //starts editing if the user start typing on one of the nodes //seems to catch user shortcuts too. Not sure how to resolve that. @@ -233,6 +241,10 @@ } } + ActionManager.removeActionImplementation("cut", tree); + ActionManager.removeActionImplementation("copy", tree); + ActionManager.removeActionImplementation("paste", tree); + EditBus.removeFromBus(this); return true; Modified: tags/05pre3/treeview/src/treeview/TreeViewPlugin.java =================================================================== --- tags/05pre3/treeview/src/treeview/TreeViewPlugin.java 2006-08-31 20:19:03 UTC (rev 1211) +++ tags/05pre3/treeview/src/treeview/TreeViewPlugin.java 2006-08-31 20:20:10 UTC (rev 1212) @@ -63,9 +63,6 @@ addAction(new RemoveAttributeAction()); addAction(new EditNodeAction()); addAction(new AddDocTypeAction()); - addAction(new CutNodeAction()); - addAction(new CopyNodeAction()); - addAction(new PasteNodeAction()); }//}}} //{{{ newDocumentView() Modified: tags/05pre3/treeview/src/treeview/TreeViewTree.java =================================================================== --- tags/05pre3/treeview/src/treeview/TreeViewTree.java 2006-08-31 20:19:03 UTC (rev 1211) +++ tags/05pre3/treeview/src/treeview/TreeViewTree.java 2006-08-31 20:20:10 UTC (rev 1212) @@ -684,48 +684,48 @@ }//}}} - //{{{ ElementTreeCellRenderer class + // //{{{ ElementTreeCellRenderer class - private class ElementTreeCellRenderer extends DefaultTreeCellRenderer { + // private class ElementTreeCellRenderer extends DefaultTreeCellRenderer { - //{{{ ElementTreeCellRenderer constructor + // //{{{ ElementTreeCellRenderer constructor - public ElementTreeCellRenderer() { - m_defaultLeafIcon = getLeafIcon(); - }//}}} + // public ElementTreeCellRenderer() { + // m_defaultLeafIcon = getLeafIcon(); + // }//}}} - //{{{ getTreeCellRendererComponent + // //{{{ getTreeCellRendererComponent - public Component getTreeCellRendererComponent(JTree tree, - Object value, boolean selected, boolean expanded, - boolean leaf, int row, boolean hasFocus) - { - AdapterNode node = (AdapterNode)value; + // public Component getTreeCellRendererComponent(JTree tree, + // Object value, boolean selected, boolean expanded, + // boolean leaf, int row, boolean hasFocus) + // { + // AdapterNode node = (AdapterNode)value; - // We can rename processing instruction nodes here too. - if (node.getNodeType() == AdapterNode.PROCESSING_INSTRUCTION_NODE) { - setIcon(m_defaultLeafIcon); - setLeafIcon(m_defaultLeafIcon); - setOpenIcon(m_defaultLeafIcon); - setClosedIcon(m_defaultLeafIcon); - setToolTipText(Messages.getMessage("xml.processing.instruction")); - } else { - setIcon(m_elementIcon); - setLeafIcon(m_elementIcon); - setOpenIcon(m_elementIcon); - setClosedIcon(m_elementIcon); - setToolTipText(Messages.getMessage("xml.element")); - } + // // We can rename processing instruction nodes here too. + // if (node.getNodeType() == AdapterNode.PROCESSING_INSTRUCTION_NODE) { + // setIcon(m_defaultLeafIcon); + // setLeafIcon(m_defaultLeafIcon); + // setOpenIcon(m_defaultLeafIcon); + // setClosedIcon(m_defaultLeafIcon); + // setToolTipText(Messages.getMessage("xml.processing.instruction")); + // } else { + // setIcon(m_elementIcon); + // setLeafIcon(m_elementIcon); + // setOpenIcon(m_elementIcon); + // setClosedIcon(m_elementIcon); + // setToolTipText(Messages.getMessage("xml.element")); + // } - //just use the node name, we don't want attributes and such. - setText(((AdapterNode)value).getNodeName()); - return this; + // //just use the node name, we don't want attributes and such. + // setText(((AdapterNode)value).getNodeName()); + // return this; - }//}}} + // }//}}} - private Icon m_defaultLeafIcon; + // private Icon m_defaultLeafIcon; - }//}}} + // }//}}} //{{{ ElementCellEditor class Modified: tags/05pre3/treeview/src/treeview/action/CopyNodeAction.java =================================================================== --- tags/05pre3/treeview/src/treeview/action/CopyNodeAction.java 2006-08-31 20:19:03 UTC (rev 1211) +++ tags/05pre3/treeview/src/treeview/action/CopyNodeAction.java 2006-08-31 20:20:10 UTC (rev 1212) @@ -29,10 +29,8 @@ import treeview.*; //{{{ AWT classes -import java.awt.datatransfer.Clipboard; import java.awt.event.ActionEvent; -import java.awt.Toolkit; -import java.awt.HeadlessException; +import java.awt.Component; //}}} //{{{ Swing classes @@ -43,7 +41,7 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.TabbedView; @@ -60,24 +58,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class CopyNodeAction extends LocalizedAction { +public class CopyNodeAction implements ContextSpecificAction.ActionImplementation { - //{{{ CopyNodeAction constructor - /** - * Creates a action that copies the current node out of the tree and into - * the clipboard. - */ - public CopyNodeAction() { - super(TreeViewPlugin.PLUGIN_NAME+".copy"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.copy"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof DefaultView) { DefaultView defView = (DefaultView)docView; Modified: tags/05pre3/treeview/src/treeview/action/CutNodeAction.java =================================================================== --- tags/05pre3/treeview/src/treeview/action/CutNodeAction.java 2006-08-31 20:19:03 UTC (rev 1211) +++ tags/05pre3/treeview/src/treeview/action/CutNodeAction.java 2006-08-31 20:20:10 UTC (rev 1212) @@ -30,6 +30,7 @@ //{{{ AWT classes import java.awt.event.ActionEvent; +import java.awt.Component; //}}} //{{{ Swing classes @@ -45,11 +46,10 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.GUIUtilities; import net.sourceforge.jsxe.dom.AdapterNode; import net.sourceforge.jsxe.util.Log; //}}} @@ -63,25 +63,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class CutNodeAction extends LocalizedAction { +public class CutNodeAction implements ContextSpecificAction.ActionImplementation { - //{{{ CutNodeAction constructor - /** - * Creates a action that cuts the current node out of the tree and into - * the clipboard. - */ - public CutNodeAction() { - super(TreeViewPlugin.PLUGIN_NAME+".cut"); - // putValue(Action.ACCELERATOR_KEY,KeyStroke.getKeyStroke("ctrl X")); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.cut"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof DefaultView) { DefaultView defView = (DefaultView)docView; @@ -89,7 +74,7 @@ try { tree.cut(); } catch (DOMException dome) { - GUIUtilities.error(tree, "XML.Error", new Object[] { dome }); + JOptionPane.showMessageDialog(tree, dome, "XML Error", JOptionPane.WARNING_MESSAGE); } } }//}}} Modified: tags/05pre3/treeview/src/treeview/action/PasteNodeAction.java =================================================================== --- tags/05pre3/treeview/src/treeview/action/PasteNodeAction.java 2006-08-31 20:19:03 UTC (rev 1211) +++ tags/05pre3/treeview/src/treeview/action/PasteNodeAction.java 2006-08-31 20:20:10 UTC (rev 1212) @@ -29,10 +29,8 @@ import treeview.*; //{{{ AWT classes -import java.awt.datatransfer.Clipboard; import java.awt.event.ActionEvent; -import java.awt.Toolkit; -import java.awt.HeadlessException; +import java.awt.Component; //}}} //{{{ Swing classes @@ -48,7 +46,7 @@ //{{{ jsXe classes import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.TabbedView; @@ -65,24 +63,10 @@ * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) * @version $Id$ */ -public class PasteNodeAction extends LocalizedAction { +public class PasteNodeAction implements ContextSpecificAction.ActionImplementation { - //{{{ PasteNodeAction constructor - /** - * Creates an action that pastes the node in the clipboard to the currently - * selected node in the tree. - */ - public PasteNodeAction() { - super(TreeViewPlugin.PLUGIN_NAME+".paste"); - }//}}} - - //{{{ getLabel() - public String getLabel() { - return Messages.getMessage("common.paste"); - }//}}} - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { + public void invoke(TabbedView view, Component comp, ActionEvent evt) { DocumentView docView = view.getDocumentView(); if (docView instanceof DefaultView) { DefaultView defView = (DefaultView)docView; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-31 20:19:17
|
Revision: 1211 http://svn.sourceforge.net/jsxe/?rev=1211&view=rev Author: ian_lewis Date: 2006-08-31 13:19:03 -0700 (Thu, 31 Aug 2006) Log Message: ----------- Added new ContextSpecificActions to replace ViewSpecificActions. Nowactions such as cut and paste can be registered for specific componentsnot just a specific view. Modified Paths: -------------- tags/05pre3/jsxe/Changelog tags/05pre3/jsxe/src/net/sourceforge/jsxe/ActionManager.java tags/05pre3/jsxe/src/net/sourceforge/jsxe/LocalizedAction.java tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/CopyAction.java tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/CutAction.java tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/FindAction.java tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/FindNextAction.java tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/PasteAction.java tags/05pre3/jsxe/src/net/sourceforge/jsxe/gui/GUIUtilities.java tags/05pre3/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java tags/05pre3/jsxe/src/net/sourceforge/jsxe/options/ShortcutsOptionPane.java Added Paths: ----------- tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/ContextSpecificAction.java Removed Paths: ------------- tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/ViewSpecificAction.java Modified: tags/05pre3/jsxe/Changelog =================================================================== --- tags/05pre3/jsxe/Changelog 2006-08-31 16:25:08 UTC (rev 1210) +++ tags/05pre3/jsxe/Changelog 2006-08-31 20:19:03 UTC (rev 1211) @@ -1,3 +1,9 @@ +08/31/2006 Ian Lewis <Ian...@me...> + + * Added new ContextSpecificActions to replace ViewSpecificActions. Now + actions such as cut and paste can be registered for specific components + not just a specific view. + 08/29/2006 Ian Lewis <Ian...@me...> * Fixed a memory leak with JMenuItems. ActionManager kept a cache of Modified: tags/05pre3/jsxe/src/net/sourceforge/jsxe/ActionManager.java =================================================================== --- tags/05pre3/jsxe/src/net/sourceforge/jsxe/ActionManager.java 2006-08-31 16:25:08 UTC (rev 1210) +++ tags/05pre3/jsxe/src/net/sourceforge/jsxe/ActionManager.java 2006-08-31 20:19:03 UTC (rev 1211) @@ -27,13 +27,13 @@ //{{{ imports //{{{ jsXe classes +import net.sourceforge.jsxe.action.ContextSpecificAction; import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.GUIUtilities; import net.sourceforge.jsxe.gui.KeyEventTranslator; import net.sourceforge.jsxe.util.Log; import net.sourceforge.jsxe.util.MiscUtilities; import net.sourceforge.jsxe.msg.PropertyChanged; -import net.sourceforge.jsxe.action.ViewSpecificAction; //}}} //{{{ Java classes @@ -49,6 +49,7 @@ //}}} //{{{ AWT classes +import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; //}}} @@ -73,16 +74,6 @@ */ public class ActionManager { - //{{{ Public static identifiers - - public static final String CUT_SUFFIX = ".cut"; - public static final String COPY_SUFFIX = ".copy"; - public static final String PASTE_SUFFIX = ".paste"; - public static final String FIND_SUFFIX = ".find"; - public static final String FIND_NEXT_SUFFIX = ".findnext"; - - //}}} - //{{{ addActionSet() /** * Adds a set of actions to the jsXe's pool of action sets. @@ -94,11 +85,51 @@ m_actionSets.add(set); }//}}} + //{{{ addActionImplementation() + /** + * Register an ActionImplementation with a registered ContextSpecificAction. + * If the ContextSpecificAction isn't registered this method does nothing. + * @param actionName the name of the ContextSpecificAction + * @param comp the component context the recieves the action + * @param imp the action implementation + */ + public static void addActionImplementation(String actionName, Component comp, ContextSpecificAction.ActionImplementation imp) { + ContextSpecificAction action = getContextSpecificAction(actionName); + if (action != null) { + action.registerComponent(comp, imp); + } + }//}}} + + //{{{ removeActionImplementation() + /** + * Removes the ActionImplementation from the registered + * ContextSpecificAction. + */ + public static void removeActionImplementation(String actionName, Component comp) { + ContextSpecificAction action = getContextSpecificAction(actionName); + if (action != null) { + action.removeComponent(comp); + } + }//}}} + + //{{{ getContextSpecificAction() + /** + * Gets a context specific action or null if no context specific action + * exists with that name. + */ + public static ContextSpecificAction getContextSpecificAction(String name) { + LocalizedAction action = getLocalizedAction(name); + if (action instanceof ContextSpecificAction) { + return (ContextSpecificAction)action; + } + return null; + }//}}} + //{{{ getLocalizedAction() /** * Gets the LocalizedAction set with the given name - * @param the name of the action set. - * @return the action set that matches the name, or null if none match. + * @param the name of the action. + * @return the action that matches the name, or null if none match. */ public static LocalizedAction getLocalizedAction(String name) { for (int i = 0; i < m_actionSets.size(); i++) { @@ -113,8 +144,8 @@ //{{{ getAction() /** - * Gets a true action for the LocalizedAction with the given name. This can be - * used in menus and toobars etc. + * Creates a true action for the LocalizedAction with the given name. This + * can be used in menus and toobars etc. * @param name the name of the action. */ public static Action getAction(String name) { @@ -267,18 +298,6 @@ } }//}}} - //{{{ isDocviewSpecific() - /** - * Returns whether the action with the given name is document view specific. - */ - public static boolean isDocViewSpecific(String actionName) { - return (actionName.endsWith(CUT_SUFFIX) || - actionName.endsWith(COPY_SUFFIX) || - actionName.endsWith(PASTE_SUFFIX) || - actionName.endsWith(FIND_SUFFIX) || - actionName.endsWith(FIND_NEXT_SUFFIX)); - }//}}} - //{{{ Wrapper class /** * The Wrapper class wraps LocalizedActions so they can be invoked Modified: tags/05pre3/jsxe/src/net/sourceforge/jsxe/LocalizedAction.java =================================================================== --- tags/05pre3/jsxe/src/net/sourceforge/jsxe/LocalizedAction.java 2006-08-31 16:25:08 UTC (rev 1210) +++ tags/05pre3/jsxe/src/net/sourceforge/jsxe/LocalizedAction.java 2006-08-31 20:19:03 UTC (rev 1211) @@ -45,7 +45,7 @@ * @version $Id$ * @see jsXe * @see ActionSet - * @see InputManager + * @see ActionManager * @since jsXe 0.5 pre1 */ public abstract class LocalizedAction { Copied: tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/ContextSpecificAction.java (from rev 1210, tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/ViewSpecificAction.java) =================================================================== --- tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/ContextSpecificAction.java (rev 0) +++ tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/ContextSpecificAction.java 2006-08-31 20:19:03 UTC (rev 1211) @@ -0,0 +1,146 @@ +/* +ContextSpecificAction.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +Copyright (C) 2006 Ian Lewis (Ian...@me...) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +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 General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package net.sourceforge.jsxe.action; + +//{{{ imports + +//{{{ jsXe classes +import net.sourceforge.jsxe.jsXe; +import net.sourceforge.jsxe.ActionManager; +import net.sourceforge.jsxe.LocalizedAction; +import net.sourceforge.jsxe.gui.TabbedView; +import net.sourceforge.jsxe.gui.GUIUtilities; +//}}} + +//{{{ Java classes +import java.io.IOException; +import java.util.HashMap; +import java.util.Iterator; +//}}} + +//{{{ AWT components +import java.awt.event.ActionEvent; +import java.awt.Component; +import java.awt.KeyboardFocusManager; +//}}} + +//}}} + +/** + * The ContextSpecificAction is a class that defines actions that are + * context specific. i.e. Actions that are defined by jsXe but whose + * implementation is determined by the context or component that + * currently has focus. + * + * The ContextSpecificAction class allows components to be assocatied + * with a specific action implementation that is specific to that context + * (component). When the ContextSpecificAction is run, the action will + * search the registered components. If the component that has focus is owned + * by registered component then the action implementation associated with + * that component is then invoked. + * + * The order of the search is not specified and the first match that is found + * will be invoked. + * + * Examples where this class may be useful is cut, copy, paste, insert, or + * delete where the implementation may depend on the components implementation. + * + * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) + * @version $Id$ + * @since jsXe 0.5 pre3 + */ +public abstract class ContextSpecificAction extends LocalizedAction { + + //{{{ ContextSpecificAction constructor + public ContextSpecificAction(String name) { + super(name); + }//}}} + + //{{{ invoke() + /** + * Invokes the specific ActionImplementation for the component in + * the current context. This method should generally not be overridden by + * subclasses. + */ + public void invoke(TabbedView view, ActionEvent evt) { + /* + Invoke the action registered for the current component named + */ + Component comp = KeyboardFocusManager.getCurrentKeyboardFocusManager().getPermanentFocusOwner(); + Iterator itr = m_actionMap.keySet().iterator(); + while (itr.hasNext()) { + Component key = (Component)itr.next(); + if (GUIUtilities.isComponentParentOf(key, comp)) { + ActionImplementation imp = (ActionImplementation)m_actionMap.get(key); + imp.invoke(view, key, evt); + return; + } + } + }//}}} + + //{{{ registerComponent() + /** + * Adds a component and implementation to the action map for this + * action. + * @param comp The component that will recieve the action + * @param imp the action implementation that implements the action for the + * given component. + */ + public void registerComponent(Component comp, ActionImplementation imp) { + m_actionMap.put(comp, imp); + }//}}} + + //{{{ removeComponent() + /** + * Removes the component from the action map for this action + */ + public void removeComponent(Component comp) { + m_actionMap.remove(comp); + }//}}} + + //{{{ interface ActionImplementation + /** + * An ActionImplementation is an implementation of an action that can be + * registered with a ContextSpecificAction and run in a context. + */ + public static interface ActionImplementation { + + /** + * This method is run when the ContextSpecificAction is run and + * the registered component has focus. + * @param view the view that invoked the action + * @param comp the registered component + * @param evt the event that triggered the action + */ + public void invoke(TabbedView view, Component comp, ActionEvent evt); + + }//}}} + + //{{{ Private Members + + private HashMap m_actionMap = new HashMap(); + + //}}} +} Modified: tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/CopyAction.java =================================================================== --- tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/CopyAction.java 2006-08-31 16:25:08 UTC (rev 1210) +++ tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/CopyAction.java 2006-08-31 20:19:03 UTC (rev 1211) @@ -40,9 +40,13 @@ //}}} //{{{ AWT components +import java.awt.Component; +import java.awt.KeyboardFocusManager; import java.awt.event.ActionEvent; //}}} +import javax.swing.text.JTextComponent; + //}}} /** @@ -53,11 +57,23 @@ * @version $Id$ * @since jsXe 0.5 pre1 */ -public class CopyAction extends ViewSpecificAction { +public class CopyAction extends ContextSpecificAction { //{{{ CopyAction constructor public CopyAction() { super("copy"); }//}}} + //{{{ invoke() + public void invoke(TabbedView view, ActionEvent evt) { + /* + Invoke the action registered for the current component named + */ + Component comp = KeyboardFocusManager.getCurrentKeyboardFocusManager().getPermanentFocusOwner(); + if (comp instanceof JTextComponent) { + ((JTextComponent)comp).copy(); + } else { + super.invoke(view, evt); + } + }//}}} } Modified: tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/CutAction.java =================================================================== --- tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/CutAction.java 2006-08-31 16:25:08 UTC (rev 1210) +++ tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/CutAction.java 2006-08-31 20:19:03 UTC (rev 1211) @@ -40,9 +40,13 @@ //}}} //{{{ AWT components +import java.awt.Component; +import java.awt.KeyboardFocusManager; import java.awt.event.ActionEvent; //}}} +import javax.swing.text.JTextComponent; + //}}} /** @@ -52,11 +56,24 @@ * @version $Id$ * @since jsXe 0.5 pre1 */ -public class CutAction extends ViewSpecificAction { +public class CutAction extends ContextSpecificAction { //{{{ CutAction constructor public CutAction() { super("cut"); }//}}} + //{{{ invoke() + public void invoke(TabbedView view, ActionEvent evt) { + /* + Invoke the action registered for the current component named + */ + Component comp = KeyboardFocusManager.getCurrentKeyboardFocusManager().getPermanentFocusOwner(); + if (comp instanceof JTextComponent) { + ((JTextComponent)comp).cut(); + } else { + super.invoke(view, evt); + } + }//}}} + } Modified: tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/FindAction.java =================================================================== --- tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/FindAction.java 2006-08-31 16:25:08 UTC (rev 1210) +++ tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/FindAction.java 2006-08-31 20:19:03 UTC (rev 1211) @@ -53,7 +53,7 @@ * @version $Id$ * @since jsXe 0.5 pre1 */ -public class FindAction extends ViewSpecificAction { +public class FindAction extends ContextSpecificAction { //{{{ FindAction constructor public FindAction() { Modified: tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/FindNextAction.java =================================================================== --- tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/FindNextAction.java 2006-08-31 16:25:08 UTC (rev 1210) +++ tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/FindNextAction.java 2006-08-31 20:19:03 UTC (rev 1211) @@ -53,7 +53,7 @@ * @version $Id$ * @since jsXe 0.5 pre1 */ -public class FindNextAction extends ViewSpecificAction { +public class FindNextAction extends ContextSpecificAction { //{{{ FindNextAction constructor public FindNextAction() { Modified: tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/PasteAction.java =================================================================== --- tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/PasteAction.java 2006-08-31 16:25:08 UTC (rev 1210) +++ tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/PasteAction.java 2006-08-31 20:19:03 UTC (rev 1211) @@ -40,9 +40,13 @@ //}}} //{{{ AWT components +import java.awt.Component; +import java.awt.KeyboardFocusManager; import java.awt.event.ActionEvent; //}}} +import javax.swing.text.JTextComponent; + //}}} /** @@ -53,11 +57,24 @@ * @version $Id$ * @since jsXe 0.5 pre1 */ -public class PasteAction extends ViewSpecificAction { +public class PasteAction extends ContextSpecificAction { //{{{ PasteAction constructor public PasteAction() { super("paste"); }//}}} -} + //{{{ invoke() + public void invoke(TabbedView view, ActionEvent evt) { + /* + Invoke the action registered for the current component named + */ + Component comp = KeyboardFocusManager.getCurrentKeyboardFocusManager().getPermanentFocusOwner(); + if (comp instanceof JTextComponent) { + ((JTextComponent)comp).paste(); + } else { + super.invoke(view, evt); + } + }//}}} + +} \ No newline at end of file Deleted: tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/ViewSpecificAction.java =================================================================== --- tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/ViewSpecificAction.java 2006-08-31 16:25:08 UTC (rev 1210) +++ tags/05pre3/jsxe/src/net/sourceforge/jsxe/action/ViewSpecificAction.java 2006-08-31 20:19:03 UTC (rev 1211) @@ -1,81 +0,0 @@ -/* -ViewSpecificAction.java -:tabSize=4:indentSize=4:noTabs=true: -:folding=explicit:collapseFolds=1: - -Copyright (C) 2006 Ian Lewis (Ian...@me...) - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -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 General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -Optionally, you may find a copy of the GNU General Public License -from http://www.fsf.org/copyleft/gpl.txt -*/ - -package net.sourceforge.jsxe.action; - -//{{{ imports - -//{{{ jsXe classes -import net.sourceforge.jsxe.jsXe; -import net.sourceforge.jsxe.JARClassLoader; -import net.sourceforge.jsxe.ActionManager; -import net.sourceforge.jsxe.LocalizedAction; -import net.sourceforge.jsxe.gui.TabbedView; -import net.sourceforge.jsxe.gui.Messages; -//}}} - -//{{{ Java classes -import java.io.IOException; -//}}} - -//{{{ AWT components -import java.awt.event.ActionEvent; -//}}} - -//}}} - -/** - * The ViewSpecificAction is a class that defines actions that are - * view specific. i.e. Actions that are defined by jsXe but whose - * implementation is determined by the currently active view. - * - * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) - * @version $Id$ - * @since jsXe 0.5 pre3 - */ -public abstract class ViewSpecificAction extends LocalizedAction { - - //{{{ ViewSpecificAction constructor - public ViewSpecificAction(String name) { - super(name); - }//}}} - - //{{{ invoke() - public void invoke(TabbedView view, ActionEvent evt) { - /* - invoke the action registered for the current DocumentView named - viewname.actionname if there is one. - */ - ActionManager.invokeAction(getViewActionName(view), evt); - }//}}} - - //{{{ getViewActionName() - /** - * Gets the view specific action name for the current DocumentView in the - * given TabbedView. - */ - private String getViewActionName(TabbedView view) { - return jsXe.getPluginLoader().getPluginProperty(view.getDocumentView().getViewPlugin(), JARClassLoader.PLUGIN_NAME)+"."+getName(); - }//}}} -} Modified: tags/05pre3/jsxe/src/net/sourceforge/jsxe/gui/GUIUtilities.java =================================================================== --- tags/05pre3/jsxe/src/net/sourceforge/jsxe/gui/GUIUtilities.java 2006-08-31 16:25:08 UTC (rev 1210) +++ tags/05pre3/jsxe/src/net/sourceforge/jsxe/gui/GUIUtilities.java 2006-08-31 20:19:03 UTC (rev 1211) @@ -1271,6 +1271,40 @@ return (p instanceof JDialog) ? (JDialog) p : null; } //}}} + //{{{ isComponentParentOf() method + /** + * Returns true if the parent is a parent component of child. + * @param parent the parent component + * @param child the child component + * @since jsXe 0.5 pre3 + */ + public static boolean isComponentParentOf(Component parent, Component child) { + Component comp = child; + for(;;) { + if (comp == null) { + break; + } + + if (comp instanceof JComponent) { + Component real = (Component)((JComponent)comp).getClientProperty("KORTE_REAL_FRAME"); + if (real != null) { + comp = real; + } + } + + if (comp.equals(parent)) { + return true; + } else { + if (comp instanceof JPopupMenu) { + comp = ((JPopupMenu)comp).getInvoker(); + } else { + comp = comp.getParent(); + } + } + } + return false; + }//}}} + //{{{ getComponentParent() method /** * Finds a parent of the specified component. Modified: tags/05pre3/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java =================================================================== --- tags/05pre3/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-08-31 16:25:08 UTC (rev 1210) +++ tags/05pre3/jsxe/src/net/sourceforge/jsxe/gui/TabbedView.java 2006-08-31 20:19:03 UTC (rev 1211) @@ -585,69 +585,68 @@ m_editMenu.add(menuItem); m_editMenu.addSeparator(); Action action = ActionManager.getAction("cut"); - if (view != null) { - String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".cut"; - if (ActionManager.getLocalizedAction(name) == null) { - action.setEnabled(false); - } else { - action.setEnabled(true); - } - } else { - action.setEnabled(false); - } + // if (view != null) { + // if (ActionManager.getLocalizedAction(name) == null) { + // action.setEnabled(false); + // } else { + // action.setEnabled(true); + // } + // } else { + // action.setEnabled(false); + // } menuItem = new JMenuItem(action); m_editMenu.add(menuItem); action = ActionManager.getAction("copy"); - if (view != null) { - String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".copy"; - if (ActionManager.getLocalizedAction(name) == null) { - action.setEnabled(false); - } else { - action.setEnabled(true); - } - } else { - action.setEnabled(false); - } + // if (view != null) { + // String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".copy"; + // if (ActionManager.getLocalizedAction(name) == null) { + // action.setEnabled(false); + // } else { + // action.setEnabled(true); + // } + // } else { + // action.setEnabled(false); + // } menuItem = new JMenuItem(action); m_editMenu.add(menuItem); action = ActionManager.getAction("paste"); - if (view != null) { - String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".paste"; - if (ActionManager.getLocalizedAction(name) == null) { - action.setEnabled(false); - } else { - action.setEnabled(true); - } - } else { - action.setEnabled(false); - } + // if (view != null) { + // String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".paste"; + // if (ActionManager.getLocalizedAction(name) == null) { + // action.setEnabled(false); + // } else { + // action.setEnabled(true); + // } + // } else { + // action.setEnabled(false); + // } menuItem = new JMenuItem(action); m_editMenu.add(menuItem); m_editMenu.addSeparator(); action = ActionManager.getAction("find"); - if (view != null) { - String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".find"; - if (ActionManager.getLocalizedAction(name) == null) { - action.setEnabled(false); - } else { - action.setEnabled(true); - } - } else { - action.setEnabled(false); - } + // if (view != null) { + // String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".find"; + // if (ActionManager.getLocalizedAction(name) == null) { + // action.setEnabled(false); + // } else { + // action.setEnabled(true); + // } + // } else { + // action.setEnabled(false); + // } menuItem = new JMenuItem(action); m_editMenu.add(menuItem); action = ActionManager.getAction("findnext"); - if (view != null) { - String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".findnext"; - if (ActionManager.getLocalizedAction(name) == null) { - action.setEnabled(false); - } else { - action.setEnabled(true); - } - } else { - action.setEnabled(false); - } + // if (view != null) { + // String name = jsXe.getPluginLoader().getPluginProperty(view.getViewPlugin(), JARClassLoader.PLUGIN_NAME)+".findnext"; + // if (ActionManager.getLocalizedAction(name) == null) { + // action.setEnabled(false); + // } else { + // action.setEnabled(true); + // } + // } else { + // action.setEnabled(false); + // } menuItem = new JMenuItem(action); m_editMenu.add(menuItem); }//}}} Modified: tags/05pre3/jsxe/src/net/sourceforge/jsxe/options/ShortcutsOptionPane.java =================================================================== --- tags/05pre3/jsxe/src/net/sourceforge/jsxe/options/ShortcutsOptionPane.java 2006-08-31 16:25:08 UTC (rev 1210) +++ tags/05pre3/jsxe/src/net/sourceforge/jsxe/options/ShortcutsOptionPane.java 2006-08-31 20:19:03 UTC (rev 1211) @@ -146,10 +146,8 @@ if (label == null) { Log.log(Log.WARNING, this, names[i]+" has a null label"); } else { - if (!ActionManager.isDocViewSpecific(names[i])) { - String binding = jsXe.getProperty(names[i]+".shortcut"); - m_set.add(new GrabKeyDialog.KeyBinding(names[i], label, binding)); - } + String binding = jsXe.getProperty(names[i]+".shortcut"); + m_set.add(new GrabKeyDialog.KeyBinding(names[i], label, binding)); } } MiscUtilities.quicksort(m_set, new KeyCompare()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-31 16:25:14
|
Revision: 1210 http://svn.sourceforge.net/jsxe/?rev=1210&view=rev Author: ian_lewis Date: 2006-08-31 09:25:08 -0700 (Thu, 31 Aug 2006) Log Message: ----------- Changed to correct dependency version Modified Paths: -------------- tags/05pre3/treeview/dependency.props Modified: tags/05pre3/treeview/dependency.props =================================================================== --- tags/05pre3/treeview/dependency.props 2006-08-31 03:18:53 UTC (rev 1209) +++ tags/05pre3/treeview/dependency.props 2006-08-31 16:25:08 UTC (rev 1210) @@ -1 +1 @@ -dependency.0=jsxe 00.05.04.00 +dependency.0=jsxe 00.05.03.00 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-31 03:18:59
|
Revision: 1209 http://svn.sourceforge.net/jsxe/?rev=1209&view=rev Author: ian_lewis Date: 2006-08-30 20:18:53 -0700 (Wed, 30 Aug 2006) Log Message: ----------- Merge from trunk rev. 1208 Modified Paths: -------------- tags/05pre3/treeview/Changelog tags/05pre3/treeview/dependency.props tags/05pre3/treeview/src/treeview/TreeViewTree.java tags/05pre3/treeview/src/treeview/action/CutNodeAction.java Modified: tags/05pre3/treeview/Changelog =================================================================== --- tags/05pre3/treeview/Changelog 2006-08-30 18:26:35 UTC (rev 1208) +++ tags/05pre3/treeview/Changelog 2006-08-31 03:18:53 UTC (rev 1209) @@ -1,3 +1,12 @@ +08/30/2006 Ian Lewis <Ian...@me...> + + * Fixed null pointer exception when trying to cut a node that can't be + cut. + +08/29/2006 Ian Lewis <Ian...@me...> + + * Updated japanese translation + 08/21/2006 Ian Lewis <Ian...@me...> * Updated russian translation. Modified: tags/05pre3/treeview/dependency.props =================================================================== --- tags/05pre3/treeview/dependency.props 2006-08-30 18:26:35 UTC (rev 1208) +++ tags/05pre3/treeview/dependency.props 2006-08-31 03:18:53 UTC (rev 1209) @@ -1 +1 @@ -dependency.0=jsxe 00.05.03.00 +dependency.0=jsxe 00.05.04.00 Modified: tags/05pre3/treeview/src/treeview/TreeViewTree.java =================================================================== --- tags/05pre3/treeview/src/treeview/TreeViewTree.java 2006-08-30 18:26:35 UTC (rev 1208) +++ tags/05pre3/treeview/src/treeview/TreeViewTree.java 2006-08-31 03:18:53 UTC (rev 1209) @@ -196,8 +196,8 @@ Clipboard clipBoard = getToolkit().getSystemClipboard(); if (selectedNode != null) { try { - clipBoard.setContents(new TransferableNode(selectedNode), this); selectedNode.getParentNode().remove(selectedNode); + clipBoard.setContents(new TransferableNode(selectedNode), this); updateUI(); return true; } catch (IllegalStateException e) { @@ -205,7 +205,6 @@ } catch (HeadlessException e) { Log.log(Log.ERROR, this, e); } catch (DOMException e) { - clipBoard.setContents(null, this); throw e; } } Modified: tags/05pre3/treeview/src/treeview/action/CutNodeAction.java =================================================================== --- tags/05pre3/treeview/src/treeview/action/CutNodeAction.java 2006-08-30 18:26:35 UTC (rev 1208) +++ tags/05pre3/treeview/src/treeview/action/CutNodeAction.java 2006-08-31 03:18:53 UTC (rev 1209) @@ -29,10 +29,7 @@ import treeview.*; //{{{ AWT classes -import java.awt.datatransfer.Clipboard; import java.awt.event.ActionEvent; -import java.awt.Toolkit; -import java.awt.HeadlessException; //}}} //{{{ Swing classes @@ -52,6 +49,7 @@ import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.TabbedView; +import net.sourceforge.jsxe.gui.GUIUtilities; import net.sourceforge.jsxe.dom.AdapterNode; import net.sourceforge.jsxe.util.Log; //}}} @@ -91,7 +89,7 @@ try { tree.cut(); } catch (DOMException dome) { - JOptionPane.showMessageDialog(tree, dome, "XML Error", JOptionPane.WARNING_MESSAGE); + GUIUtilities.error(tree, "XML.Error", new Object[] { dome }); } } }//}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-30 18:26:49
|
Revision: 1208 http://svn.sourceforge.net/jsxe/?rev=1208&view=rev Author: ian_lewis Date: 2006-08-30 11:26:35 -0700 (Wed, 30 Aug 2006) Log Message: ----------- Fixed a bug where null pointer exceptions were thrown when an error occurs when cutting a node Modified Paths: -------------- trunk/treeview/Changelog trunk/treeview/dependency.props trunk/treeview/src/treeview/TreeViewTree.java trunk/treeview/src/treeview/action/CutNodeAction.java Modified: trunk/treeview/Changelog =================================================================== --- trunk/treeview/Changelog 2006-08-30 17:46:35 UTC (rev 1207) +++ trunk/treeview/Changelog 2006-08-30 18:26:35 UTC (rev 1208) @@ -1,3 +1,8 @@ +08/30/2006 Ian Lewis <Ian...@me...> + + * Fixed null pointer exception when trying to cut a node that can't be + cut. + 08/29/2006 Ian Lewis <Ian...@me...> * Updated japanese translation Modified: trunk/treeview/dependency.props =================================================================== --- trunk/treeview/dependency.props 2006-08-30 17:46:35 UTC (rev 1207) +++ trunk/treeview/dependency.props 2006-08-30 18:26:35 UTC (rev 1208) @@ -1 +1 @@ -dependency.0=jsxe 00.05.03.00 +dependency.0=jsxe 00.05.04.00 Modified: trunk/treeview/src/treeview/TreeViewTree.java =================================================================== --- trunk/treeview/src/treeview/TreeViewTree.java 2006-08-30 17:46:35 UTC (rev 1207) +++ trunk/treeview/src/treeview/TreeViewTree.java 2006-08-30 18:26:35 UTC (rev 1208) @@ -196,8 +196,8 @@ Clipboard clipBoard = getToolkit().getSystemClipboard(); if (selectedNode != null) { try { - clipBoard.setContents(new TransferableNode(selectedNode), this); selectedNode.getParentNode().remove(selectedNode); + clipBoard.setContents(new TransferableNode(selectedNode), this); updateUI(); return true; } catch (IllegalStateException e) { @@ -205,7 +205,6 @@ } catch (HeadlessException e) { Log.log(Log.ERROR, this, e); } catch (DOMException e) { - clipBoard.setContents(null, this); throw e; } } Modified: trunk/treeview/src/treeview/action/CutNodeAction.java =================================================================== --- trunk/treeview/src/treeview/action/CutNodeAction.java 2006-08-30 17:46:35 UTC (rev 1207) +++ trunk/treeview/src/treeview/action/CutNodeAction.java 2006-08-30 18:26:35 UTC (rev 1208) @@ -29,10 +29,7 @@ import treeview.*; //{{{ AWT classes -import java.awt.datatransfer.Clipboard; import java.awt.event.ActionEvent; -import java.awt.Toolkit; -import java.awt.HeadlessException; //}}} //{{{ Swing classes @@ -52,6 +49,7 @@ import net.sourceforge.jsxe.gui.DocumentView; import net.sourceforge.jsxe.gui.Messages; import net.sourceforge.jsxe.gui.TabbedView; +import net.sourceforge.jsxe.gui.GUIUtilities; import net.sourceforge.jsxe.dom.AdapterNode; import net.sourceforge.jsxe.util.Log; //}}} @@ -91,7 +89,7 @@ try { tree.cut(); } catch (DOMException dome) { - JOptionPane.showMessageDialog(tree, dome, "XML Error", JOptionPane.WARNING_MESSAGE); + GUIUtilities.error(tree, "XML.Error", new Object[] { dome }); } } }//}}} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-30 17:46:47
|
Revision: 1207 http://svn.sourceforge.net/jsxe/?rev=1207&view=rev Author: ian_lewis Date: 2006-08-30 10:46:35 -0700 (Wed, 30 Aug 2006) Log Message: ----------- version bump Modified Paths: -------------- trunk/jsxe/build.xml Modified: trunk/jsxe/build.xml =================================================================== --- trunk/jsxe/build.xml 2006-08-30 04:58:24 UTC (rev 1206) +++ trunk/jsxe/build.xml 2006-08-30 17:46:35 UTC (rev 1207) @@ -30,13 +30,13 @@ <property name="main.class" value="net.sourceforge.jsxe.jsXe"/> <property name="major.version" value="0"/> <property name="minor.version" value="5"/> - <property name="beta.version" value="3"/> + <property name="beta.version" value="4"/> <property name="bugfix.version" value="0"/> <property name="date.format" value="MM.dd.yyyy HH:mm:ss z"/> <!-- Human Readable --> - <property name="app.version" value="0.5 pre3"/> + <property name="app.version" value="0.5 pre4"/> <!-- Used in filenames --> - <property name="app_version" value="05_pre3"/> + <property name="app_version" value="05_pre4"/> <!-- }}} --> <!-- {{{ build directories --> <property name="root.dir" value="."/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-30 04:58:30
|
Revision: 1206 Author: ian_lewis Date: 2006-08-29 21:58:24 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1206&view=rev Log Message: ----------- Merge from 05pre3 branch rev. 1205 Modified Paths: -------------- trunk/jsxe/Changelog trunk/jsxe/src/net/sourceforge/jsxe/properties Modified: trunk/jsxe/Changelog =================================================================== --- trunk/jsxe/Changelog 2006-08-30 04:56:43 UTC (rev 1205) +++ trunk/jsxe/Changelog 2006-08-30 04:58:24 UTC (rev 1206) @@ -3,6 +3,8 @@ * Fixed a memory leak with JMenuItems. ActionManager kept a cache of Wrapper Action objects. JMenu items register listeners with those Actions so the JMenuItems would never be Garbage collected. + * Fixed that the Find action had Ctrl-v as the default shortcut. Changed it + to Ctrl-f 08/28/2006 Ian Lewis <Ian...@me...> Modified: trunk/jsxe/src/net/sourceforge/jsxe/properties =================================================================== --- trunk/jsxe/src/net/sourceforge/jsxe/properties 2006-08-30 04:56:43 UTC (rev 1205) +++ trunk/jsxe/src/net/sourceforge/jsxe/properties 2006-08-30 04:58:24 UTC (rev 1206) @@ -64,7 +64,7 @@ cut.shortcut=C+x copy.shortcut=C+c paste.shortcut=C+v -find.shortcut=C+v +find.shortcut=C+f findnext.shortcut=C+g undo.shortcut=C+z redo.shortcut=C+y This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-30 04:56:55
|
Revision: 1205 Author: ian_lewis Date: 2006-08-29 21:56:43 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1205&view=rev Log Message: ----------- Fixed default shortcut for Find Modified Paths: -------------- tags/05pre3/jsxe/Changelog tags/05pre3/jsxe/src/net/sourceforge/jsxe/properties Modified: tags/05pre3/jsxe/Changelog =================================================================== --- tags/05pre3/jsxe/Changelog 2006-08-30 04:41:27 UTC (rev 1204) +++ tags/05pre3/jsxe/Changelog 2006-08-30 04:56:43 UTC (rev 1205) @@ -3,6 +3,8 @@ * Fixed a memory leak with JMenuItems. ActionManager kept a cache of Wrapper Action objects. JMenu items register listeners with those Actions so the JMenuItems would never be Garbage collected. + * Fixed that the Find action had Ctrl-v as the default shortcut. Changed it + to Ctrl-f 08/28/2006 Ian Lewis <Ian...@me...> Modified: tags/05pre3/jsxe/src/net/sourceforge/jsxe/properties =================================================================== --- tags/05pre3/jsxe/src/net/sourceforge/jsxe/properties 2006-08-30 04:41:27 UTC (rev 1204) +++ tags/05pre3/jsxe/src/net/sourceforge/jsxe/properties 2006-08-30 04:56:43 UTC (rev 1205) @@ -62,7 +62,7 @@ cut.shortcut=C+x copy.shortcut=C+c paste.shortcut=C+v -find.shortcut=C+v +find.shortcut=C+f findnext.shortcut=C+g undo.shortcut=C+z redo.shortcut=C+y This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-30 04:41:30
|
Revision: 1204 Author: ian_lewis Date: 2006-08-29 21:41:27 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1204&view=rev Log Message: ----------- Updated japanese locale screenshot Modified Paths: -------------- trunk/web/htdocs/screenshots.php Modified: trunk/web/htdocs/screenshots.php =================================================================== --- trunk/web/htdocs/screenshots.php 2006-08-30 04:38:35 UTC (rev 1203) +++ trunk/web/htdocs/screenshots.php 2006-08-30 04:41:27 UTC (rev 1204) @@ -24,15 +24,15 @@ <table border="0" cellpadding="0" cellspacing="15" width="100%"> <tr> <td> - <a href="screenshots.php?id=81126"> - <img alt="screenshot" border="0" src="http://sourceforge.net/dbimage.php?id=81125"/> + <a href="screenshots.php?id=86758"> + <img alt="screenshot" border="0" src="http://sourceforge.net/dbimage.php?id=86757"/> </a> </td> <td> jsXe with Japanese locale. <br/> - (jsXe 0.5 pre1 running on Windows XP) + (jsXe 0.5 pre3 running on Ubuntu Linux) </td> </tr> <tr> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-30 04:38:39
|
Revision: 1203 Author: ian_lewis Date: 2006-08-29 21:38:35 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1203&view=rev Log Message: ----------- Updated changelog Modified Paths: -------------- trunk/treeview/Changelog Modified: trunk/treeview/Changelog =================================================================== --- trunk/treeview/Changelog 2006-08-30 04:37:34 UTC (rev 1202) +++ trunk/treeview/Changelog 2006-08-30 04:38:35 UTC (rev 1203) @@ -1,3 +1,7 @@ +08/29/2006 Ian Lewis <Ian...@me...> + + * Updated japanese translation + 08/21/2006 Ian Lewis <Ian...@me...> * Updated russian translation. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-30 04:37:41
|
Revision: 1202 Author: ian_lewis Date: 2006-08-29 21:37:34 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1202&view=rev Log Message: ----------- Updated japanese translation Modified Paths: -------------- trunk/treeview/messages/messages_ja.properties Modified: trunk/treeview/messages/messages_ja.properties =================================================================== --- trunk/treeview/messages/messages_ja.properties 2006-08-30 04:33:47 UTC (rev 1201) +++ trunk/treeview/messages/messages_ja.properties 2006-08-30 04:37:34 UTC (rev 1202) @@ -12,6 +12,8 @@ Show.Attributes.None=なし Show.Attributes.ID.Only=IDだけ Show.Attributes.All=全て + +treeview.document.root=ドキュメントルート treeview.rename.node.label=ノードをリネーム treeview.remove.node.label=ノードを削除 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-30 04:33:52
|
Revision: 1201 Author: ian_lewis Date: 2006-08-29 21:33:47 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1201&view=rev Log Message: ----------- Removed echo from build file Modified Paths: -------------- trunk/jsxe/build.xml Modified: trunk/jsxe/build.xml =================================================================== --- trunk/jsxe/build.xml 2006-08-29 20:33:55 UTC (rev 1200) +++ trunk/jsxe/build.xml 2006-08-30 04:33:47 UTC (rev 1201) @@ -202,8 +202,6 @@ </xmlcatalog> <!-- }}} --> - <echo message="${docbook.dir}"/> - <echo message="${app.name} ${app.version}"/> <echo message="----------------------------------------------------------"/> </target> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-29 20:34:08
|
Revision: 1200 Author: ian_lewis Date: 2006-08-29 13:33:55 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1200&view=rev Log Message: ----------- Some more compatibility changes Modified Paths: -------------- branches/jsxe2/src/net/sourceforge/jsxe/io/FileVFS.java branches/jsxe2/src/net/sourceforge/jsxe/io/VFS.java branches/jsxe2/src/net/sourceforge/jsxe/io/VFSManager.java branches/jsxe2/src/net/sourceforge/jsxe/util/MiscUtilities.java Added Paths: ----------- branches/jsxe2/src/net/sourceforge/jsxe/msg/VFSUpdate.java branches/jsxe2/src/net/sourceforge/jsxe/util/SegmentBuffer.java Modified: branches/jsxe2/src/net/sourceforge/jsxe/io/FileVFS.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/io/FileVFS.java 2006-08-29 20:10:17 UTC (rev 1199) +++ branches/jsxe2/src/net/sourceforge/jsxe/io/FileVFS.java 2006-08-29 20:33:55 UTC (rev 1200) @@ -4,7 +4,7 @@ :folding=explicit:collapseFolds=1: Copyright (C) 1998, 1999, 2000, 2001, 2002 Slava Pestov -Portions Copyright (C) 2004 Ian Lewis (Ian...@me...) +Portions Copyright (C) 2006 Ian Lewis (Ian...@me...) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -26,12 +26,21 @@ package net.sourceforge.jsxe.io; //{{{ Imports + +//{{{ jsXe classes +import net.sourceforge.jsxe.jsXe; +import net.sourceforge.jsxe.dom2.XMLDocument; +import net.sourceforge.jsxe.gui.TabbedView; +import net.sourceforge.jsxe.OperatingSystem; +import net.sourceforge.jsxe.util.Log; +import net.sourceforge.jsxe.util.MiscUtilities; +//}}} + import java.awt.Component; import java.io.*; import java.text.*; import java.util.Date; -import net.sourceforge.jsxe.OperatingSystem; -import net.sourceforge.jsxe.util.Log; + //}}} /** Modified: branches/jsxe2/src/net/sourceforge/jsxe/io/VFS.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/io/VFS.java 2006-08-29 20:10:17 UTC (rev 1199) +++ branches/jsxe2/src/net/sourceforge/jsxe/io/VFS.java 2006-08-29 20:33:55 UTC (rev 1200) @@ -787,10 +787,9 @@ //{{{ DirectoryEntryCompare class /** - * Implementation of {@link org.gjt.sp.jedit.MiscUtilities.Compare} - * interface that compares {@link VFS.DirectoryEntry} instances. + * Interface that compares {@link VFS.DirectoryEntry} instances. */ - public static class DirectoryEntryCompare implements MiscUtilities.Compare { + public static class DirectoryEntryCompare implements Comparator { private boolean sortIgnoreCase, sortMixFilesAndDirs; Modified: branches/jsxe2/src/net/sourceforge/jsxe/io/VFSManager.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/io/VFSManager.java 2006-08-29 20:10:17 UTC (rev 1199) +++ branches/jsxe2/src/net/sourceforge/jsxe/io/VFSManager.java 2006-08-29 20:33:55 UTC (rev 1200) @@ -26,10 +26,27 @@ package net.sourceforge.jsxe.io; //{{{ Imports + +//{{{ jsXe classes +import net.sourceforge.jsxe.jsXe; +import net.sourceforge.jsxe.EditBus; +import net.sourceforge.jsxe.gui.Messages; +import net.sourceforge.jsxe.gui.ErrorListDialog; +import net.sourceforge.jsxe.msg.VFSUpdate; +import net.sourceforge.jsxe.util.*; +//}}} + +//{{{ Swing classes import javax.swing.JOptionPane; import javax.swing.SwingUtilities; +//}}} + +//{{{ AWT classes import java.awt.Component; import java.awt.Frame; +//}}} + +//{{{ Java classes import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; @@ -37,12 +54,10 @@ import java.util.LinkedList; import java.util.List; import java.util.Vector; -import net.sourceforge.jsxe.gui.ErrorListDialog; -import net.sourceforge.jsxe.msg.VFSUpdate; -import net.sourceforge.jsxe.util.Log; -import net.sourceforge.jsxe.WorkThreadPool; //}}} +//}}} + /** * jEdit's virtual filesystem allows it to transparently edit files * stored elsewhere than the local filesystem, for example on an FTP @@ -315,28 +330,20 @@ * @param parent True if an update should be sent for the path's * parent too */ - public static void sendVFSUpdate(VFS vfs, String path, boolean parent) - { - if(parent) - { + public static void sendVFSUpdate(VFS vfs, String path, boolean parent) { + if (parent) { sendVFSUpdate(vfs,vfs.getParentOfPath(path),false); sendVFSUpdate(vfs,path,false); - } - else - { + } else { // have to do this hack until VFSPath class is written - if(path.length() != 1 && (path.endsWith("/") - || path.endsWith(java.io.File.separator))) + if (path.length() != 1 && (path.endsWith("/") || path.endsWith(java.io.File.separator))) { path = path.substring(0,path.length() - 1); + } - synchronized(vfsUpdateLock) - { - for(int i = 0; i < vfsUpdates.size(); i++) - { - VFSUpdate msg = (VFSUpdate)vfsUpdates - .get(i); - if(msg.getPath().equals(path)) - { + synchronized(vfsUpdateLock) { + for (int i = 0; i < vfsUpdates.size(); i++) { + VFSUpdate msg = (VFSUpdate)vfsUpdates.get(i); + if (msg.getPath().equals(path)) { // don't send two updates // for the same path return; @@ -345,8 +352,7 @@ vfsUpdates.add(new VFSUpdate(path)); - if(vfsUpdates.size() == 1) - { + if (vfsUpdates.size() == 1) { // we were the first to add an update; // add update sending runnable to AWT // thread @@ -357,22 +363,17 @@ } //}}} //{{{ SendVFSUpdatesSafely class - static class SendVFSUpdatesSafely implements Runnable - { - public void run() - { - synchronized(vfsUpdateLock) - { + static class SendVFSUpdatesSafely implements Runnable { + + public void run() { + synchronized(vfsUpdateLock) { // the vfs browser has what you might call // a design flaw, it doesn't update properly // unless the vfs update for a parent arrives // before any updates for the children. sorting // the list alphanumerically guarantees this. - Collections.sort(vfsUpdates, - new MiscUtilities.StringCompare() - ); - for(int i = 0; i < vfsUpdates.size(); i++) - { + Collections.sort(vfsUpdates, new MiscUtilities.StringCompare()); + for (int i = 0; i < vfsUpdates.size(); i++) { EditBus.send((VFSUpdate)vfsUpdates.get(i)); } Added: branches/jsxe2/src/net/sourceforge/jsxe/msg/VFSUpdate.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/msg/VFSUpdate.java (rev 0) +++ branches/jsxe2/src/net/sourceforge/jsxe/msg/VFSUpdate.java 2006-08-29 20:33:55 UTC (rev 1200) @@ -0,0 +1,70 @@ +/* +VFSUpdate.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +Copyright (C) 2000 Slava Pestov +Portions Copyright (C) 2006 Ian Lewis (Ian...@me...) + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +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 General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package net.sourceforge.jsxe.msg; + +import net.sourceforge.jsxe.EBMessage; + +/** + * Message sent when a file or directory changes. + * @author Slava Pestov + * @author Ian Lewis (<a href="mailto:Ian...@me...">Ian...@me...</a>) + * @version $Id: VFSUpdate.java,v 1.3 2002/05/14 07:34:55 spestov Exp $ + * @since jsXe XX.XX + */ +public class VFSUpdate extends EBMessage { + + //{{{ VFSUpdate constructor + /** + * Creates a VFS update message. + * @param path The path in question + */ + public VFSUpdate(String path) { + super(null); + + if (path == null) { + throw new NullPointerException("Path must be non-null"); + } + + this.path = path; + }//}}} + + //{{{ getPath() + /** + * Returns the path that changed. + */ + public String getPath() { + return path; + }//}}} + + //{{{ paramString() + public String paramString() { + return "path=" + path + "," + super.paramString(); + }//}}} + + //{{{ Private members + private String path; + //}}} +} Modified: branches/jsxe2/src/net/sourceforge/jsxe/util/MiscUtilities.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/util/MiscUtilities.java 2006-08-29 20:10:17 UTC (rev 1199) +++ branches/jsxe2/src/net/sourceforge/jsxe/util/MiscUtilities.java 2006-08-29 20:33:55 UTC (rev 1200) @@ -134,70 +134,72 @@ return false; } //}}} - // //{{{ constructPath() method - // /** - // * Constructs an absolute path name from a directory and another - // * path name. This method is VFS-aware. - // * @param parent The directory - // * @param path The path name - // */ - // public static String constructPath(String parent, String path) - // { - // if(MiscUtilities.isURL(path)) - // return path; - // else if(path.startsWith("~")) - // return path; - // else - // { - // // have to handle these cases specially on windows. - // if(OperatingSystem.isDOSDerived()) - // { - // if(path.length() == 2 && path.charAt(1) == ':') - // return path; - // else if(path.length() > 2 && path.charAt(1) == ':') - // { - // if(path.charAt(2) != '\\') - // { - // path = path.substring(0,2) + '\\' - // + path.substring(2); - // } - // - // return resolveSymlinks(path); - // } - // else if(path.startsWith("\\\\")) - // return resolveSymlinks(path); - // } - // else if(OperatingSystem.isUnix()) - // { - // // nice and simple - // if(path.length() > 0 && path.charAt(0) == '/') - // return resolveSymlinks(path); - // } - // } - // - // if(parent == null) - // parent = System.getProperty("user.dir"); - // - // if(OperatingSystem.isDOSDerived() && path.startsWith("\\")) - // parent = parent.substring(0,2); - // - // VFS vfs = VFSManager.getVFSForPath(parent); - // return vfs.constructPath(parent,path); - // } //}}} + //{{{ constructPath() method + /** + * Constructs an absolute path name from a directory and another + * path name. This method is VFS-aware. + * @param parent The directory + * @param path The path name + */ + public static String constructPath(String parent, String path) { + + if (MiscUtilities.isURL(path)) { + return path; + } else { + if (path.startsWith("~")) { + return path; + } else { + // have to handle these cases specially on windows. + if (OperatingSystem.isDOSDerived()) { + if (path.length() == 2 && path.charAt(1) == ':') { + return path; + } else { + if (path.length() > 2 && path.charAt(1) == ':') { + if (path.charAt(2) != '\\') { + path = path.substring(0,2) + '\\' + path.substring(2); + } + + return resolveSymlinks(path); + } else { + if (path.startsWith("\\\\")) { + return resolveSymlinks(path); + } + } + } + } else { + if (OperatingSystem.isUnix()) { + // nice and simple + if (path.length() > 0 && path.charAt(0) == '/') { + return resolveSymlinks(path); + } + } + } + } + } + + if (parent == null) { + parent = jsXe.getHomeDirectory(); + } + + if (OperatingSystem.isDOSDerived() && path.startsWith("\\")) { + parent = parent.substring(0,2); + } + + VFS vfs = VFSManager.getVFSForPath(parent); + return vfs.constructPath(parent,path); + } //}}} - // //{{{ constructPath() method - // /** - // * Constructs an absolute path name from three path components. - // * This method is VFS-aware. - // * @param parent The parent directory - // * @param path1 The first path - // * @param path2 The second path - // */ - // public static String constructPath(String parent, - // String path1, String path2) - // { - // return constructPath(constructPath(parent,path1),path2); - // } //}}} + //{{{ constructPath() method + /** + * Constructs an absolute path name from three path components. + * This method is VFS-aware. + * @param parent The parent directory + * @param path1 The first path + * @param path2 The second path + */ + public static String constructPath(String parent, String path1, String path2) { + return constructPath(constructPath(parent,path1),path2); + } //}}} //{{{ concatPath() method /** Added: branches/jsxe2/src/net/sourceforge/jsxe/util/SegmentBuffer.java =================================================================== --- branches/jsxe2/src/net/sourceforge/jsxe/util/SegmentBuffer.java (rev 0) +++ branches/jsxe2/src/net/sourceforge/jsxe/util/SegmentBuffer.java 2006-08-29 20:33:55 UTC (rev 1200) @@ -0,0 +1,72 @@ +/* +SegmentBuffer.java +:tabSize=4:indentSize=4:noTabs=true: +:folding=explicit:collapseFolds=1: + +Copyright (C) 2001 Slava Pestov + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +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 General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Optionally, you may find a copy of the GNU General Public License +from http://www.fsf.org/copyleft/gpl.txt +*/ + +package net.sourceforge.jsxe.util; + +import javax.swing.text.Segment; + +/** + * An extended segment that you can append text to. + */ +public class SegmentBuffer extends Segment { + + //{{{ SegmentBuffer constructor + public SegmentBuffer(int capacity) + { + ensureCapacity(capacity); + } //}}} + + //{{{ append() method + public void append(char ch) + { + ensureCapacity(count + 1); + array[offset + count] = ch; + count++; + } //}}} + + //{{{ append() method + public void append(char[] text, int off, int len) + { + ensureCapacity(count + len); + System.arraycopy(text,off,array,count,len); + count += len; + } //}}} + + //{{{ Private members + + //{{{ ensureCapacity() method + private void ensureCapacity(int capacity) + { + if(array == null) + array = new char[capacity]; + else if(capacity >= array.length) + { + char[] arrayN = new char[capacity * 2]; + System.arraycopy(array,0,arrayN,0,count); + array = arrayN; + } + } //}}} + + //}}} +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-29 20:10:31
|
Revision: 1199 Author: ian_lewis Date: 2006-08-29 13:10:17 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1199&view=rev Log Message: ----------- Disable building the users manual by default Modified Paths: -------------- trunk/jsxe/build.xml Modified: trunk/jsxe/build.xml =================================================================== --- trunk/jsxe/build.xml 2006-08-29 17:56:30 UTC (rev 1198) +++ trunk/jsxe/build.xml 2006-08-29 20:10:17 UTC (rev 1199) @@ -380,6 +380,7 @@ <copy file="${root.dir}/NEWS" tofile="${build.docs}/NEWS"/> <!-- generate the html manual --> + <!-- <mkdir dir="${build.docs}/manual"/> <xslt basedir="${docs.dir}/manual" destdir="${build.docs}/manual" @@ -388,9 +389,11 @@ <outputproperty name="encoding" value="UTF-8"/> <mapper type="glob" from="*.xml" to="*.html"/> <xmlcatalog refid="docbook-catalog"/> - </xslt> + </xslt> + --> <!-- generate the pdf manual --> + <!-- <mkdir dir="${build.dir}/manual"/> <xslt basedir="${docs.dir}/manual" destdir="${build.dir}/manual" @@ -408,8 +411,8 @@ <include name="*.fo"/> </fileset> </fop> + --> - <javadoc author="true" destdir="${build.javadocs}" doctitle="${app.name} ${app.version} API" locale="en_US" packagenames="*" sourcepath="${build.src}" version="true" windowtitle="${app.name} ${app.version} API"> <link href="${java.javadoc.link}"/> <link href="${xerces.javadoc.link}"/> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ian...@us...> - 2006-08-29 17:56:42
|
Revision: 1198 Author: ian_lewis Date: 2006-08-29 10:56:30 -0700 (Tue, 29 Aug 2006) ViewCVS: http://svn.sourceforge.net/jsxe/?rev=1198&view=rev Log Message: ----------- still can't get catalogs to work Modified Paths: -------------- trunk/jsxe/build.xml trunk/jsxe/buildlib/docbook/catalog.xml Modified: trunk/jsxe/build.xml =================================================================== --- trunk/jsxe/build.xml 2006-08-29 16:06:10 UTC (rev 1197) +++ trunk/jsxe/build.xml 2006-08-29 17:56:30 UTC (rev 1198) @@ -197,11 +197,13 @@ <!-- {{{ catalog used for building docs --> <xmlcatalog id="docbook-catalog"> <catalogpath> - <pathelement location="${docbook.dir}/catalog.xml"/> + <fileset dir="${docbook.dir}" includes="**/catalog.xml"/> </catalogpath> </xmlcatalog> <!-- }}} --> + <echo message="${docbook.dir}"/> + <echo message="${app.name} ${app.version}"/> <echo message="----------------------------------------------------------"/> </target> @@ -396,7 +398,7 @@ style="${docbook.dir}/fo/docbook.xsl"> <outputproperty name="encoding" value="UTF-8"/> <mapper type="glob" from="*.xml" to="*.fo"/> - <xmlcatalog refid="catalog"/> + <xmlcatalog refid="docbook-catalog"/> </xslt> <fop format="application/pdf" @@ -407,10 +409,11 @@ </fileset> </fop> + <javadoc author="true" destdir="${build.javadocs}" doctitle="${app.name} ${app.version} API" locale="en_US" packagenames="*" sourcepath="${build.src}" version="true" windowtitle="${app.name} ${app.version} API"> <link href="${java.javadoc.link}"/> <link href="${xerces.javadoc.link}"/> - </javadoc> + </javadoc> <zip basedir="${build.javadocs}" includes="**/*" zipfile="${build.dir}/${app.name}-${app_version}-api.zip"/> Modified: trunk/jsxe/buildlib/docbook/catalog.xml =================================================================== --- trunk/jsxe/buildlib/docbook/catalog.xml 2006-08-29 16:06:10 UTC (rev 1197) +++ trunk/jsxe/buildlib/docbook/catalog.xml 2006-08-29 17:56:30 UTC (rev 1198) @@ -8,23 +8,27 @@ <rewriteURI uriStartString="http://docbook.sourceforge.net/release/xsl/1.68.1/" - rewritePrefix="file://./docbook/"/> + rewritePrefix="file:///home/ian/src/jsxe/jsxe/buildlib/docbook/"/> <rewriteURI uriStartString="http://docbook.sourceforge.net/release/xsl/current/" - rewritePrefix="file://./docbook/"/> + rewritePrefix="file:///home/ian/src/jsxe/jsxe/buildlib/docbook/"/> <rewriteSystem systemIdStartString="http://docbook.sourceforge.net/release/xsl/1.68.1/" - rewritePrefix="file://./docbook/"/> + rewritePrefix="file:///home/ian/src/jsxe/jsxe/buildlib/docbook/"/> <rewriteSystem systemIdStartString="http://docbook.sourceforge.net/release/xsl/current/" - rewritePrefix="file://./docbook/"/> - + rewritePrefix="file:///home/ian/src/jsxe/jsxe/buildlib/docbook/"/> + + <rewriteSystem + systemIdStartString="http://www.oasis-open.org/docbook/xml/4.4/" + rewritePrefix="file:///home/ian/src/jsxe/jsxe/buildlib/docbook/dtd/"/> + <group id="DocbookDTD" prefer="public"> <system systemId="http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" - uri="file://./docbook/dtd/docbookx.dtd"/> + uri="file:///home/ian/src/jsxe/jsxe/buildlib/docbook/dtd/docbookx.dtd"/> </group> </catalog> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |