SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
Lightweight Xtext Editors 	

as 	

SWT Widgets
Moritz Eysholdt, itemis AG
AGENDA
• Motivation	

• Use Cases	

• Architecture	

• API + Example
OnThe	

Shoulders	

Of	

Giants
BUT
???
LIGHTWEIGHT
Xtext Editor as WorkbenchPart
SWT Widget
syntax highlighting
live validation
content assistquick fix
quick assist
formatting
auto edit
USE CASES
RCP Dialog Properties Hover Inline More
Eclipse RCP Mail Example with exchanged message body editor
RCP Dialog Properties Hover Inline More
Template Proposal Editor of any Xtext Language (here: Xtend)
RCP Dialog Properties Hover Inline More
Xtend formatter configuration preview
read-only!
RCP Dialog Properties Hover Inline More
in / as properties view for a graphical editor
editable!
as part of hover windows
read-only!
RCP Dialog Properties Hover Inline More
Editing Embedded-Xtext
RCP Dialog Properties Hover Inline More
as part of diagrams
editable!
• Eclipse Forms	

• Spread Sheet Formulas	

• Data Queries	

• Multi Page Editors	

• Conditional Breakpoint Editor
RCP Dialog Properties Hover More
ARCHITECTURE
org.eclipse.xtext.ui.editor.embedded
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
create editor in 4 steps
org.eclipse.xtext.ui.editor.embedded
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
1. construct a new editor builder
create editor in 4 steps
org.eclipse.xtext.ui.editor.embedded
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
readOnly()
showErrorAndWarningAnnotations()
withResourceValidator(IResourceValidator)
withParent(Composite parent): EmbeddedEditor
Builder
<< creates >>
1. construct a new editor builder
create editor in 4 steps
org.eclipse.xtext.ui.editor.embedded
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
readOnly()
showErrorAndWarningAnnotations()
withResourceValidator(IResourceValidator)
withParent(Composite parent): EmbeddedEditor
Builder
<< creates >>
2. configuration
1. construct a new editor builder
create editor in 4 steps
org.eclipse.xtext.ui.editor.embedded
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
readOnly()
showErrorAndWarningAnnotations()
withResourceValidator(IResourceValidator)
withParent(Composite parent): EmbeddedEditor
Builder
<< creates >>
2. configuration
1. construct a new editor builder
3. create editor on SWT Composite
create editor in 4 steps
org.eclipse.xtext.ui.editor.embedded
getViewer()
getDocument()
createPartialEditor(
String prefix,
String editablePart,
String postfix
) : EmbeddedEditorModelAccess
EmbeddedEditor
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
readOnly()
showErrorAndWarningAnnotations()
withResourceValidator(IResourceValidator)
withParent(Composite parent): EmbeddedEditor
Builder
<< creates >>
<< creates >>
3. create editor on SWT Composite
2. configuration
1. construct a new editor builder
create editor in 4 steps
org.eclipse.xtext.ui.editor.embedded
getViewer()
getDocument()
createPartialEditor(
String prefix,
String editablePart,
String postfix
) : EmbeddedEditorModelAccess
EmbeddedEditor
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
readOnly()
showErrorAndWarningAnnotations()
withResourceValidator(IResourceValidator)
withParent(Composite parent): EmbeddedEditor
Builder
<< creates >>
<< creates >>
4. initialize document
3. create editor on SWT Composite
2. configuration
1. construct a new editor builder
create editor in 4 steps
org.eclipse.xtext.ui.editor.embedded
getViewer()
getDocument()
createPartialEditor(
String prefix,
String editablePart,
String postfix
) : EmbeddedEditorModelAccess
EmbeddedEditor
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
getEditablePart():String
updateModel(
String prefix,
String editablePart,
String suffix
)
EmbeddedEditorModelAccess
readOnly()
showErrorAndWarningAnnotations()
withResourceValidator(IResourceValidator)
withParent(Composite parent): EmbeddedEditor
Builder
<< creates >>
<< creates >>
<< creates >>
4. initialize document
3. create editor on SWT Composite
2. configuration
1. construct a new editor builder
create editor in 4 steps
org.eclipse.xtext.ui.editor.embedded
getViewer()
getDocument()
createPartialEditor(
String prefix,
String editablePart,
String postfix
) : EmbeddedEditorModelAccess
EmbeddedEditor
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
getEditablePart():String
updateModel(
String prefix,
String editablePart,
String suffix
)
EmbeddedEditorModelAccess
readOnly()
showErrorAndWarningAnnotations()
withResourceValidator(IResourceValidator)
withParent(Composite parent): EmbeddedEditor
Builder
<< creates >>
<< creates >>
<< creates >>
4. initialize document
3. create editor on SWT Composite
2. configuration
1. construct a new editor builder
get text,
set text
create editor in 4 steps
org.eclipse.xtext.ui.editor.embedded
getViewer()
getDocument()
createPartialEditor(
String prefix,
String editablePart,
String postfix
) : EmbeddedEditorModelAccess
EmbeddedEditor
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
getEditablePart():String
updateModel(
String prefix,
String editablePart,
String suffix
)
EmbeddedEditorModelAccess
readOnly()
showErrorAndWarningAnnotations()
withResourceValidator(IResourceValidator)
withParent(Composite parent): EmbeddedEditor
Builder
<< creates >>
<< creates >>
<< creates >>
prefix,
editablePart,
postfix
prefix,
editablePart,
postfix
editor knows
viewer and document
org.eclipse.xtext.ui.editor.embedded
org.eclipse.xtext.ui.editor
getViewer()
getDocument()
createPartialEditor(
String prefix,
String editablePart,
String postfix
) : EmbeddedEditorModelAccess
EmbeddedEditor
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
getEditablePart():String
updateModel(
String prefix,
String editablePart,
String suffix
)
EmbeddedEditorModelAccess
XtextSourceViewer
XtextDocument
readOnly()
showErrorAndWarningAnnotations()
withResourceValidator(IResourceValidator)
withParent(Composite parent): EmbeddedEditor
Builder
<< creates >>
<< creates >>
<< creates >>
org.eclipse.xtext.ui.editor.embedded
org.eclipse.xtext.ui.editor
getViewer()
getDocument()
createPartialEditor(
String prefix,
String editablePart,
String postfix
) : EmbeddedEditorModelAccess
EmbeddedEditor
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
getEditablePart():String
updateModel(
String prefix,
String editablePart,
String suffix
)
EmbeddedEditorModelAccess
XtextSourceViewer
XtextDocument
readOnly()
showErrorAndWarningAnnotations()
withResourceValidator(IResourceValidator)
withParent(Composite parent): EmbeddedEditor
Builder
<< creates >>
<< creates >>
<< creates >>
document and viewer
same as in Xtext’s
WorkbenchPart-editor
org.eclipse.jface
text
org.eclipse.xtext.ui.editor.embedded
org.eclipse.xtext.ui.editor
getViewer()
getDocument()
createPartialEditor(
String prefix,
String editablePart,
String postfix
) : EmbeddedEditorModelAccess
EmbeddedEditor
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
getEditablePart():String
updateModel(
String prefix,
String editablePart,
String suffix
)
EmbeddedEditorModelAccess
XtextSourceViewer
XtextDocument
text : String
Document
Viewer
TextViewer
readOnly()
showErrorAndWarningAnnotations()
withResourceValidator(IResourceValidator)
withParent(Composite parent): EmbeddedEditor
Builder
<< creates >>
<< creates >>
<< creates >>
Document impl
wraps text
org.eclipse.jface
text
org.eclipse.xtext.ui.editor.embedded
org.eclipse.xtext.ui.editor
getViewer()
getDocument()
createPartialEditor(
String prefix,
String editablePart,
String postfix
) : EmbeddedEditorModelAccess
EmbeddedEditor
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
getEditablePart():String
updateModel(
String prefix,
String editablePart,
String suffix
)
EmbeddedEditorModelAccess
XtextSourceViewer
XtextDocument
text : String
Document
Viewer
org.eclipse.swt.widgets
Control
TextViewer
readOnly()
showErrorAndWarningAnnotations()
withResourceValidator(IResourceValidator)
withParent(Composite parent): EmbeddedEditor
Builder
<< creates >>
<< creates >>
<< creates >>
Viewer impl
wraps SWT Control
org.eclipse.jface
text
org.eclipse.xtext.ui.editor.embedded
org.eclipse.xtext.ui.editor
getViewer()
getDocument()
createPartialEditor(
String prefix,
String editablePart,
String postfix
) : EmbeddedEditorModelAccess
EmbeddedEditor
newEditor(IEditedResourceProvider) : Builder
EmbeddedEditorFactory
getEditablePart():String
updateModel(
String prefix,
String editablePart,
String suffix
)
EmbeddedEditorModelAccess
XtextSourceViewer
XtextDocument
text : String
Document
Viewer
org.eclipse.swt.widgets
Control
TextViewer
readOnly()
showErrorAndWarningAnnotations()
withResourceValidator(IResourceValidator)
withParent(Composite parent): EmbeddedEditor
Builder
<< creates >>
<< creates >>
<< creates >>
API / EXAMPLE
In the Eclipse RCP Mail Example,
change the text editor to be an Xtext editor
needed modifications in View.java
public class View extends ViewPart {	
!
	 public void createPartControl(Composite parent) {	
	 	 Composite top = new Composite(parent, SWT.NONE);	
!
	 	 // ...	
!
	 	 	
	 	 	
	 	 	
	 	 	
	 	 	
	 	 	
	 	 	
	 	 	
	 }	
!
	 // ...	
}
View.java
public class View extends ViewPart {	
!
	 public void createPartControl(Composite parent) {	
	 	 Composite top = new Composite(parent, SWT.NONE);	
!
	 	 // ...	
!
	 	 ArithmeticsActivator activator = ArithmeticsActivator.getInstance();	
	 	 Injector injector = activator.getInjector(ORG_ECLIPSE_XTEXT_EXAMPLE_ARITHMETICS_ARITHMETICS);	
	 	 	
!
!
	 	 	
!
!
	 }	
!
	 // ...	
}
View.java
obtain injector
public class View extends ViewPart {	
!
	 public void createPartControl(Composite parent) {	
	 	 Composite top = new Composite(parent, SWT.NONE);	
!
	 	 // ...	
!
	 	 ArithmeticsActivator activator = ArithmeticsActivator.getInstance();	
	 	 Injector injector = activator.getInjector(ORG_ECLIPSE_XTEXT_EXAMPLE_ARITHMETICS_ARITHMETICS);	
	 	 	
	 	 MailResourceProvider provider = injector.getInstance(MailResourceProvider.class);	
	 	 EmbeddedEditorFactory factory = injector.getInstance(EmbeddedEditorFactory.class);	
	 	 	
!
!
	 }	
!
	 // ...	
}
View.java
get services from injector
public class View extends ViewPart {	
!
	 public void createPartControl(Composite parent) {	
	 	 Composite top = new Composite(parent, SWT.NONE);	
!
	 	 // ...	
!
	 	 ArithmeticsActivator activator = ArithmeticsActivator.getInstance();	
	 	 Injector injector = activator.getInjector(ORG_ECLIPSE_XTEXT_EXAMPLE_ARITHMETICS_ARITHMETICS);	
	 	 	
	 	 MailResourceProvider provider = injector.getInstance(MailResourceProvider.class);	
	 	 EmbeddedEditorFactory factory = injector.getInstance(EmbeddedEditorFactory.class);	
	 	 	
	 	 EmbeddedEditor editor = factory.newEditor(provider).withParent(top);	
	 	 EmbeddedEditorModelAccess model = editor.createPartialEditor("", "module HelloWorld", "", false);	
	 }	
!
	 // ...	
}
View.java 1. create builder
2. (skipped) configure
3. create editor
4. init document
public class MailResourceProvider implements IEditedResourceProvider {	
!
	 @Inject private IResourceSetProvider resourceSetProvider;	
	 @Inject private FileExtensionProvider ext;	
!
	 @Override	
	 public XtextResource createResource() {	
	 	 ResourceSet resourceSet = resourceSetProvider.get(null);	
	 	 URI uri = URI.createURI("synthetic:/mail." + ext.getPrimaryFileExtension());	
	 	 XtextResource result = (XtextResource) resourceSet.createResource(uri);	
	 	 resourceSet.getResources().add(result);	
	 	 return result;	
	 }	
}	
Init Resource incl. ResourceSet
Questions?

Contenu connexe

Tendances

Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
Adieu
 

Tendances (20)

Object Oriented Programming In JavaScript
Object Oriented Programming In JavaScriptObject Oriented Programming In JavaScript
Object Oriented Programming In JavaScript
 
Extending the Xbase Typesystem
Extending the Xbase TypesystemExtending the Xbase Typesystem
Extending the Xbase Typesystem
 
Express js
Express jsExpress js
Express js
 
Dom
DomDom
Dom
 
Dependency injection in Java, from naive to functional
Dependency injection in Java, from naive to functionalDependency injection in Java, from naive to functional
Dependency injection in Java, from naive to functional
 
Generating Visual Studio Code Extensions for Xtext DSLs
Generating Visual Studio Code Extensions for Xtext DSLsGenerating Visual Studio Code Extensions for Xtext DSLs
Generating Visual Studio Code Extensions for Xtext DSLs
 
Javascript Design Patterns
Javascript Design PatternsJavascript Design Patterns
Javascript Design Patterns
 
Introduction to TypeScript
Introduction to TypeScriptIntroduction to TypeScript
Introduction to TypeScript
 
Javascript Arrow function
Javascript Arrow functionJavascript Arrow function
Javascript Arrow function
 
The Xtext Grammar Language
The Xtext Grammar LanguageThe Xtext Grammar Language
The Xtext Grammar Language
 
