blob: 7def1eafc5d73859817e58c7dee84c8a6e316d5f [file] [log] [blame]
/**
*
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*
*/
grammar org.eclipse.osbp.xtext.perspective.PerspectiveDsl with org.eclipse.osbp.xtext.oxtype.OXtype
import "http://osbp.eclipse.org/xtext/perspective/PerspectiveDsl"
import "http://www.eclipse.org/xtext/common/JavaVMTypes" as jvmTypes
import "http://osbp.eclipse.org/xtext/table/TableDSL" as table
import "http://osbp.eclipse.org/xtext/chart/ChartDSL" as chart
import "http://osbp.eclipse.org/xtext/datainterchange/DataDSL" as data
import "http://osbp.eclipse.org/xtext/dialogdsl/DialogDSL" as dialog
import "http://osbp.eclipse.org/xtext/reportdsl/ReportDSL" as report
import "http://osbp.eclipse.org/xtext/organizationdsl/OrganizationDsl" as organization
import "http://osbp.eclipse.org/xtext/topologydsl/TopologyDSL" as topology
import "http://osbp.eclipse.org/xtext/action/ActionDSL" as action
import "http://osbp.eclipse.org/xtext/blip/BlipDSL" as blip
import "http://osbp.eclipse.org/dsl/dto/v1" as dto
import "http://osbp.eclipse.org/dsl/common/types/v1" as types
import "http://www.eclipse.org/emf/2002/Ecore" as ecore
PerspectiveModel:
importSection=XImportSection?
packages+=PerspectivePackage*;
PerspectivePackage:
{PerspectivePackage} 'package' name=QualifiedName
('{' (perspectives+=Perspective)* '}')?;
Perspective:
{Perspective} 'perspective' name=TRANSLATABLEID
(description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
('process' process=[blip::Blip] 'usertask' userTask=[blip::BlipUserTask])?
(('icon' iconURI=STRING)? &
('accessibility' accessibilityPhrase=STRING)? &
('toolbar' toolbar=[action::ActionToolbar])?)
'{' (elements+=PerspectiveElement)*
('eventManager' eventmanager=PerspectiveEventManager)?
'}'
;
PerspectiveElement:
PerspectiveSashContainer | PerspectivePartStack | PerspectivePart;
PerspectiveSashContainer:
{PerspectiveSashContainer} 'sashContainer' elementId=ID
(('orientation' orientation=SashOrientation)? &
('selectedElement' selectedElement=[PerspectiveElement])? &
('spaceVolume' containerData=STRING)? &
('accessibility' accessibilityPhrase=STRING)?)
'{' (elements+=PerspectiveElement)* '}';
PerspectivePartStack:
{PerspectivePartStack} 'partStack' elementId=ID
(('selectedElement' selectedElement=[PerspectivePart])? &
('synchronize' synchronize=[PerspectivePartStack])? &
('spaceVolume' containerData=STRING)? &
('accessibility' accessibilityPhrase=STRING)?)
'{' (elements+=PerspectiveElement)* '}';
PerspectivePart:
{PerspectivePart} 'part' elementId=TRANSLATABLEID
(('spaceVolume' containerData=STRING)? &
('accessibility' accessibilityPhrase=STRING)? &
('iconURI' iconURI=STRING)? &
('view' view=PerspectiveView)? &
(isClosable?='isClosable')?);
PerspectiveEventManager:
{PerspectiveEventManager}
name=ID
'{'(events+=PerspectiveEvent)* '}'
;
PerspectiveEvent:
{PerspectiveEvent}
'targetPart' target=[PerspectivePart]
'allowedSources' '{' (allowedsources+=[PerspectivePart])* '}'
;
PerspectiveView:
PerspectiveSelection | PerspectiveTable | PerspectiveChart | PerspectiveReport | PerspectiveOrganization | PerspectiveTopology |
PerspectiveDialog | PerspectiveGrid | PerspectiveWelcome | PerspectiveSearch | PerspectiveDataInterchange | PerspectiveBPMN | PerspectiveKanban |
PerspectiveTitle | PerspectiveDashboard | PerspectiveBrowser;
PerspectiveSelection:
{PerspectiveSelection} 'select' ref=[table::Table];
PerspectiveTable:
{PerspectiveTable} 'readOnlyTable' ref=[table::Table];
PerspectiveGrid:
{PerspectiveGrid} 'editableTable' ref=[table::Table];
PerspectiveChart:
{PerspectiveChart} 'chart' ref=[chart::Chart];
PerspectiveReport:
{PerspectiveReport} 'report' ref=[report::Report];
PerspectiveOrganization:
{PerspectiveOrganization} 'organigram' ref=[organization::Organization];
PerspectiveTopology:
{PerspectiveTopology} 'topology' ref=[topology::Topology];
PerspectiveDialog:
{PerspectiveDialog} 'dialog' ref=[dialog::Dialog];
PerspectiveBPMN:
{PerspectiveBPMN} 'bpmn';
PerspectiveKanban:
{PerspectiveKanban} 'kanban' 'of' dtoRef=[dto::LDto] 'card' cardRef=[dialog::Dialog] 'dialog' dialogRef=[dialog::Dialog];
PerspectiveWelcome:
{PerspectiveWelcome} 'welcome';
PerspectiveSearch:
{PerspectiveSearch} 'search' 'in' dtoRef=[dto::LDto] (('depth' depth=INT)? & ('filterColumns' filterCols=INT)?);
PerspectiveDataInterchange:
{PerspectiveDataInterchange} 'dataInterchange' ref=[data::DataInterchangeGroup];
PerspectiveTitle:
{PerspectiveTitle} 'title' htmlName=STRING;
PerspectiveDashboard:
{PerspectiveDashboard} 'name' name=STRING;
PerspectiveBrowser:
{PerspectiveBrowser} 'browser' 'url' url=STRING;
TRANSLATABLEID:
ID;
TRANSLATABLESTRING:
STRING;
enum SashOrientation:
HORIZONTAL='horizontal' | VERTICAL='vertical';