Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Eclipse Platform » How to read file in a Eclipse Plugin?
How to read file in a Eclipse Plugin? [message #327175] Sun, 13 April 2008 11:23 Go to next message
Eclipse UserFriend
Originally posted by: jefftymc.yahoo.com

Hi All,
In a plugin project I want to save and load info from
"plugin.properties" file. This file is placed under the root folder.
Code is like this:

String pluginPath = null;
URL bundleRootURL = TestPlugin.getDefault().getBundle().getEntry("/");
try {
URL pluginUrl = FileLocator.resolve(bundleRootURL);
pluginPath = pluginURL.getPath();
} catch (IOException e) {
}
// get the plugin path such as
// "D:/workspace/TestPlugin/"
pluginPath = pluginPath.substring(1);

Properties prop = new Properties();
String path = pluginPath + "plugin.properties";
InputStream is = new FileInputStream(path);
prop.load(is);

In Running & Debug mode it works well. But when I export the
project to myplugin.jar and place it into Eclipse's plugin folder it
didn't work.

BTW: Loading from the file is for a PreferencePage. I download the
some example source code and found that they all use like this: (in a
PreferencePage)
IPreferenceStore ps = getPreferenceStore();
String s1 = ps.getValue(key1, value1); // for save
...
String s2 = ps.getString(key2); // for load

We can only choose IPreferenceStore for saving & loading? Cann't we
do the same with reading & writting from/into the file in the plugin
project?
Would u please help me with that? Thanks in advance!
Re: How to read file in a Eclipse Plugin? [message #327176 is a reply to message #327175] Sun, 13 April 2008 12:43 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: merks.ca.ibm.com

This is a multi-part message in MIME format.
--------------060002020007010804070209
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

The plugin.properties is intended to be a read-only set of
internationalized strings. I think it's best to access it like this so
you'll be sure to get the version that's appropriate for the locale.

Platform.getResourceBundle(getBundle());


jeffty wrote:
> Hi All,
> In a plugin project I want to save and load info from
> "plugin.properties" file. This file is placed under the root folder.
> Code is like this:
>
> String pluginPath = null;
> URL bundleRootURL = TestPlugin.getDefault().getBundle().getEntry("/");
> try {
> URL pluginUrl = FileLocator.resolve(bundleRootURL);
> pluginPath = pluginURL.getPath();
> } catch (IOException e) {
> }
> // get the plugin path such as
> // "D:/workspace/TestPlugin/"
> pluginPath = pluginPath.substring(1);
>
> Properties prop = new Properties();
> String path = pluginPath + "plugin.properties";
> InputStream is = new FileInputStream(path);
> prop.load(is);
>
> In Running & Debug mode it works well. But when I export the
> project to myplugin.jar and place it into Eclipse's plugin folder it
> didn't work.
>
> BTW: Loading from the file is for a PreferencePage. I download the
> some example source code and found that they all use like this: (in a
> PreferencePage)
> IPreferenceStore ps = getPreferenceStore();
> String s1 = ps.getValue(key1, value1); // for save
> ...
> String s2 = ps.getString(key2); // for load
>
> We can only choose IPreferenceStore for saving & loading? Cann't
> we do the same with reading & writting from/into the file in the
> plugin project?
> Would u please help me with that? Thanks in advance!
>
>
>
>
>
>
>


--------------060002020007010804070209
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
The plugin.properties is intended to be a read-only set of
internationalized strings.&nbsp; I think it's best to access it like this so
you'll be sure to get the version that's appropriate for the locale.<br>
<blockquote>&nbsp;Platform.getResourceBundle(getBundle()); <br>
</blockquote>
<br>
jeffty wrote:
<blockquote cite="mid:ftsqg1$4qf$1@build.eclipse.org" type="cite">Hi
All,
<br>
&nbsp;&nbsp;&nbsp; In a plugin project I want to save and load info from
"plugin.properties" file. This file is placed under the root folder.
<br>
Code is like this:
<br>
<br>
&nbsp; String pluginPath = null;
<br>
&nbsp; URL bundleRootURL =
TestPlugin.getDefault().getBundle().getEntry("/");
<br>
&nbsp; try {
<br>
&nbsp; URL pluginUrl = FileLocator.resolve(bundleRootURL);
<br>
&nbsp; pluginPath = pluginURL.getPath();
<br>
&nbsp; } catch (IOException e) {&nbsp;&nbsp;&nbsp; <br>
&nbsp; }
<br>
&nbsp; // get the plugin path such as
<br>
&nbsp; // "D:/workspace/TestPlugin/"
<br>
&nbsp; pluginPath = pluginPath.substring(1);
<br>
<br>
&nbsp; Properties prop = new Properties();
<br>
&nbsp; String path = pluginPath + "plugin.properties";
<br>
&nbsp; InputStream is = new FileInputStream(path);&nbsp;&nbsp;&nbsp;&nbs p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs p;&nbsp; <br>
&nbsp; prop.load(is);
<br>
<br>
&nbsp;&nbsp;&nbsp; In Running &amp; Debug mode it works well. But when I export the
project to myplugin.jar and place it into Eclipse's plugin folder it
didn't work.
<br>
<br>
&nbsp;&nbsp;&nbsp; BTW: Loading from the file is for a PreferencePage. I download the
some example source code and found that they all use like this: (in a
PreferencePage)
<br>
&nbsp; IPreferenceStore ps = getPreferenceStore();
<br>
&nbsp; String s1 = ps.getValue(key1, value1);&nbsp;&nbsp;&nbsp; // for save
<br>
&nbsp; ...
<br>
&nbsp; String s2 = ps.getString(key2);&nbsp;&nbsp;&nbsp; // for load
<br>
<br>
&nbsp;&nbsp;&nbsp; We can only choose IPreferenceStore for saving &amp; loading?
Cann't we do the same with reading &amp; writting from/into the file in
the plugin project?
<br>
&nbsp;&nbsp;&nbsp; Would u please help me with that? Thanks in advance!
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</blockquote>
<br>
</body>
</html>

--------------060002020007010804070209--
Re: How to read file in a Eclipse Plugin? [message #327177 is a reply to message #327176] Sun, 13 April 2008 13:24 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: jefftymc.yahoo.com

plugin.properties is intended to be a read-only file? Ahhhhh...That
is to say I must create another file if I want to use my own config file ?
I found write info into a file in Eclipse plugin project is very
important.....


Ed Merks 写道:
> The plugin.properties is intended to be a read-only set of
> internationalized strings. I think it's best to access it like this so
> you'll be sure to get the version that's appropriate for the locale.
>
> Platform.getResourceBundle(getBundle());
>
>
> jeffty wrote:
>> Hi All,
>> In a plugin project I want to save and load info from
>> "plugin.properties" file. This file is placed under the root folder.
>> Code is like this:
>>
>> String pluginPath = null;
>> URL bundleRootURL = TestPlugin.getDefault().getBundle().getEntry("/");
>> try {
>> URL pluginUrl = FileLocator.resolve(bundleRootURL);
>> pluginPath = pluginURL.getPath();
>> } catch (IOException e) {
>> }
>> // get the plugin path such as
>> // "D:/workspace/TestPlugin/"
>> pluginPath = pluginPath.substring(1);
>>
>> Properties prop = new Properties();
>> String path = pluginPath + "plugin.properties";
>> InputStream is = new FileInputStream(path);
>> prop.load(is);
>>
>> In Running & Debug mode it works well. But when I export the
>> project to myplugin.jar and place it into Eclipse's plugin folder it
>> didn't work.
>>
>> BTW: Loading from the file is for a PreferencePage. I download the
>> some example source code and found that they all use like this: (in a
>> PreferencePage)
>> IPreferenceStore ps = getPreferenceStore();
>> String s1 = ps.getValue(key1, value1); // for save
>> ...
>> String s2 = ps.getString(key2); // for load
>>
>> We can only choose IPreferenceStore for saving & loading? Cann't
>> we do the same with reading & writting from/into the file in the
>> plugin project?
>> Would u please help me with that? Thanks in advance!
>>
>>
>>
>>
>>
>>
>>
>
Re: How to read file in a Eclipse Plugin? [message #327178 is a reply to message #327176] Sun, 13 April 2008 13:25 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: jefftymc.yahoo.com

plugin.properties is intended to be a read-only file? Ahhhhh...That
is to say I must create another file if I want to use my own config file ?
I found write info into a file in Eclipse plugin project is very
important.....


Ed Merks 写道:
> The plugin.properties is intended to be a read-only set of
> internationalized strings. I think it's best to access it like this so
> you'll be sure to get the version that's appropriate for the locale.
>
> Platform.getResourceBundle(getBundle());
>
>
> jeffty wrote:
>> Hi All,
>> In a plugin project I want to save and load info from
>> "plugin.properties" file. This file is placed under the root folder.
>> Code is like this:
>>
>> String pluginPath = null;
>> URL bundleRootURL = TestPlugin.getDefault().getBundle().getEntry("/");
>> try {
>> URL pluginUrl = FileLocator.resolve(bundleRootURL);
>> pluginPath = pluginURL.getPath();
>> } catch (IOException e) {
>> }
>> // get the plugin path such as
>> // "D:/workspace/TestPlugin/"
>> pluginPath = pluginPath.substring(1);
>>
>> Properties prop = new Properties();
>> String path = pluginPath + "plugin.properties";
>> InputStream is = new FileInputStream(path);
>> prop.load(is);
>>
>> In Running & Debug mode it works well. But when I export the
>> project to myplugin.jar and place it into Eclipse's plugin folder it
>> didn't work.
>>
>> BTW: Loading from the file is for a PreferencePage. I download the
>> some example source code and found that they all use like this: (in a
>> PreferencePage)
>> IPreferenceStore ps = getPreferenceStore();
>> String s1 = ps.getValue(key1, value1); // for save
>> ...
>> String s2 = ps.getString(key2); // for load
>>
>> We can only choose IPreferenceStore for saving & loading? Cann't
>> we do the same with reading & writting from/into the file in the
>> plugin project?
>> Would u please help me with that? Thanks in advance!
>>
>>
>>
>>
>>
>>
>>
>
Re: How to read file in a Eclipse Plugin? [message #327185 is a reply to message #327178] Sun, 13 April 2008 15:40 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: merks.ca.ibm.com

It's important to keep in mind that an Eclipse installation might well
be shared by many users, so information that a particular uses might
store needs to be associated with their works. Code that modifies
itself is usually a very bad idea...


jeffty wrote:
> plugin.properties is intended to be a read-only file?
> Ahhhhh...That is to say I must create another file if I want to use my
> own config file ?
> I found write info into a file in Eclipse plugin project is very
> important.....
>
>
> Ed Merks 写道:
>> The plugin.properties is intended to be a read-only set of
>> internationalized strings. I think it's best to access it like this
>> so you'll be sure to get the version that's appropriate for the locale.
>>
>> Platform.getResourceBundle(getBundle());
>>
>>
>> jeffty wrote:
>>> Hi All,
>>> In a plugin project I want to save and load info from
>>> "plugin.properties" file. This file is placed under the root folder.
>>> Code is like this:
>>>
>>> String pluginPath = null;
>>> URL bundleRootURL =
>>> TestPlugin.getDefault().getBundle().getEntry("/");
>>> try {
>>> URL pluginUrl = FileLocator.resolve(bundleRootURL);
>>> pluginPath = pluginURL.getPath();
>>> } catch (IOException e) { }
>>> // get the plugin path such as
>>> // "D:/workspace/TestPlugin/"
>>> pluginPath = pluginPath.substring(1);
>>>
>>> Properties prop = new Properties();
>>> String path = pluginPath + "plugin.properties";
>>> InputStream is = new FileInputStream(path);
>>> prop.load(is);
>>>
>>> In Running & Debug mode it works well. But when I export the
>>> project to myplugin.jar and place it into Eclipse's plugin folder it
>>> didn't work.
>>>
>>> BTW: Loading from the file is for a PreferencePage. I download
>>> the some example source code and found that they all use like this:
>>> (in a PreferencePage)
>>> IPreferenceStore ps = getPreferenceStore();
>>> String s1 = ps.getValue(key1, value1); // for save
>>> ...
>>> String s2 = ps.getString(key2); // for load
>>>
>>> We can only choose IPreferenceStore for saving & loading? Cann't
>>> we do the same with reading & writting from/into the file in the
>>> plugin project?
>>> Would u please help me with that? Thanks in advance!
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>
Re: How to read file in a Eclipse Plugin? [message #327191 is a reply to message #327185] Mon, 14 April 2008 01:39 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: jefftymc.yahoo.com

Errr... I c.
After setting in a preference page of Eclipse and restart Eclipse, I
find that my configuration has been saved successfully. How Eclipse do
that? It must write the info into a file but we don't know which one is it.


Ed Merks wrote:
> It's important to keep in mind that an Eclipse installation might well
> be shared by many users, so information that a particular uses might
> store needs to be associated with their works. Code that modifies
> itself is usually a very bad idea...
>
>
> jeffty wrote:
>> plugin.properties is intended to be a read-only file?
>> Ahhhhh...That is to say I must create another file if I want to use my
>> own config file ?
>> I found write info into a file in Eclipse plugin project is very
>> important.....
>>
>>
>> Ed Merks 写道:
>>> The plugin.properties is intended to be a read-only set of
>>> internationalized strings. I think it's best to access it like this
>>> so you'll be sure to get the version that's appropriate for the locale.
>>>
>>> Platform.getResourceBundle(getBundle());
>>>
>>>
>>> jeffty wrote:
>>>> Hi All,
>>>> In a plugin project I want to save and load info from
>>>> "plugin.properties" file. This file is placed under the root folder.
>>>> Code is like this:
>>>>
>>>> String pluginPath = null;
>>>> URL bundleRootURL =
>>>> TestPlugin.getDefault().getBundle().getEntry("/");
>>>> try {
>>>> URL pluginUrl = FileLocator.resolve(bundleRootURL);
>>>> pluginPath = pluginURL.getPath();
>>>> } catch (IOException e) { }
>>>> // get the plugin path such as
>>>> // "D:/workspace/TestPlugin/"
>>>> pluginPath = pluginPath.substring(1);
>>>>
>>>> Properties prop = new Properties();
>>>> String path = pluginPath + "plugin.properties";
>>>> InputStream is = new FileInputStream(path);
>>>> prop.load(is);
>>>>
>>>> In Running & Debug mode it works well. But when I export the
>>>> project to myplugin.jar and place it into Eclipse's plugin folder it
>>>> didn't work.
>>>>
>>>> BTW: Loading from the file is for a PreferencePage. I download
>>>> the some example source code and found that they all use like this:
>>>> (in a PreferencePage)
>>>> IPreferenceStore ps = getPreferenceStore();
>>>> String s1 = ps.getValue(key1, value1); // for save
>>>> ...
>>>> String s2 = ps.getString(key2); // for load
>>>>
>>>> We can only choose IPreferenceStore for saving & loading? Cann't
>>>> we do the same with reading & writting from/into the file in the
>>>> plugin project?
>>>> Would u please help me with that? Thanks in advance!
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
Re: How to read file in a Eclipse Plugin? [message #327209 is a reply to message #327191] Mon, 14 April 2008 07:41 Go to previous messageGo to next message
Achim Loerke is currently offline Achim LoerkeFriend
Messages: 376
Registered: July 2009
Location: Braunschweig, Germany
Senior Member

On Mon, 14 Apr 2008 09:39:21 +0800, jeffty <jefftymc@yahoo.com> wrote:

> Errr... I c.
> After setting in a preference page of Eclipse and restart Eclipse, I
>find that my configuration has been saved successfully. How Eclipse do
>that? It must write the info into a file but we don't know which one is it.
>

The preference settings are stored using IPreferenceStore, you can get
an instance using the AbstractUIPlugin.getPreferenceStore() method.
The data is stored in the workspace directory in a subdirectory called
".metadata". You may store data by yourself inside a directory you
created for your plug-in or you may use the preference store (no need
to use the preference dialog for this, just store your data in
key/value pairs).


Achim
--
Achim Lörke

Eclipse-Stammtisch in the Braunschweig, Germany area:
http://www.bredex.de/de/career/eclipse.html


Achim Lörke

Re: How to read file in a Eclipse Plugin? [message #327239 is a reply to message #327209] Mon, 14 April 2008 13:27 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: jefftymc.yahoo.com

"You may store data by yourself inside a directory you
created for your plug-in or you may use the preference store"

If what I want to load are not simple key/value paris, how to do
that? i.e. I want to read a velocity template like:
<html>
<body>
hi $name,
This is the No. &number letters.
<body>
</html>
As a matter of convenience I want to packed the template into the
plugin jar file. When eclipse load the plugin how can I read from the file?
In most cases the key/value paris that loaded from IPreferenceStore
is enough, but if a special file is needed to read inside the plugin
jar, must we use like this?
IPreferenceStore ps = AbstractUIPlugin.getPreferenceStore();
ps.setValue("template", "<html><body>hi $name,This is the No.
&number letters.<body></html>");


Achim Lörke wrote:
> On Mon, 14 Apr 2008 09:39:21 +0800, jeffty <jefftymc@yahoo.com> wrote:
>
>> Errr... I c.
>> After setting in a preference page of Eclipse and restart Eclipse, I
>> find that my configuration has been saved successfully. How Eclipse do
>> that? It must write the info into a file but we don't know which one is it.
>>
>
> The preference settings are stored using IPreferenceStore, you can get
> an instance using the AbstractUIPlugin.getPreferenceStore() method.
> The data is stored in the workspace directory in a subdirectory called
> ".metadata". You may store data by yourself inside a directory you
> created for your plug-in or you may use the preference store (no need
> to use the preference dialog for this, just store your data in
> key/value pairs).
>
>
> Achim
Re: How to read file in a Eclipse Plugin? [message #327274 is a reply to message #327239] Tue, 15 April 2008 06:58 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: jefftymc.yahoo.com

Anyway thanks to Merks and Achim, I've learnt much from you. :)

jeffty wrote:
> "You may store data by yourself inside a directory you
> created for your plug-in or you may use the preference store"
>
> If what I want to load are not simple key/value paris, how to do
> that? i.e. I want to read a velocity template like:
> <html>
> <body>
> hi $name,
> This is the No. &number letters.
> <body>
> </html>
> As a matter of convenience I want to packed the template into the
> plugin jar file. When eclipse load the plugin how can I read from the file?
> In most cases the key/value paris that loaded from IPreferenceStore
> is enough, but if a special file is needed to read inside the plugin
> jar, must we use like this?
> IPreferenceStore ps = AbstractUIPlugin.getPreferenceStore();
> ps.setValue("template", "<html><body>hi $name,This is the No.
> &number letters.<body></html>");
>
>
> Achim Lörke wrote:
>> On Mon, 14 Apr 2008 09:39:21 +0800, jeffty <jefftymc@yahoo.com> wrote:
>>
>>> Errr... I c.
>>> After setting in a preference page of Eclipse and restart Eclipse,
>>> I find that my configuration has been saved successfully. How Eclipse
>>> do that? It must write the info into a file but we don't know which
>>> one is it.
>>>
>>
>> The preference settings are stored using IPreferenceStore, you can get
>> an instance using the AbstractUIPlugin.getPreferenceStore() method.
>> The data is stored in the workspace directory in a subdirectory called
>> ".metadata". You may store data by yourself inside a directory you
>> created for your plug-in or you may use the preference store (no need
>> to use the preference dialog for this, just store your data in
>> key/value pairs).
>>
>>
>> Achim
Re: How to read file in a Eclipse Plugin? [message #327276 is a reply to message #327239] Tue, 15 April 2008 07:15 Go to previous messageGo to next message
Achim Loerke is currently offline Achim LoerkeFriend
Messages: 376
Registered: July 2009
Location: Braunschweig, Germany
Senior Member

On Mon, 14 Apr 2008 21:27:43 +0800, jeffty <jefftymc@yahoo.com> wrote:

> "You may store data by yourself inside a directory you
>created for your plug-in or you may use the preference store"
>
> If what I want to load are not simple key/value paris, how to do
>that? i.e. I want to read a velocity template like:
><html>
> <body>
> hi $name,
> This is the No. &number letters.
> <body>
></html>

You may create a file in the workspace .metada directory. I'm not
familiar with the API, I believe you will find it in the IResource
surroundings, see IResource.getWorkspace(). You may also use
BundleContext.getDataFile().

> As a matter of convenience I want to packed the template into the
>plugin jar file. When eclipse load the plugin how can I read from the file?
> In most cases the key/value paris that loaded from IPreferenceStore
>is enough, but if a special file is needed to read inside the plugin
>jar, must we use like this?

To read from the plugins jar you can either use the BundleClassloader
and call one of the *Resource* methods or you may use BundleFile to
get your files.

This is from memory and some brief glances at the API so please be
carefull :-)


Achim
--
Achim Lörke

Eclipse-Stammtisch in the Braunschweig, Germany area:
http://www.bredex.de/de/career/eclipse.html


Achim Lörke

Re: How to read file in a Eclipse Plugin? [message #327278 is a reply to message #327274] Tue, 15 April 2008 07:25 Go to previous messageGo to next message
Achim Loerke is currently offline Achim LoerkeFriend
Messages: 376
Registered: July 2009
Location: Braunschweig, Germany
Senior Member

On Tue, 15 Apr 2008 14:58:45 +0800, jeffty <jefftymc@yahoo.com> wrote:

> Anyway thanks to Merks and Achim, I've learnt much from you. :)
>

You're welcome. And please always wait another day or two before
giving up on answers :-) I often look only once a day into the
newsgroups and try to earn some money the rest of the day.


Achim
--
Achim Lörke

Eclipse-Stammtisch in the Braunschweig, Germany area:
http://www.bredex.de/de/career/eclipse.html


Achim Lörke

Re: How to read file in a Eclipse Plugin? [message #327347 is a reply to message #327276] Wed, 16 April 2008 00:46 Go to previous message
Eclipse UserFriend
Originally posted by: jefftymc.yahoo.com

I'll try it,Thanks a lot!

Achim Lörke wrote:
> On Mon, 14 Apr 2008 21:27:43 +0800, jeffty <jefftymc@yahoo.com> wrote:
>
>> "You may store data by yourself inside a directory you
>> created for your plug-in or you may use the preference store"
>>
>> If what I want to load are not simple key/value paris, how to do
>> that? i.e. I want to read a velocity template like:
>> <html>
>> <body>
>> hi $name,
>> This is the No. &number letters.
>> <body>
>> </html>
>
> You may create a file in the workspace .metada directory. I'm not
> familiar with the API, I believe you will find it in the IResource
> surroundings, see IResource.getWorkspace(). You may also use
> BundleContext.getDataFile().
>
>> As a matter of convenience I want to packed the template into the
>> plugin jar file. When eclipse load the plugin how can I read from the file?
>> In most cases the key/value paris that loaded from IPreferenceStore
>> is enough, but if a special file is needed to read inside the plugin
>> jar, must we use like this?
>
> To read from the plugins jar you can either use the BundleClassloader
> and call one of the *Resource* methods or you may use BundleFile to
> get your files.
>
> This is from memory and some brief glances at the API so please be
> carefull :-)
>
>
> Achim
Previous Topic:Recommendations on Bundle-RequiredExecutionEnvironment manifest header?
Next Topic:How to convert Java project to dynamic web project
Goto Forum:
  


Current Time: Sun Jun 30 14:26:09 GMT 2024

Powered by FUDForum. Page generated in 0.03331 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top