// ========================================================================== // Project: Showcase // Copyright: ©2012 7x7 Software, Inc. // License: Licensed under MIT license // ========================================================================== /*global Showcase */
/**
The source objects.
*/ Showcase.sources = SC
.Object.create(SC
.CollectionContent, SC
.TreeItemContent, {
treeItemIsExpanded: true, treeItemIsGrouped: true, treeItemChildren: [ SC.Object.create(SC.TreeItemContent, { treeItemIsExpanded: true, group: true, name: "Demos", subpath: 'demos', treeItemChildren: [ SC.Object.create({ appPath: 'http://demos.sproutcore.com/images_demo', name: "Automatic Image Scaling", view: 'Showcase.mainPage.demoView' }), SC.Object.create({ appPath: 'http://demos.sproutcore.com/big_data_demo', name: "Big Data Lists", view: 'Showcase.mainPage.demoView' }), SC.Object.create({ appPath: 'http://demos.sproutcore.com/child_view_layout_demo', name: "Child View Layout Plugins", view: 'Showcase.mainPage.demoView' }), SC.Object.create({ appPath: 'http://demos.sproutcore.com/data_drag_demo', name: "Dragging Things In", view: 'Showcase.mainPage.demoView' }), SC.Object.create({ appPath: 'http://demos.sproutcore.com/flot_demo', name: "Flot (or other 3rd Party) Integration", view: 'Showcase.mainPage.demoView' }), SC.Object.create({ appPath: 'http://demos.sproutcore.com/design_mode_demo', name: "Responsive Design", view: 'Showcase.mainPage.demoView' }), SC.Object.create({ appPath: 'http://demos.sproutcore.com/lively_view_demo', name: "Transition Animation Plugins", view: 'Showcase.mainPage.demoView' }), SC.Object.create({ appPath: 'http://demos.sproutcore.com/color_demo', name: "Working with Color", view: 'Showcase.mainPage.demoView' }) ] }), SC.Object.create(SC.TreeItemContent, { treeItemIsExpanded: true, group: true, name: "Views & Controls", subpath: 'ui', treeItemChildren: [ SC.Object.create({ name: "SC.ButtonView", view: 'Showcase.viewsPage.buttonViews' }), SC.Object.create({ name: "SC.CheckboxView", view: 'Showcase.viewsPage.checkboxViews' }), SC.Object.create({ name: "SC.ContainerView", view: 'Showcase.viewsPage.containerViews' }), SC.Object.create({ name: "SC.DateFieldView", view: 'Showcase.viewsPage.dateFieldViews' }), SC.Object.create({ name: "SC.DisclosureView", view: 'Showcase.viewsPage.disclosureViews' }), SC.Object.create({ name: "SC.GridView", view: 'Showcase.viewsPage.gridViews' }), SC.Object.create({ name: "SC.ImageButtonView", view: 'Showcase.viewsPage.imageButtonViews' }), SC.Object.create({ name: "SC.ImageView", view: 'Showcase.viewsPage.imageViews' }), SC.Object.create({ name: "SC.LabelView", view: 'Showcase.viewsPage.labelViews' }), SC.Object.create({ name: "SC.ListView", view: 'Showcase.viewsPage.listViews' }), SC.Object.create({ name: "SC.PopUpButtonView", view: 'Showcase.viewsPage.popupButtonViews' }), SC.Object.create({ name: "SC.ProgressView", view: 'Showcase.viewsPage.progressViews' }), SC.Object.create({ name: "SC.RadioView", view: 'Showcase.viewsPage.radioViews' }), SC.Object.create({ name: "SC.ScrollView", view: 'Showcase.viewsPage.scrollViews' }), SC.Object.create({ name: "SC.SegmentedView", view: 'Showcase.viewsPage.segmentedViews' }), SC.Object.create({ name: "SC.SelectView", view: 'Showcase.viewsPage.selectViews' }), SC.Object.create({ name: "SC.SliderView", view: 'Showcase.viewsPage.sliderViews' }), SC.Object.create({ name: "SC.SourceListView", view: 'Showcase.viewsPage.sourceListViews' }), SC.Object.create({ name: "SC.SplitView", view: 'Showcase.viewsPage.splitViews' }), SC.Object.create({ name: "SC.StackedView", view: 'Showcase.viewsPage.stackedViews' }), SC.Object.create({ name: "SC.StaticContentView", view: 'Showcase.viewsPage.staticContentViews' }), SC.Object.create({ name: "SC.TabView", view: 'Showcase.viewsPage.tabViews' }), SC.Object.create({ name: "SC.TextFieldView", view: 'Showcase.viewsPage.textFieldViews' }), SC.Object.create({ name: "SC.ToolbarView", view: 'Showcase.viewsPage.toolbarViews' }), SC.Object.create({ name: "SC.WebView", view: 'Showcase.viewsPage.webViews' }), SC.Object.create({ name: "SC.WellView", view: 'Showcase.viewsPage.wellViews' }), SC.Object.create({ name: "SC.WorkspaceView", view: 'Showcase.viewsPage.workspaceViews' }) ] }) // SC.Object.create({ // treeItemIsExpanded: true, // group: true, // name: "Recipes", // treeItemChildren: [] // }), // SC.Object.create({ // treeItemIsExpanded: true, // group: true, // name: "Labs", // treeItemChildren: [] // }) ]
});
/**
The mediating controller for the source list object and the delegate for the source list.
*/ Showcase.sourceTreeController = SC
.TreeController.create({
/** Display top level items as groups. */ treeItemIsGrouped: YES, /** Don't allow multiple selection. */ allowsMultipleSelection: NO, /** Don't allow empty selection. */ allowsEmptySelection: YES, /** Update the URL to match the selection. */ selectionDidChange: function () { var content = this.get('content'), selection = this.get('selection'); if (selection && selection.firstObject()) { var object = selection.firstObject(), section; // Determine which group the selection belongs to. content.get('treeItemChildren').forEach(function (group) { if (group.get('treeItemChildren').indexOf(object) >= 0) { section = group; } }); // Set the location to be a combination of the section and the item. We // use the name in the URL rather than having to add extra properties to // our source objects. // Use informLocation to avoid triggering a route call, since the // selection change already does what we want. SC.routes.informLocation('location', section.get('subpath') + '/' + object.get('name')); } else { // Clear the last location SC.routes.informLocation('location', null); } }.observes('selection')
});