# protobuf-dt

## About
This project provides IDE integration to Eclipse users when working on protobuf
files.  Contributions can be made through
[Google Source](https://protobuf-dt.googlesource.com).
For more info see
[CONTRIBUTING](https://protobuf-dt.googlesource.com/protobuf/+/master/CONTRIBUTING.md)

## License
The
[Eclipe Public License](https://protobuf-dt.googlesource.com/protobuf/+/master/com.google.eclipse.protobuf.feature/epl-v10.html)
can be found in com.eclipse.protobuf.feature.

## Installing protobuf-dt
The update site for protobuf-dt is
http://google.github.io/protobuf-dt/updates/latest/.

### Install using Eclipse Install tool
Navigate to "Help" > "Install New Software...".

Click **Add...**.

Enter _Protobuf Editor_ into the "Name:" field.

Paste _http://google.github.io/protobuf-dt/updates/latest/_
into the "Location:" field.

Click **OK**.

From the dropdown labeled "Work with:" select the repository you just added.

Make sure that "Group items by category" is deselected.

"Google Inc." should be listed in the repository explorer window.

Select the checkbox next to "Google Inc.".

Click **Next**.

Click **Next** again on the "Item Details" page.

Accept the terms of the license agreement and click **Finish**.

### Install using the Eclipse Marketplace
Navigate to "Help" > "Eclipse Marketplace...".

Search for _protobuf-dt_.

"protobuf-dt" should be listed in the search window.

Click "Install".

Accept the terms of the license agreement and click **Finish**.

