From: <ls...@us...> - 2009-10-13 01:14:12
|
Revision: 22157 http://gmod.svn.sourceforge.net/gmod/?rev=22157&view=rev Author: lstein Date: 2009-10-13 01:13:58 +0000 (Tue, 13 Oct 2009) Log Message: ----------- reorganized former menubar into a dropdown menu and a tabbed section Modified Paths: -------------- Generic-Genome-Browser/trunk/conf/languages/POSIX.pm Generic-Genome-Browser/trunk/htdocs/css/gbrowse.css Generic-Genome-Browser/trunk/htdocs/css/gbrowse_warm.css Generic-Genome-Browser/trunk/htdocs/js/controller.js Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/Render/HTML.pm Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/Render.pm Added Paths: ----------- Generic-Genome-Browser/trunk/htdocs/css/dropdown/ Generic-Genome-Browser/trunk/htdocs/css/dropdown/default_theme.css Generic-Genome-Browser/trunk/htdocs/css/dropdown/dropdown.css Generic-Genome-Browser/trunk/htdocs/css/dropdown/helper.css Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/ Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/favicon.ico Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/icon.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-down-on.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-down-open.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-down.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-left-on.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-left-open.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-left.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-right-on.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-right-open.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-right.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-up-on.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-up-open.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-up.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/pattern1.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/pattern2.png Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/pattern3.png Generic-Genome-Browser/trunk/htdocs/js/tabs.js Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/DataLoader/generic.pm Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/DataLoader/gff3.pm Modified: Generic-Genome-Browser/trunk/conf/languages/POSIX.pm =================================================================== --- Generic-Genome-Browser/trunk/conf/languages/POSIX.pm 2009-10-12 22:19:14 UTC (rev 22156) +++ Generic-Genome-Browser/trunk/conf/languages/POSIX.pm 2009-10-13 01:13:58 UTC (rev 22157) @@ -509,4 +509,8 @@ ("wiggle" files) and uploaded files can not be shared using DAS.</i> END + MAIN_PAGE => 'Browser', + CUSTOM_TRACKS_PAGE => 'Upload and Share Tracks', + SETTINGS_PAGE => 'Preferences', + }; Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/default_theme.css =================================================================== --- Generic-Genome-Browser/trunk/htdocs/css/dropdown/default_theme.css (rev 0) +++ Generic-Genome-Browser/trunk/htdocs/css/dropdown/default_theme.css 2009-10-13 01:13:58 UTC (rev 22157) @@ -0,0 +1,139 @@ +@charset "UTF-8"; + +/** + * Flickr CSS Drop-Down Menu Theme + * + * @file default.css + * @name Flickr + * @version beta + * @type transitional + * @browsers Windows: IE5+, Opera7+, Firefox1+ + * Mac OS: Safari2+, Firefox2+ + * + * @link http://www.lwis.net/ + * @copyright 2008 Live Web Institute. All Rights Reserved. + * + */ + +/* @import "helper.css"; */ + + +/*-------------------------------------------------/ + * @section Base Drop-Down Styling + * @structure ul (unordered list) + * ul li (list item) + * ul li a (links) + * /*\.class|(li|a):hover/ + * @level sep ul + */ + + +ul.dropdown { + padding-bottom: 1px; + background: url(images/pattern1.png) 0 100% repeat-x; + font: bold 13px/normal Arial, Helvetica, sans-serif; +} + + ul.dropdown li { + padding: 4px 6px; + color: #0063dc; + } + + ul.dropdown li.divider { + border-top: solid 1px #e5e5e5; + } + + ul.dropdown li.hover, + ul.dropdown li:hover { + color: #0063dc; + } + + ul.dropdown a:link, + ul.dropdown a:visited { color: #0063dc; text-decoration: none; } + ul.dropdown a:hover { color: #0063dc; text-decoration: underline; } + ul.dropdown a:active { color: #ff0084; } + + + /* -- level mark -- */ + + ul.dropdown ul { + width: 150px; + padding: 3px 6px; + border-style: solid; + border-width: 1px; + border-color: #f0f0f0 #666 #666 #f0f0f0; + background-color: #fff; + font-weight: normal; + font-size: 11px; + } + + ul.dropdown ul li { + } + + + +/*-------------------------------------------------/ + * @section Support Class `dir` + * @level sep ul, .class + */ + + +ul.dropdown *.dir { + padding-right: 25px; + background-image: url(images/nav-arrow-down.png); + background-position: 95% 50%; + background-repeat: no-repeat; +} + + +/* -- Components override -- */ + +ul.dropdown-vertical ul { + top: 0; + left: 100%; +} + +ul.dropdown-vertical-rtl ul { + right: 100%; +} + +ul.dropdown-horizontal, +ul.dropdown-linear, +ul.dropdown-upward { + width: 100%; +} + +ul.dropdown-horizontal ul *.dir { + padding-right: 25px; + background-image: url(images/nav-arrow-right.png); + background-position: 100% 50%; + background-repeat: no-repeat; +} + +ul.dropdown-upward *.dir { + background-image: url(images/nav-arrow-up.png); +} + +ul.dropdown-vertical *.dir { + background-image: url(images/nav-arrow-right.png); + background-position: 180px 50%; +} + +ul.dropdown-vertical ul *.dir, +ul.dropdown-upward ul *.dir { + background-image: url(images/nav-arrow-right.png); + background-position: 100% 50%; +} + +ul.dropdown-vertical-rtl *.dir { + padding-right: 6px; + padding-left: 25px; + background-image: url(images/nav-arrow-left.png); + background-position: 5px 50%; +} + +ul.dropdown-vertical-rtl ul *.dir { + padding-right: 0; + background-image: url(images/nav-arrow-left.png); + background-position: 0 50%; +} \ No newline at end of file Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/dropdown.css =================================================================== --- Generic-Genome-Browser/trunk/htdocs/css/dropdown/dropdown.css (rev 0) +++ Generic-Genome-Browser/trunk/htdocs/css/dropdown/dropdown.css 2009-10-13 01:13:58 UTC (rev 22157) @@ -0,0 +1,83 @@ +@charset "UTF-8"; + +/** + * Horizontal CSS Drop-Down Menu Module + * + * @file dropdown.css + * @package Dropdown + * @version 0.7.1 + * @type Transitional + * @stacks 597-599 + * @browsers Windows: IE6+, Opera7+, Firefox1+ + * Mac OS: Safari2+, Firefox2+ + * + * @link http://www.lwis.net/ + * @copyright 2006-2008 Live Web Institute. All Rights Reserved. + * + */ + +ul.dropdown, +ul.dropdown li, +ul.dropdown ul { + list-style: none; + margin: 0; + padding: 0; +} + +ul.dropdown { + position: relative; + z-index: 597; + float: left; +} + +ul.dropdown li { + float: left; + line-height: 1.3em; + vertical-align: middle; + zoom: 1; +} + +ul.dropdown li.hover, +ul.dropdown li:hover { + position: relative; + z-index: 599; + cursor: default; +} + +ul.dropdown ul { + visibility: hidden; + position: absolute; + top: 100%; + left: 0; + z-index: 598; + width: 100%; +} + +ul.dropdown ul li { + float: none; +} + +ul.dropdown ul ul { + top: 1px; + left: 99%; +} + +ul.dropdown li:hover > ul { + visibility: visible; +} + + + + + +ul.dropdown li.rtl ul { + top: 100%; + right: 0; + left: auto; +} + +ul.dropdown li.rtl ul ul { + top: 1px; + right: 99%; + left: auto; +} \ No newline at end of file Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/helper.css =================================================================== --- Generic-Genome-Browser/trunk/htdocs/css/dropdown/helper.css (rev 0) +++ Generic-Genome-Browser/trunk/htdocs/css/dropdown/helper.css 2009-10-13 01:13:58 UTC (rev 22157) @@ -0,0 +1,37 @@ + +* { + margin: 0; + padding: 0; + outline: none; +} + +body { + padding: 50px; + background: #fff url(images/pattern3.png) 0 0 repeat-x; + font: 14px/normal Tahoma, Arial, Helvetica, sans-serif; +} + +p { margin-bottom: 1em; } + +ul.classic { + list-style: disc; + margin-bottom: 1em; + padding-left: 2em; +} + +h1,h2,h3 { + margin-bottom: .5em; + font-family: Arial, Helvetica, sans-serif; +} + +h1 { + border-bottom: solid 1px #d9d9d9; + font-weight: normal; + font-size: 180%; + text-indent: 5px; + letter-spacing: -1px; +} + +.dropdown-upward { + margin-top: 400px !important; +} \ No newline at end of file Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/favicon.ico =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/favicon.ico ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/icon.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/icon.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-down-on.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-down-on.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-down-open.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-down-open.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-down.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-down.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-left-on.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-left-on.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-left-open.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-left-open.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-left.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-left.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-right-on.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-right-on.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-right-open.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-right-open.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-right.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-right.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-up-on.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-up-on.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-up-open.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-up-open.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-up.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/nav-arrow-up.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/pattern1.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/pattern1.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/pattern2.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/pattern2.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/pattern3.png =================================================================== (Binary files differ) Property changes on: Generic-Genome-Browser/trunk/htdocs/css/dropdown/images/pattern3.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: Generic-Genome-Browser/trunk/htdocs/css/gbrowse.css =================================================================== --- Generic-Genome-Browser/trunk/htdocs/css/gbrowse.css 2009-10-12 22:19:14 UTC (rev 22156) +++ Generic-Genome-Browser/trunk/htdocs/css/gbrowse.css 2009-10-13 01:13:58 UTC (rev 22157) @@ -31,6 +31,7 @@ } DIV { margin: 0 } H1 { color: navy; + font-size: medium; font-family: sans-serif; } H2 { color: navy; Modified: Generic-Genome-Browser/trunk/htdocs/css/gbrowse_warm.css =================================================================== --- Generic-Genome-Browser/trunk/htdocs/css/gbrowse_warm.css 2009-10-12 22:19:14 UTC (rev 22156) +++ Generic-Genome-Browser/trunk/htdocs/css/gbrowse_warm.css 2009-10-13 01:13:58 UTC (rev 22157) @@ -36,3 +36,46 @@ font-size: small; margin-left: 1em; } +.tabmenu_active { cursor: pointer; + color: black; + background-color: beige; + font-size: 10pt; + font-weight: bold; + font-family: sans-serif; + padding-top: 5px; + padding-left: 5px; + padding-right: 5px; + } +.tabmenu_inactive { cursor: pointer; + color: blue; + font-size: 10pt; + background-color: transparent; + font-weight: bold; + font-family: sans-serif; + padding-top: 5px; + padding-left: 5px; + padding-right: 5px; + } +.tabmenu_inactive:hover { + text-decoration: underline; +} +.tabbed { + background-color: beige; +} +.tabmenu { + background-color: white; +} +.menutitle { + color: blue; + font-size: 10pt; + background-color: transparent; + font-weight: bold; + font-family: sans-serif; + cursor: pointer; + padding-top: 5px; + padding-left: 5px; + padding-right: 5px; +} +.menutitle:hover { + text-decoration: underline; +} Modified: Generic-Genome-Browser/trunk/htdocs/js/controller.js =================================================================== --- Generic-Genome-Browser/trunk/htdocs/js/controller.js 2009-10-12 22:19:14 UTC (rev 22156) +++ Generic-Genome-Browser/trunk/htdocs/js/controller.js 2009-10-13 01:13:58 UTC (rev 22157) @@ -967,6 +967,9 @@ Details.prototype.initialize(); if ($('autocomplete_choices') != null) initAutocomplete(); + + // These statements initialize the tabbing + new TabbedSection(['main_page','custom_tracks_page','settings_page']); } // set the colors for the rubberband regions Added: Generic-Genome-Browser/trunk/htdocs/js/tabs.js =================================================================== --- Generic-Genome-Browser/trunk/htdocs/js/tabs.js (rev 0) +++ Generic-Genome-Browser/trunk/htdocs/js/tabs.js 2009-10-13 01:13:58 UTC (rev 22157) @@ -0,0 +1,38 @@ +// $Id$ + +var TabbedSection = Class.create( { + + initialize: + function (tabs,initial) { + if (initial==null) initial = 0; + this.tab_divs = tabs.map(function(e) { return $(e) }); + this.tab_menus = tabs.map(function(e) { return $(e+'_select') }); + for (var i=0;i<tabs.length;i++) { + if (i != initial) this.tab_divs[i].hide(); + Event.observe(this.tab_menus[i], + 'click', + this.select_tab_event.bindAsEventListener(this)); + this.tab_menus[i].className = + i==initial ? 'tabmenu_active' : 'tabmenu_inactive'; + } + }, + + select_tab_event: + function(event) { + var menu = Event.element(event); + var id = menu.id; + var whichOne; + for (var i=0;i<this.tab_menus.length;i++) { + if (this.tab_menus[i].id == id) + whichOne=i; + } + this.tab_menus.each( + function(e) { + e.className='tabmenu_inactive'; + }); + this.tab_divs.each(function(e) {e.hide()}); + this.tab_menus[whichOne].className='tabmenu_active'; + this.tab_divs[whichOne].show(); + } + +}); // end Class.create \ No newline at end of file Added: Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/DataLoader/generic.pm =================================================================== --- Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/DataLoader/generic.pm (rev 0) +++ Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/DataLoader/generic.pm 2009-10-13 01:13:58 UTC (rev 22157) @@ -0,0 +1,154 @@ +package Bio::Graphics::Browser2::DataLoader::generic; + +# $Id$ +use strict; +use Bio::DB::SeqFeature::Store; +use Carp 'croak'; +use base 'Bio::Graphics::Browser2::DataLoader'; + +sub start_load { + my $self = shift; + my $track_name = $self->track_name; + my $data_path = $self->data_path; + + my $db = $self->create_database($data_path); + warn "db = $db"; + my $loader_class = $self->Loader; + eval "require $loader_class" unless $loader_class->can('new'); + my $loader = $loader_class->new(-store=> $db, + -fast => 0, + -index_subfeatures=>0, + ); + warn "starting load"; + $loader->start_load(); + $self->{loader} = $loader; + $self->{conflines} = []; + $self->state('config'); +} + +sub Loader { + croak "The Loader() class method must be implemented in a subclass"; +} + +sub finish_load { + my $self = shift; + + $self->loader->finish_load(); + my $db = $self->loader->store; + my $conf = $self->conf_fh; + my $trackname = $self->track_name; + my $dsn = $self->dsn; + my $backend = $self->backend; + + my $trackno = 0; + my $loadid = $self->loadid; + $self->set_status('creating configuration'); + + print $conf <<END; +[$loadid:database] +db_adaptor = Bio::DB::SeqFeature::Store +db_args = -adaptor $backend + -dsn $dsn + +END + + if (my @lines = @{$self->{conflines}}) { # good! user has provided some config hints + my $in_sub; + for my $line (@lines) { + if ($line =~ /^\[/) { # overwrite track names to avoid collisions + my $trackname = $self->new_track_label; + print $conf "[$trackname]\n"; + print $conf "database = $loadid\n" ; + print $conf "category = My Tracks:Uploaded Tracks:",$self->track_name,"\n"; + } elsif ($line =~ s/(=\s*)(sub .*)/$1 1 # no user subs allowed! $2/) { + $in_sub++; + print $conf $line; + } elsif ($in_sub && $line =~ /^\s+/) { # continuation line + $line =~ s/^/# /; # continuation line of + print $conf $line; + } else { + undef $in_sub; + print $conf $line; + } + } + } else { # make something up + my @types = eval {$db->toplevel_types}; + @types = $db->types unless @types; + my $filename = $self->track_name; + for my $t (@types) { + my $trackname = $self->new_track_label; + + my ($glyph,$stranded); + # start of a big heuristic section + if ($t =~ /gene|cds|exon|mRNA|transcript/i) { + $glyph = 'gene'; + $stranded = 0; + } else { + $glyph = 'segments'; + $stranded = 1; + } + + + print $conf <<END; +[$trackname] +database = $loadid +feature = $t +glyph = $glyph +bgcolor = blue +label = 1 +stranded = $stranded +connector = solid +balloon hover = sub {my \$f=shift;join ' ',\$f->attributes('Note')} +category = My Tracks:Uploaded Tracks:$filename +key = $t + +END + } + } +} + +sub loader {shift->{loader}} +sub state { + my $self = shift; + my $d = $self->{state}; + $self->{state} = shift if @_; + $d; +} +sub load_line { + my $self = shift; + my $line = shift; + + my $old_state = $self->state; + my $state = $self->_state_transition($old_state,$line); + + if ($state eq 'data') { + $self->loader->load_line($line); + } elsif ($state eq 'config') { + push @{$self->{conflines}},$line; + } + $self->state($state) if $state ne $old_state; +} + +# shamelessly copied from Bio::Graphics:;FeatureFile. +sub _state_transition { + my $self = shift; + my ($current_state,$line) = @_; + + if ($current_state eq 'data') { + return 'config' if $line =~ m/^\s*\[([^\]]+)\]/; # start of a configuration section + } + + elsif ($current_state eq 'config') { + return 'data' if $line =~ /^\#\#(\w+)/; # GFF3 meta instruction + return 'data' if $line =~ /^reference\s*=/; # feature-file reference sequence directive + + return 'config' if $line =~ /^\s*$/; #empty line + return 'config' if $line =~ m/^\[([^\]]+)\]/; # section beginning + return 'config' if $line =~ m/^[\w\s]+=/; # arg = value + return 'config' if $line =~ m/^\s+(.+)/; # continuation line + return 'config' if $line =~ /^\#/; # comment -not a meta + return 'data'; + } + return $current_state; +} +1; Added: Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/DataLoader/gff3.pm =================================================================== --- Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/DataLoader/gff3.pm (rev 0) +++ Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/DataLoader/gff3.pm 2009-10-13 01:13:58 UTC (rev 22157) @@ -0,0 +1,12 @@ +package Bio::Graphics::Browser2::DataLoader::gff3; + +# $Id$ +use strict; +use base 'Bio::Graphics::Browser2::DataLoader::generic'; + +sub Loader { + return 'Bio::DB::SeqFeature::Store::GFF3Loader'; +} + + +1; Modified: Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/Render/HTML.pm =================================================================== --- Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/Render/HTML.pm 2009-10-12 22:19:14 UTC (rev 22156) +++ Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/Render/HTML.pm 2009-10-13 01:13:58 UTC (rev 22157) @@ -37,17 +37,11 @@ my $html = ''; $html .= $self->render_user_header; - if ($self->setting('login script')) { - $html .= $self->render_login; - } - $html .= $self->render_title($title,$self->state->{name} && @$features == 0); $html .= $self->html_frag('html1',$self->state); - $html .= $self->render_instructions; return $err - . $self->toggle({nodiv=>1},'banner','',$html) - . $self->render_links; + . $self->toggle({nodiv=>1},'banner','',$html); } sub render_error_div { @@ -71,6 +65,27 @@ ); } +sub render_tabbed_pages { + my $self = shift; + my ($main_html,$custom_tracks_html,$settings_html) = @_; + my $main_title = $self->tr('MAIN_PAGE'); + my $custom_tracks_title = $self->tr('CUSTOM_TRACKS_PAGE'); + my $settings_title = $self->tr('SETTINGS_PAGE'); + + my $html = ''; + $html .= div({-id=>'tabbed_section',-class=>'tabbed'}, + div({-id=>'tabbed_menu',-class=>'tabmenu'}, + span({id=>'main_page_select'}, $main_title), + span({id=>'custom_tracks_page_select'},$custom_tracks_title), + span({id=>'settings_page_select'},$settings_title) + ), + span({-id=>'main_page'}, $main_html), + span({-id=>'custom_tracks_page'},$custom_tracks_html), + span({-id=>'settings_page'}, $settings_html) + ); + return $html; +} + sub render_user_head { my $self = shift; my $settings = $self->state; @@ -272,6 +287,7 @@ balloon.config.js GBox.js ajax_upload.js + tabs.js controller.js ); @@ -293,6 +309,8 @@ my $stylesheet = $self->setting('stylesheet')||'/gbrowse/gbrowse.css'; push @stylesheets,{src => $self->globals->resolve_path('css/tracks.css','url')}; push @stylesheets,{src => $self->globals->resolve_path('css/karyotype.css','url')}; + push @stylesheets,{src => $self->globals->resolve_path('css/dropdown/dropdown.css','url')}; + push @stylesheets,{src => $self->globals->resolve_path('css/dropdown/default_theme.css','url')}; push @stylesheets,{src => $self->globals->resolve_path($titlebar,'url')}; # colors for "rubberband" selection @@ -368,6 +386,7 @@ GBox.allowEventHandlers = true; GBox.opacity = 1; GBox.fontFamily = 'sans-serif'; +GBox.stemHeight = 0; END ; @@ -458,14 +477,14 @@ $html = ''; if ($session->private) { - $html .= div({-style=>'float:right;font-weight:bold;color:black;'}, + $html .= span({-style=>'float:right;font-weight:bold;color:black;'}, 'Welcome, '.$session->username.'.') . br() . - div({-style => $style, - -title => 'Click here to log out from '.$session->username.'', - -onMouseDown => 'location.href=\'?id=logout\';', - -onMouseOver => 'this.style.textDecoration=\'underline\'', - -onMouseOut => 'this.style.textDecoration=\'none\''}, 'Log Out') . - div({-style=>'float:right;font-weight:bold;color:black;'}, ' '); + span({-style => $style, + -title => 'Click here to log out from '.$session->username.'', + -onMouseDown => 'location.href=\'?id=logout\';', + -onMouseOver => 'this.style.textDecoration=\'underline\'', + -onMouseOut => 'this.style.textDecoration=\'none\''}, 'Log Out') . + span({-style=>'float:right;font-weight:bold;color:black;'}, ' '); $title = 'Click here to change your account settings'; $text = 'My Account'; @@ -477,12 +496,14 @@ $click .= 'load_login_balloon(event,\''.$session->id.'\',false,false);'; } - $html .= div({-style => $style, -title => $title, -onMouseDown => $click, + $html .= span({-style => $style, -title => $title, -onMouseDown => $click, -onMouseOver => 'this.style.textDecoration=\'underline\'', -onMouseOut => 'this.style.textDecoration=\'none\''}, $text); - my $container = div({-style=>'float:right;'},$html); + return $settings->{head} ? $html : ''; + my $container = span({-style=>'float:right;'},$html); + return $settings->{head} ? $container : ''; } @@ -552,6 +573,72 @@ : ''; } +# sub render_actionmenu { +# my $self = shift; +# my $login = $self->setting('login script') ? $self->render_login : ''; +# my $file_menu = br([qw(one two three four)]); +# return div({-id=>'actionmenu', +# -style=>'background-color:lightgray'}, +# $login, +# span({-class=>'menutitle', +# -onMouseDown=>"GBox.showTooltip(event,'$file_menu',0)" +# },'File'), +# span({-class=>'menutitle'},'Help')); +# } + +sub render_actionmenu { + my $self = shift; + my $settings = $self->state; + + my $svg_link = HAVE_SVG + ? a({-href=>'?make_image=GD::SVG',-target=>'_blank'}, $self->tr('SVG_LINK')) + : ''; + + my $pdf_link = HAVE_SVG && $self->can_generate_pdf() + ? a({-href=>'?make_image=PDF', -target=>'_blank'},$self->tr('PDF_LINK')) + : ''; + + my $reset_link = a({-href=>'?reset=1',-class=>'reset_button'}, $self->tr('RESET')); + my $help_link = a({-href=>$self->general_help(),-target=>'help'},$self->tr('Help')); + my $plugin_link = $self->plugin_links($self->plugins); + my $galaxy_link = a({-href=>'javascript:'.$self->galaxy_link}, $self->tr('SEND_TO_GALAXY')); + my $image_link = a({-href=>'?make_image=GD',-target=>'_blank'}, $self->tr('IMAGE_LINK')); + my $rand = substr(md5_hex(rand),0,5); + + + my @standard_links = ($reset_link); + + + my @segment_showing_links =( + a({-href=>'?action=bookmark'},$self->tr('BOOKMARK')), + a({-href => '#', + -onMouseDown => "GBox.showTooltip(event,'url:?action=share_track;track=all')"}, + ($self->tr('SHARE_ALL') || "Share These Tracks" )), + $plugin_link, + $galaxy_link, + $image_link, + $svg_link, + $pdf_link, + ); + + my $segment_present = $self->region->feature_count == 1; + my @links = $segment_present ? (@segment_showing_links,@standard_links) + : @standard_links; + + my $login = $self->setting('login script') ? $self->render_login : ''; + + my $file_menu = ul({-id => 'actionmenu', + -class => 'dropdown downdown-horizontal'}, + li({-class=>'dir'},'File', + ul(li(\@links)) + ), + li({-class=>'dir'},'About', + ul(li($help_link))), + ); + return $file_menu.$login.br({-clear=>'all'}); +} + + sub render_links { my $self = shift; my $settings = $self->state; @@ -1040,34 +1127,40 @@ ) ) ) . end_form(); - - return $self->toggle( 'Display_settings', $content ); +# return $self->toggle( 'Display_settings', $content ); + return div($content); } # This surrounds the external table with a toggle sub render_toggle_external_table { my $self = shift; - return a({-name=>'upload_tracks'}, - $self->toggle('upload_tracks', - $self->render_external_table() - ) - ); + return div($self->render_external_table()); +# return a({-name=>'upload_tracks'}, +# $self->toggle('upload_tracks', +# $self->render_external_table() +# ) +# ); } sub render_toggle_userdata_table { my $self = shift; - return $self->toggle('userdata_table', - $self->render_userdata_table(), - $self->userdata_upload(), - ); + return div($self->render_userdata_table(), + $self->userdata_upload()); +# return $self->toggle('userdata_table', +# $self->render_userdata_table(), +# $self->userdata_upload(), +# ); } sub render_toggle_import_table { my $self = shift; - return $self->toggle('userimport_table', - $self->render_userimport_table(), - $self->userdata_import(), - ); + return div(h2('Imported Tracks'), + $self->render_userimport_table(), + $self->userdata_import()); +# return $self->toggle('userimport_table', +# $self->render_userimport_table(), +# $self->userdata_import(), +# ); } sub render_external_table { @@ -1174,8 +1267,8 @@ sub render_userimport_table { my $self = shift; my $html = div( { -id => 'userimport_table_div',-class=>'uploadbody' }, - # foo - ); + '' + ); } sub list_userdata { @@ -1317,7 +1410,7 @@ END ; - return $html; + return h2('Upload and Share').$html; } sub get_uploaded_file_info { Modified: Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/Render.pm =================================================================== --- Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/Render.pm 2009-10-12 22:19:14 UTC (rev 22156) +++ Generic-Genome-Browser/trunk/lib/Bio/Graphics/Browser2/Render.pm 2009-10-13 01:13:58 UTC (rev 22157) @@ -634,43 +634,70 @@ my $title = $self->generate_title($features); - print $self->render_html_start($title); - print $self->render_top($title,$features); - print $self->render_navbar($region->seg); + my $output; + $output .= $self->render_html_start($title); + $output .= $self->render_actionmenu; + $output .= $self->render_top($title,$features); + +# my $main_page = $self->render_instructions; +# $main_page .= $self->render_links(); + + my $main_page .= $self->render_navbar($region->seg); + if ($region->feature_count > 1) { - print $self->render_multiple_choices($features,$self->state->{name}); - print $self->render_toggle_track_table; - print $self->render_upload_share_section; + $main_page .= $self->render_multiple_choices($features,$self->state->{name}); + $main_page .= $self->render_toggle_track_table; } elsif (my $seg = $region->seg) { - print $self->render_panels($seg,{overview=>1,regionview=>1,detailview=>1}); - print $self->render_toggle_track_table; - print $self->render_upload_share_section; - print $self->render_galaxy_form($seg); + $main_page .= $self->render_panels($seg,{overview=>1,regionview=>1,detailview=>1}); + $main_page .= $self->render_toggle_track_table; + $main_page .= $self->render_galaxy_form($seg); } else { - print $self->render_toggle_track_table; - print $self->render_upload_share_section; + $main_page .= $self->render_toggle_track_table; } - print $self->render_global_config(); - print $self->render_bottom($features); - if (param('confirm') && param('code') && param('id')) { - print $self->render_login_account_confirm(param('code')); - } + my $upload_share = $self->render_upload_share_section; + my $global_config = $self->render_global_config; - if (param('openid_confirm') && param('page') && param('s')) { - print $self->render_login_openid_confirm(param('page'),param('s')); - } + $output .= $self->render_tabbed_pages($main_page,$upload_share,$global_config); + $output .= $self->render_bottom($features); + + warn "got here"; + + print $output; } +sub render_actionmenu { + my $self = shift; + croak "implement in subclass"; +} + +sub render_tabbed_pages { + my $self = shift; + my ($main,$upload_share,$config) = @_; + croak "implement in subclass"; +} + +sub render_login_section { + my $self = shift; + my $output = ''; + + if (param('confirm') && param('code') && param('id')) { + $output .= $self->render_login_account_confirm(param('code')); + }elsif (param('openid_confirm') && param('page') && param('s')) { + $output .= $self->render_login_openid_confirm(param('page'),param('s')); + } + return $output; +} + sub render_upload_share_section { my $self = shift; if ($self->setting('activate userdata table')) { - return $self->render_toggle_userdata_table. - $self->render_toggle_import_table; + return div($self->render_toggle_userdata_table, + $self->render_toggle_import_table); } else { return $self->render_toggle_external_table; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |