Fixes#7924
JRE 8u161 made JMenu.insert() MUCH slower on OSX.
This exposed a bug lurking there for years; in fact the menu entries were rebuilt every time since JMenu.getComponent() returns an empty list.
The correct function is JMenu.getMenuComponents().
In the meantime, also remove sketchbookMenu and examplesMenu being deleted on board change; only their content needs to be updated, not the container itself.
This patch dramatically reduce pressure on heap memory:
- use a StringTokenizer instead of the very slow String.split(...)
method to decode newlines. This avoid allocation/deallocation of
big strings array and use of regexp.
- pre allocate as many object as possible to avoid new allocation
while streaming data.
- the "timestamp" string is calculated only once per iteration.
- use StringBuilder instead of inline temporary strings (that are,
again, allocated and deallocated on each iteration)
This commits adds the "CTRL SHIFT =" as key to increase font size.
The old shortcut "CTRL +" is still active, but it's not always
possible to produce it if the keyboard layout doesn't have the + key
on the base layer.
This add the possibility to compose "CTRL +" when the keyboard has
the "+" available as "SHIFT =", that seems to be very common in
many layouts.
Fix#6806
- Specify that library name error is about folder name.
- We would normally expect "library name" to mean the "fancy name" (as defined by the library.properties name field).
- Specify exactly which characters are allowed.
- State that spaces are prohibited in sketch folder name.
- Remove outdated message about library folders not being allowed to start with a number.
- This restriction was removed by 4545283ae7.
- State library folder name length restriction.
- Make sketch and library messages consistent with each other.
* CLI: Add --version to CLI option
I added to get the Arduino IDE version from the command line
It will allow to check easily if the new Arduino is already installed.
This feature makes it easier to build external systems linked to specific versions of Arduino.
1. I added `--version` action, which shows version name and exit
1. Currently, VERSION_NAME_LONG (like `1.8.5`, `1.9.0-beta`, `1.8.6 Hourly Build XXX`, etc...) is used. Because I want to know its version number and stable/beta/hourly.
2. Finish with `0`. Because it is `SUCCESSFLLY FINISHED`.
2. Updated man page.
* Split "parse" and "action".
Move print action to probably suitable place.
This commit will fix the behavior of multiple actions about --version.
* add testcase
Those fields have a slightly different meaning on each object that
extends DownloadableContribution and having them grouped in
DownloadableContribution only increase confusion in change of a
(very) tiny code reuse.
Moreover:
- the `readOnly` field has been renamed to `builtIn`
- predicates have been replaced by lambdas
- DownloadableContributionBuiltInAtTheBottomComparator has been replaced
with a singleton instance
- replaced the logic to check if an installed-library is a
builtin library by reusing the same method available in
ContributedLibraryReleases
- renamed some local vars to better reflect their contents:
uninstalledLibraries -> notInstalled
uninstalledNewerReleases -> notInstalledNewer
uninstalledPreviousReleases -> notInstalledPrevious
This class allows to attach a Location property to a folder
path, this way we directly know if a library is in the sketchbook,
core, referenced-core or bundled in the IDE.
This simplify a lot of logic in the IDE.
ContributedLibrary is used to decode library_index.json and it's
intended to keep data coming only from the index.
Now, when the library_index is synced with the filesystem, the
metadata about installed libraries are kept in a separate list
to not mess up with the main index.
Previously the filtering was made on ContributedLibrary, but the
objects that is actually displayed is a ContributeLibraryReleases,
so it comens natural to filter on this class of objects.
Apparently the functionality is not affected by this commit, but
there may be some side-effect that may probably fix some
visualization bug.
Optional<T> helps to not forget to check about nullness where it is
needed.
This commit should be equivalent and shouln't fix any bug, BTW the
Optional<T> semantic turns out to be useful in the next commits.
Possibly all nullable values will be replaced by Optional in the
future.
- we ensure that there is always a filter selected, no more need
to check for non-nullness
- the filters are always the same, no need to pass a
Stream<Predicate<T>> around where Predicate<T> suffices
Since the method is called everywhere with the following parameters
isReadOnly(
BaseNoGui.librariesIndexer.getInstalledLibraries(),
BaseNoGui.getExamplesPath())
)
the static calls to BaseNoGui have been inlined into isReadOnly()
removing all the duplications around.
User testing on skilled devs showed that "buttons appear on click" behaviour is far from being understood.
Accessibility features (like moving with Arrow keys) should be untouched.
Still not a perfect solution; two compilation outputs will mix up anyway.
A major refactor should be needed to avoid using System.out anywhere and inverse multiplexing the streams so they can be muted or replicated on any Console.
This commit makes the Preferences dialog more usable by accessibility devices like screen readers.
Previously, a screen reader would only read the content of the text boxes. By using JLabel's setLabelFor() feature (and in some extreme cases, setAccessibleName()), a screen reader will know that a label is assigned to a text field. For example, instead of just reading "12", it will now read "Editor font size: 12".
This commit adds the Menu+Shift+I shortcut to the remaining menu entry in Base.java.
When the shortcut is called, the menu entry from Base.java is the one that will be called.
Please note that this commit actually adds the shortcut to its menu
entry under the "Tools" menu.
As a side effect, the shortcut tip is only shown in this entry and not
on the another one.
Menu usually means the Ctrl key on most modern systems.
This duplicates the entry, so now "Manage Libraries..." is available
in both under the "Tools" menu and inside the "Sketch" -> "Include
Library" menu.
The reasons for this change are:
- It makes sense for the entry to be there
- It makes easier for the user to click on the entry
Aditionally, I added a comment about a issue I found with the
newJMenuItemShift function on Xubuntu 17.04 regarding the Ctrl+Shift+K
shortcut.