Javascript this keyword
Javascript this keywordJavascript this keyword
Javascript this keyword
 
React + Redux + TypeScript === ♥
React + Redux + TypeScript === ♥React + Redux + TypeScript === ♥
React + Redux + TypeScript === ♥
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Event In JavaScript
Event In JavaScriptEvent In JavaScript
Event In JavaScript
 
Let's discover React and Redux with TypeScript
Let's discover React and Redux with TypeScriptLet's discover React and Redux with TypeScript
Let's discover React and Redux with TypeScript
 
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...Map(), flatmap() and reduce() are your new best friends: simpler collections,...
Map(), flatmap() and reduce() are your new best friends: simpler collections,...
 
Advanced Javascript
Advanced JavascriptAdvanced Javascript
Advanced Javascript
 
Idiomatic Kotlin
Idiomatic KotlinIdiomatic Kotlin
Idiomatic Kotlin
 
JavaScript Programming
JavaScript ProgrammingJavaScript Programming
JavaScript Programming
 
Json
JsonJson
Json
 

En vedette (6)

Eclipse meets e4
Eclipse meets e4Eclipse meets e4
Eclipse meets e4
 
Turning Ideas Into Code Faster
Turning Ideas Into Code FasterTurning Ideas Into Code Faster
Turning Ideas Into Code Faster
 
