system filesystem - netbeanswiki.netbeans.org/wiki/images/7/79/systemfs_net... · what is a...
TRANSCRIPT
![Page 1: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/1.jpg)
System FileSystemEverything is a Stream
![Page 2: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/2.jpg)
What is it?
• General registry of configuration data
![Page 3: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/3.jpg)
What is it?
• General registry of configuration data• tree structure• folders/directories• files and streams
![Page 4: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/4.jpg)
What is it?
• General registry of configuration data
> installation directory vs.user directory
![Page 5: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/5.jpg)
What is a “filesystem”?
• NetBeans specific:
> In NetBeans, we are dealing with virtual filesystems.
> FileObjects, notjava.io.File
![Page 6: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/6.jpg)
FileObjects vs. java.io.File
• Get them from the filesystem, you do not create them.• FileObjects have MIME types.• FileObjects have attributes.• FileObjects have input and output
stream.• You can listen for changes.
![Page 7: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/7.jpg)
Lookup is a registry
• Simple registration of objects> put file in META-INF/services> default Lookup creates declared objects
• But:> want to associate additional attributes?> show objects in UI without instantiating?
• Examples:> Show icon in list, without creating object.
![Page 8: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/8.jpg)
Filesystem is also a registry
• Filesystem
> hierarchy of files and folders>e.g., local filesystem, works with real files>e.g., JARFilesystem
> different folders for different purposes
> declarative registration
![Page 9: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/9.jpg)
System FileSystem
![Page 10: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/10.jpg)
Giant sandwich...
• Every module provides a layer.• A layer = an XML file.• Each layer contains declarations for:> menu items, toolbar buttons> editor configurations> Options window settings> window persistence> + much more
All of them together= System FileSystem
![Page 11: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/11.jpg)
DemoLet's look at a layer file...
![Page 12: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/12.jpg)
How do layers work?
1.NetBeans Platform starts up.2.NetBeans Platform finds all layers.3.XML Layers are merged,with one
writable filesystem, into actual filesystem on disk.
4.NetBeans Platform opens.5.Results of merge = application.
![Page 13: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/13.jpg)
Influencing Content
● add to a folder <filesystem>
<folder name = “menu”> <file name="MyAppServices"/>
</folder></filesystem>
● delete from a folder<filesystem>
<folder name = “menu”> <file name="Help_hidden"/>
</folder></filesystem>
● install/uninstall module● automatically adds/removes its files
![Page 14: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/14.jpg)
Some Details About Layers
• ordering• .instance vs. .shadow• .settings files• instanceCreate• methodValue• localization• icons
![Page 15: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/15.jpg)
How to provide a layer?
1.Create a layer.xml file.2.Add entries to folders to register
your own folders and files.3.Provide pointer to layer.xml, in
manifest.
= use a wizard
![Page 16: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/16.jpg)
How to register in the layer?
● Type manually in the layer.xml file.● Use wizards to get started.
● Actions● Windows● Options panels● ...
● Visual editing node● Important files● Layer/Layer in context
![Page 17: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/17.jpg)
DemoLet's work with the layer file...
![Page 18: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/18.jpg)
How to access the layer?
FileObject root = Repository.getDefault().getDefaultFileSystem().getRoot();
FileObject dir = root.getFileObject("Menu");
FileObject dir = FileUtil.getConfigFile("Menu");
Pre-7.0 version:
![Page 19: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/19.jpg)
Let's see what's in 'Menu'...
public void performAction() {public void performAction() { FileObject dir = FileUtil.getConfigFile("Menu");FileObject dir = FileUtil.getConfigFile("Menu");
FileObject[] kids = dir.getChildren();FileObject[] kids = dir.getChildren(); for (int i = 0; i < kids.length; i++) {for (int i = 0; i < kids.length; i++) { FileObject fileObject = kids[i];FileObject fileObject = kids[i];
String name = fileObject.getName();String name = fileObject.getName(); JOptionPane.showMessageDialog(null, name);JOptionPane.showMessageDialog(null, name); }}
}}
![Page 20: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/20.jpg)
Demo...Let's access it from code...
![Page 21: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/21.jpg)
Is not that Too Complex I?
● Why learn File system API?● I like Lookup!● There is Lookups.forPath(String ctx)
● Like FileUtil.getConfigFile(ctx)● Typed access● Understands .instance, .settings files
![Page 22: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/22.jpg)
Is not that Too Complex II?
● Why edit XML File system?● Use annotations!
● like @ConvertAsProperties● completion● type checked● find usages● define your own.
![Page 23: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/23.jpg)
Demo...Use of annotations...What they generate...
![Page 24: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/24.jpg)
Summary
● General Registry● Raw Data● Basic folder based API
● Menu/, Toolbars/, OptionsDialog/, Loaders/
● Access via● FileUtil.getConfigFile(ctx)● Important Files Node● Lookup.forPath(ctx)● @Annotations
![Page 25: System FileSystem - NetBeanswiki.netbeans.org/wiki/images/7/79/Systemfs_Net... · What is a “filesystem”? • NetBeans specific: > In NetBeans, we are dealing with virtual filesystems](https://reader033.vdocuments.us/reader033/viewer/2022051605/60122bf12a03d415b74dc76e/html5/thumbnails/25.jpg)
Questions & Answers