Codegeneration Goodies
Codegeneration GoodiesCodegeneration Goodies
Codegeneration Goodies
 
Parsing Expression With Xtext
Parsing Expression With XtextParsing Expression With Xtext
Parsing Expression With Xtext
 
Future of Xtext
Future of XtextFuture of Xtext
Future of Xtext
 
Xtext Best Practices
Xtext Best PracticesXtext Best Practices
Xtext Best Practices
 

Similaire à Lightweight Xtext Editors as SWT Widgets

CreateJS hackathon in Zurich
CreateJS hackathon in ZurichCreateJS hackathon in Zurich
CreateJS hackathon in Zurich
Henri Bergius
 
夜宴50期《YUI3 editor》
夜宴50期《YUI3 editor》夜宴50期《YUI3 editor》
夜宴50期《YUI3 editor》
Koubei Banquet
 
yui3 rich text editor
yui3 rich text editoryui3 rich text editor
yui3 rich text editor
liuzhitao2000
 
react-slides.pdf gives information about react library
react-slides.pdf gives information about react libraryreact-slides.pdf gives information about react library
react-slides.pdf gives information about react library
janet736113
 
Use Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDEUse Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDE
Benjamin Cabé
 

Similaire à Lightweight Xtext Editors as SWT Widgets (20)

CreateJS hackathon in Zurich
CreateJS hackathon in ZurichCreateJS hackathon in Zurich
CreateJS hackathon in Zurich
 
夜宴50期《YUI3 editor》
夜宴50期《YUI3 editor》夜宴50期《YUI3 editor》
夜宴50期《YUI3 editor》
 
yui3 rich text editor
yui3 rich text editoryui3 rich text editor
yui3 rich text editor
 
Banquet 50
Banquet 50Banquet 50
Banquet 50
 
react-slides.pdf
react-slides.pdfreact-slides.pdf
react-slides.pdf
 
react-slides.pdf gives information about react library
react-slides.pdf gives information about react libraryreact-slides.pdf gives information about react library
react-slides.pdf gives information about react library
 
react-slides.pptx
react-slides.pptxreact-slides.pptx
react-slides.pptx
 
Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]Full Stack React Workshop [CSSC x GDSC]
Full Stack React Workshop [CSSC x GDSC]
 
My Very First Zf App Part One
My Very First Zf App   Part OneMy Very First Zf App   Part One
My Very First Zf App Part One
 
Implementing auto complete using JQuery
Implementing auto complete using JQueryImplementing auto complete using JQuery
Implementing auto complete using JQuery
 
ASP.NET Lecture 6
ASP.NET Lecture 6ASP.NET Lecture 6
ASP.NET Lecture 6
 
Ad103 - Have it Your Way: Extending IBM Lotus Domino Designer
Ad103 - Have it Your Way: Extending IBM Lotus Domino DesignerAd103 - Have it Your Way: Extending IBM Lotus Domino Designer
Ad103 - Have it Your Way: Extending IBM Lotus Domino Designer
 
Ajax toolkit framework
Ajax toolkit frameworkAjax toolkit framework
Ajax toolkit framework
 
DataFX - JavaOne 2013
DataFX - JavaOne 2013DataFX - JavaOne 2013
DataFX - JavaOne 2013
 
Linguistic Abstraction for the Web
Linguistic Abstraction for the WebLinguistic Abstraction for the Web
Linguistic Abstraction for the Web
 
From Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) AgainFrom Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) Again
 
Use Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDEUse Eclipse technologies to build a modern embedded IDE
Use Eclipse technologies to build a modern embedded IDE
 
Netfx4
Netfx4Netfx4
Netfx4
 
How to create an Angular builder
How to create an Angular builderHow to create an Angular builder
How to create an Angular builder
 
Eclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsEclipse 2011 Hot Topics
Eclipse 2011 Hot Topics
 

Dernier

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Dernier (20)

VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 

Lightweight Xtext Editors as SWT Widgets