[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version - #1246

Merged
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455
Jun 14, 2019
Merged

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version#1246
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented May 11, 2019

Copy link
Copy Markdown
Contributor

These commits (1) add the ability for the NetBeans splash screen to be automatically imprinted with the NetBeans product version and build number (2) makes the splash screen and "About" box look good on HiDPI displays, and (3) adds new simplified splash screen graphics.

(We could also ask David Schulz if he'd like to make an updated version of the old splash screen, making space for the version string. In that case the graphics uploaded here just serves as an example.)

This resolves https://issues.apache.org/jira/browse/NETBEANS-2455 and https://issues.apache.org/jira/browse/NETBEANS-378 . See attached screenshot.

Splash Screen HiDPI and Product Version

Old splash screen showing HiDPI scaling artifacts on Windows 10 at 150% DPI scaling:
old splash

Tested on Windows 10; it would be great if someone else can test it on MacOS (with a Retina screen) and Linux as well.

@AlexFalappa

AlexFalappa commented May 15, 2019

Copy link
Copy Markdown
Contributor

I see you used a very recent JDK (12.0.1) but are these modifications supported on older JDKs?
Does this also show up nicely on JDK 8 (Oracle and AdoptOpen implementations)?

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

On Windows, HiDPI screens are supported from JDK 9 and upwards; on MacOS it might have been introduced earlier (not sure).

On Java versions that do not support HiDPI screens, the splash screen should show up in low resolution, like before. I have confirmed this on JDK8 on Windows (I don't have a Mac to test).

The way this works is that the splash screen PNG is now double resolution, but resized to 50% (to SPLASH_WIDTH*SPLASH_HEIGHT logical pixels) via a transform on the paint method's Graphics2D object. JDK versions that support HiDPI will in turn apply its own transform to scale the image back up to a higher device pixel resolution.

@AlexFalappa

Copy link
Copy Markdown
Contributor

@eirikbakke thanks for the details.

You answered to my concerns, that is your implementation also degrades gracefully on older JDKs.

…us line, in preparation for adding a separate optional version text box.
No behavior should change as a result of this commit (refactoring only).
… splash screen.
Also added a horizontal alignment setting for the splash screen text box settings.
… (The splash screen image was already added in high resolution in a previous commit.)
@eirikbakke

eirikbakke commented Jun 7, 2019

Copy link
Copy Markdown
ContributorAuthor

The changes to ImageUtilities are now already merged as part of another PR ( #1273 ). Rebased this PR to remove merge conflicts.

@eirikbakkeeirikbakke added the API Change [ci] enable extra API related tests label Jun 9, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Adding API change label since this PR adds new properties that can be added to the branding file to set the location of the version string on the splash screen.

@neilcsmith-net

Copy link
Copy Markdown
Member

Added NB11.1 label. Would love to get this merged this week so I don't have to faff around with splash screens during the release process! 😄

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Added a comment on https://issues.apache.org/jira/browse/NETBEANS-2455 to see if there's consensus on this approach.

@GeertjanWielenga

Copy link
Copy Markdown

Just merge it unless there’d be any reason to disagree with this.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Will merge Friday, before feature freeze... just wanted to give David Schulz a chance to provide updated splash screen artwork, so I don't "overwrite" his work.

@geertjanw

Copy link
Copy Markdown
Member

Awesome, let's get it in for 11.1. :-)

@geertjanw

Copy link
Copy Markdown
Member

@eirikbakke, I leave this to you to merge, OK?

@eirikbakke
eirikbakke merged commit 7d7d0f7 into apache:masterJun 14, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Done. If we get new splash screen artwork but it's after the feature freeze it can just go in the following version.

@neilcsmith-net

Copy link
Copy Markdown
Member

@eirikbakke great! 👍 Personally, I don't think there's a problem with merging new artwork after feature freeze if people want it. At the same time, I prefer your artwork anyway - it's cleaner and more legible.

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

@eirikbakke

eirikbakke commented Jun 15, 2019

Copy link
Copy Markdown
ContributorAuthor

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

That would be a simple change to make. Feel free to open a JIRA issue for it. It should be done after the PR at #1278 gets merged, because the latter can make all the caching logic in ScaledBitmapIcon.java go into a superclass (I will make said simplification as part of that other PR).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

API Change[ci] enable extra API related tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@eirikbakke@AlexFalappa@neilcsmith-net@GeertjanWielenga@geertjanw
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version - #1246

Merged
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455
Jun 14, 2019
Merged

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version#1246
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented May 11, 2019

Copy link
Copy Markdown
Contributor

These commits (1) add the ability for the NetBeans splash screen to be automatically imprinted with the NetBeans product version and build number (2) makes the splash screen and "About" box look good on HiDPI displays, and (3) adds new simplified splash screen graphics.

(We could also ask David Schulz if he'd like to make an updated version of the old splash screen, making space for the version string. In that case the graphics uploaded here just serves as an example.)

This resolves https://issues.apache.org/jira/browse/NETBEANS-2455 and https://issues.apache.org/jira/browse/NETBEANS-378 . See attached screenshot.

Splash Screen HiDPI and Product Version

Old splash screen showing HiDPI scaling artifacts on Windows 10 at 150% DPI scaling:
old splash

Tested on Windows 10; it would be great if someone else can test it on MacOS (with a Retina screen) and Linux as well.

@AlexFalappa

AlexFalappa commented May 15, 2019

Copy link
Copy Markdown
Contributor

I see you used a very recent JDK (12.0.1) but are these modifications supported on older JDKs?
Does this also show up nicely on JDK 8 (Oracle and AdoptOpen implementations)?

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

On Windows, HiDPI screens are supported from JDK 9 and upwards; on MacOS it might have been introduced earlier (not sure).

On Java versions that do not support HiDPI screens, the splash screen should show up in low resolution, like before. I have confirmed this on JDK8 on Windows (I don't have a Mac to test).

The way this works is that the splash screen PNG is now double resolution, but resized to 50% (to SPLASH_WIDTH*SPLASH_HEIGHT logical pixels) via a transform on the paint method's Graphics2D object. JDK versions that support HiDPI will in turn apply its own transform to scale the image back up to a higher device pixel resolution.

@AlexFalappa

Copy link
Copy Markdown
Contributor

@eirikbakke thanks for the details.

You answered to my concerns, that is your implementation also degrades gracefully on older JDKs.

…us line, in preparation for adding a separate optional version text box.
No behavior should change as a result of this commit (refactoring only).
… splash screen.
Also added a horizontal alignment setting for the splash screen text box settings.
… (The splash screen image was already added in high resolution in a previous commit.)
@eirikbakke

eirikbakke commented Jun 7, 2019

Copy link
Copy Markdown
ContributorAuthor

The changes to ImageUtilities are now already merged as part of another PR ( #1273 ). Rebased this PR to remove merge conflicts.

@eirikbakkeeirikbakke added the API Change [ci] enable extra API related tests label Jun 9, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Adding API change label since this PR adds new properties that can be added to the branding file to set the location of the version string on the splash screen.

@neilcsmith-net

Copy link
Copy Markdown
Member

Added NB11.1 label. Would love to get this merged this week so I don't have to faff around with splash screens during the release process! 😄

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Added a comment on https://issues.apache.org/jira/browse/NETBEANS-2455 to see if there's consensus on this approach.

@GeertjanWielenga

Copy link
Copy Markdown

Just merge it unless there’d be any reason to disagree with this.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Will merge Friday, before feature freeze... just wanted to give David Schulz a chance to provide updated splash screen artwork, so I don't "overwrite" his work.

@geertjanw

Copy link
Copy Markdown
Member

Awesome, let's get it in for 11.1. :-)

@geertjanw

Copy link
Copy Markdown
Member

@eirikbakke, I leave this to you to merge, OK?

@eirikbakke
eirikbakke merged commit 7d7d0f7 into apache:masterJun 14, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Done. If we get new splash screen artwork but it's after the feature freeze it can just go in the following version.

@neilcsmith-net

Copy link
Copy Markdown
Member

@eirikbakke great! 👍 Personally, I don't think there's a problem with merging new artwork after feature freeze if people want it. At the same time, I prefer your artwork anyway - it's cleaner and more legible.

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

@eirikbakke

eirikbakke commented Jun 15, 2019

Copy link
Copy Markdown
ContributorAuthor

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

That would be a simple change to make. Feel free to open a JIRA issue for it. It should be done after the PR at #1278 gets merged, because the latter can make all the caching logic in ScaledBitmapIcon.java go into a superclass (I will make said simplification as part of that other PR).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

API Change[ci] enable extra API related tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@eirikbakke@AlexFalappa@neilcsmith-net@GeertjanWielenga@geertjanw
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version - #1246

Merged
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455
Jun 14, 2019
Merged

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version#1246
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented May 11, 2019

Copy link
Copy Markdown
Contributor

These commits (1) add the ability for the NetBeans splash screen to be automatically imprinted with the NetBeans product version and build number (2) makes the splash screen and "About" box look good on HiDPI displays, and (3) adds new simplified splash screen graphics.

(We could also ask David Schulz if he'd like to make an updated version of the old splash screen, making space for the version string. In that case the graphics uploaded here just serves as an example.)

This resolves https://issues.apache.org/jira/browse/NETBEANS-2455 and https://issues.apache.org/jira/browse/NETBEANS-378 . See attached screenshot.

Splash Screen HiDPI and Product Version

Old splash screen showing HiDPI scaling artifacts on Windows 10 at 150% DPI scaling:
old splash

Tested on Windows 10; it would be great if someone else can test it on MacOS (with a Retina screen) and Linux as well.

@AlexFalappa

AlexFalappa commented May 15, 2019

Copy link
Copy Markdown
Contributor

I see you used a very recent JDK (12.0.1) but are these modifications supported on older JDKs?
Does this also show up nicely on JDK 8 (Oracle and AdoptOpen implementations)?

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

On Windows, HiDPI screens are supported from JDK 9 and upwards; on MacOS it might have been introduced earlier (not sure).

On Java versions that do not support HiDPI screens, the splash screen should show up in low resolution, like before. I have confirmed this on JDK8 on Windows (I don't have a Mac to test).

The way this works is that the splash screen PNG is now double resolution, but resized to 50% (to SPLASH_WIDTH*SPLASH_HEIGHT logical pixels) via a transform on the paint method's Graphics2D object. JDK versions that support HiDPI will in turn apply its own transform to scale the image back up to a higher device pixel resolution.

@AlexFalappa

Copy link
Copy Markdown
Contributor

@eirikbakke thanks for the details.

You answered to my concerns, that is your implementation also degrades gracefully on older JDKs.

…us line, in preparation for adding a separate optional version text box.
No behavior should change as a result of this commit (refactoring only).
… splash screen.
Also added a horizontal alignment setting for the splash screen text box settings.
… (The splash screen image was already added in high resolution in a previous commit.)
@eirikbakke

eirikbakke commented Jun 7, 2019

Copy link
Copy Markdown
ContributorAuthor

The changes to ImageUtilities are now already merged as part of another PR ( #1273 ). Rebased this PR to remove merge conflicts.

@eirikbakkeeirikbakke added the API Change [ci] enable extra API related tests label Jun 9, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Adding API change label since this PR adds new properties that can be added to the branding file to set the location of the version string on the splash screen.

@neilcsmith-net

Copy link
Copy Markdown
Member

Added NB11.1 label. Would love to get this merged this week so I don't have to faff around with splash screens during the release process! 😄

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Added a comment on https://issues.apache.org/jira/browse/NETBEANS-2455 to see if there's consensus on this approach.

@GeertjanWielenga

Copy link
Copy Markdown

Just merge it unless there’d be any reason to disagree with this.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Will merge Friday, before feature freeze... just wanted to give David Schulz a chance to provide updated splash screen artwork, so I don't "overwrite" his work.

@geertjanw

Copy link
Copy Markdown
Member

Awesome, let's get it in for 11.1. :-)

@geertjanw

Copy link
Copy Markdown
Member

@eirikbakke, I leave this to you to merge, OK?

@eirikbakke
eirikbakke merged commit 7d7d0f7 into apache:masterJun 14, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Done. If we get new splash screen artwork but it's after the feature freeze it can just go in the following version.

@neilcsmith-net

Copy link
Copy Markdown
Member

@eirikbakke great! 👍 Personally, I don't think there's a problem with merging new artwork after feature freeze if people want it. At the same time, I prefer your artwork anyway - it's cleaner and more legible.

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

@eirikbakke

eirikbakke commented Jun 15, 2019

Copy link
Copy Markdown
ContributorAuthor

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

That would be a simple change to make. Feel free to open a JIRA issue for it. It should be done after the PR at #1278 gets merged, because the latter can make all the caching logic in ScaledBitmapIcon.java go into a superclass (I will make said simplification as part of that other PR).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

API Change[ci] enable extra API related tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@eirikbakke@AlexFalappa@neilcsmith-net@GeertjanWielenga@geertjanw
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version - #1246

Merged
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455
Jun 14, 2019
Merged

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version#1246
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented May 11, 2019

Copy link
Copy Markdown
Contributor

These commits (1) add the ability for the NetBeans splash screen to be automatically imprinted with the NetBeans product version and build number (2) makes the splash screen and "About" box look good on HiDPI displays, and (3) adds new simplified splash screen graphics.

(We could also ask David Schulz if he'd like to make an updated version of the old splash screen, making space for the version string. In that case the graphics uploaded here just serves as an example.)

This resolves https://issues.apache.org/jira/browse/NETBEANS-2455 and https://issues.apache.org/jira/browse/NETBEANS-378 . See attached screenshot.

Splash Screen HiDPI and Product Version

Old splash screen showing HiDPI scaling artifacts on Windows 10 at 150% DPI scaling:
old splash

Tested on Windows 10; it would be great if someone else can test it on MacOS (with a Retina screen) and Linux as well.

@AlexFalappa

AlexFalappa commented May 15, 2019

Copy link
Copy Markdown
Contributor

I see you used a very recent JDK (12.0.1) but are these modifications supported on older JDKs?
Does this also show up nicely on JDK 8 (Oracle and AdoptOpen implementations)?

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

On Windows, HiDPI screens are supported from JDK 9 and upwards; on MacOS it might have been introduced earlier (not sure).

On Java versions that do not support HiDPI screens, the splash screen should show up in low resolution, like before. I have confirmed this on JDK8 on Windows (I don't have a Mac to test).

The way this works is that the splash screen PNG is now double resolution, but resized to 50% (to SPLASH_WIDTH*SPLASH_HEIGHT logical pixels) via a transform on the paint method's Graphics2D object. JDK versions that support HiDPI will in turn apply its own transform to scale the image back up to a higher device pixel resolution.

@AlexFalappa

Copy link
Copy Markdown
Contributor

@eirikbakke thanks for the details.

You answered to my concerns, that is your implementation also degrades gracefully on older JDKs.

…us line, in preparation for adding a separate optional version text box.
No behavior should change as a result of this commit (refactoring only).
… splash screen.
Also added a horizontal alignment setting for the splash screen text box settings.
… (The splash screen image was already added in high resolution in a previous commit.)
@eirikbakke

eirikbakke commented Jun 7, 2019

Copy link
Copy Markdown
ContributorAuthor

The changes to ImageUtilities are now already merged as part of another PR ( #1273 ). Rebased this PR to remove merge conflicts.

@eirikbakkeeirikbakke added the API Change [ci] enable extra API related tests label Jun 9, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Adding API change label since this PR adds new properties that can be added to the branding file to set the location of the version string on the splash screen.

@neilcsmith-net

Copy link
Copy Markdown
Member

Added NB11.1 label. Would love to get this merged this week so I don't have to faff around with splash screens during the release process! 😄

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Added a comment on https://issues.apache.org/jira/browse/NETBEANS-2455 to see if there's consensus on this approach.

@GeertjanWielenga

Copy link
Copy Markdown

Just merge it unless there’d be any reason to disagree with this.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Will merge Friday, before feature freeze... just wanted to give David Schulz a chance to provide updated splash screen artwork, so I don't "overwrite" his work.

@geertjanw

Copy link
Copy Markdown
Member

Awesome, let's get it in for 11.1. :-)

@geertjanw

Copy link
Copy Markdown
Member

@eirikbakke, I leave this to you to merge, OK?

@eirikbakke
eirikbakke merged commit 7d7d0f7 into apache:masterJun 14, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Done. If we get new splash screen artwork but it's after the feature freeze it can just go in the following version.

@neilcsmith-net

Copy link
Copy Markdown
Member

@eirikbakke great! 👍 Personally, I don't think there's a problem with merging new artwork after feature freeze if people want it. At the same time, I prefer your artwork anyway - it's cleaner and more legible.

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

@eirikbakke

eirikbakke commented Jun 15, 2019

Copy link
Copy Markdown
ContributorAuthor

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

That would be a simple change to make. Feel free to open a JIRA issue for it. It should be done after the PR at #1278 gets merged, because the latter can make all the caching logic in ScaledBitmapIcon.java go into a superclass (I will make said simplification as part of that other PR).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

API Change[ci] enable extra API related tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@eirikbakke@AlexFalappa@neilcsmith-net@GeertjanWielenga@geertjanw
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version - #1246

Merged
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455
Jun 14, 2019
Merged

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version#1246
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented May 11, 2019

Copy link
Copy Markdown
Contributor

These commits (1) add the ability for the NetBeans splash screen to be automatically imprinted with the NetBeans product version and build number (2) makes the splash screen and "About" box look good on HiDPI displays, and (3) adds new simplified splash screen graphics.

(We could also ask David Schulz if he'd like to make an updated version of the old splash screen, making space for the version string. In that case the graphics uploaded here just serves as an example.)

This resolves https://issues.apache.org/jira/browse/NETBEANS-2455 and https://issues.apache.org/jira/browse/NETBEANS-378 . See attached screenshot.

Splash Screen HiDPI and Product Version

Old splash screen showing HiDPI scaling artifacts on Windows 10 at 150% DPI scaling:
old splash

Tested on Windows 10; it would be great if someone else can test it on MacOS (with a Retina screen) and Linux as well.

@AlexFalappa

AlexFalappa commented May 15, 2019

Copy link
Copy Markdown
Contributor

I see you used a very recent JDK (12.0.1) but are these modifications supported on older JDKs?
Does this also show up nicely on JDK 8 (Oracle and AdoptOpen implementations)?

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

On Windows, HiDPI screens are supported from JDK 9 and upwards; on MacOS it might have been introduced earlier (not sure).

On Java versions that do not support HiDPI screens, the splash screen should show up in low resolution, like before. I have confirmed this on JDK8 on Windows (I don't have a Mac to test).

The way this works is that the splash screen PNG is now double resolution, but resized to 50% (to SPLASH_WIDTH*SPLASH_HEIGHT logical pixels) via a transform on the paint method's Graphics2D object. JDK versions that support HiDPI will in turn apply its own transform to scale the image back up to a higher device pixel resolution.

@AlexFalappa

Copy link
Copy Markdown
Contributor

@eirikbakke thanks for the details.

You answered to my concerns, that is your implementation also degrades gracefully on older JDKs.

…us line, in preparation for adding a separate optional version text box.
No behavior should change as a result of this commit (refactoring only).
… splash screen.
Also added a horizontal alignment setting for the splash screen text box settings.
… (The splash screen image was already added in high resolution in a previous commit.)
@eirikbakke

eirikbakke commented Jun 7, 2019

Copy link
Copy Markdown
ContributorAuthor

The changes to ImageUtilities are now already merged as part of another PR ( #1273 ). Rebased this PR to remove merge conflicts.

@eirikbakkeeirikbakke added the API Change [ci] enable extra API related tests label Jun 9, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Adding API change label since this PR adds new properties that can be added to the branding file to set the location of the version string on the splash screen.

@neilcsmith-net

Copy link
Copy Markdown
Member

Added NB11.1 label. Would love to get this merged this week so I don't have to faff around with splash screens during the release process! 😄

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Added a comment on https://issues.apache.org/jira/browse/NETBEANS-2455 to see if there's consensus on this approach.

@GeertjanWielenga

Copy link
Copy Markdown

Just merge it unless there’d be any reason to disagree with this.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Will merge Friday, before feature freeze... just wanted to give David Schulz a chance to provide updated splash screen artwork, so I don't "overwrite" his work.

@geertjanw

Copy link
Copy Markdown
Member

Awesome, let's get it in for 11.1. :-)

@geertjanw

Copy link
Copy Markdown
Member

@eirikbakke, I leave this to you to merge, OK?

@eirikbakke
eirikbakke merged commit 7d7d0f7 into apache:masterJun 14, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Done. If we get new splash screen artwork but it's after the feature freeze it can just go in the following version.

@neilcsmith-net

Copy link
Copy Markdown
Member

@eirikbakke great! 👍 Personally, I don't think there's a problem with merging new artwork after feature freeze if people want it. At the same time, I prefer your artwork anyway - it's cleaner and more legible.

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

@eirikbakke

eirikbakke commented Jun 15, 2019

Copy link
Copy Markdown
ContributorAuthor

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

That would be a simple change to make. Feel free to open a JIRA issue for it. It should be done after the PR at #1278 gets merged, because the latter can make all the caching logic in ScaledBitmapIcon.java go into a superclass (I will make said simplification as part of that other PR).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

API Change[ci] enable extra API related tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@eirikbakke@AlexFalappa@neilcsmith-net@GeertjanWielenga@geertjanw
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version - #1246

Merged
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455
Jun 14, 2019
Merged

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version#1246
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented May 11, 2019

Copy link
Copy Markdown
Contributor

These commits (1) add the ability for the NetBeans splash screen to be automatically imprinted with the NetBeans product version and build number (2) makes the splash screen and "About" box look good on HiDPI displays, and (3) adds new simplified splash screen graphics.

(We could also ask David Schulz if he'd like to make an updated version of the old splash screen, making space for the version string. In that case the graphics uploaded here just serves as an example.)

This resolves https://issues.apache.org/jira/browse/NETBEANS-2455 and https://issues.apache.org/jira/browse/NETBEANS-378 . See attached screenshot.

Splash Screen HiDPI and Product Version

Old splash screen showing HiDPI scaling artifacts on Windows 10 at 150% DPI scaling:
old splash

Tested on Windows 10; it would be great if someone else can test it on MacOS (with a Retina screen) and Linux as well.

@AlexFalappa

AlexFalappa commented May 15, 2019

Copy link
Copy Markdown
Contributor

I see you used a very recent JDK (12.0.1) but are these modifications supported on older JDKs?
Does this also show up nicely on JDK 8 (Oracle and AdoptOpen implementations)?

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

On Windows, HiDPI screens are supported from JDK 9 and upwards; on MacOS it might have been introduced earlier (not sure).

On Java versions that do not support HiDPI screens, the splash screen should show up in low resolution, like before. I have confirmed this on JDK8 on Windows (I don't have a Mac to test).

The way this works is that the splash screen PNG is now double resolution, but resized to 50% (to SPLASH_WIDTH*SPLASH_HEIGHT logical pixels) via a transform on the paint method's Graphics2D object. JDK versions that support HiDPI will in turn apply its own transform to scale the image back up to a higher device pixel resolution.

@AlexFalappa

Copy link
Copy Markdown
Contributor

@eirikbakke thanks for the details.

You answered to my concerns, that is your implementation also degrades gracefully on older JDKs.

…us line, in preparation for adding a separate optional version text box.
No behavior should change as a result of this commit (refactoring only).
… splash screen.
Also added a horizontal alignment setting for the splash screen text box settings.
… (The splash screen image was already added in high resolution in a previous commit.)
@eirikbakke

eirikbakke commented Jun 7, 2019

Copy link
Copy Markdown
ContributorAuthor

The changes to ImageUtilities are now already merged as part of another PR ( #1273 ). Rebased this PR to remove merge conflicts.

@eirikbakkeeirikbakke added the API Change [ci] enable extra API related tests label Jun 9, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Adding API change label since this PR adds new properties that can be added to the branding file to set the location of the version string on the splash screen.

@neilcsmith-net

Copy link
Copy Markdown
Member

Added NB11.1 label. Would love to get this merged this week so I don't have to faff around with splash screens during the release process! 😄

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Added a comment on https://issues.apache.org/jira/browse/NETBEANS-2455 to see if there's consensus on this approach.

@GeertjanWielenga

Copy link
Copy Markdown

Just merge it unless there’d be any reason to disagree with this.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Will merge Friday, before feature freeze... just wanted to give David Schulz a chance to provide updated splash screen artwork, so I don't "overwrite" his work.

@geertjanw

Copy link
Copy Markdown
Member

Awesome, let's get it in for 11.1. :-)

@geertjanw

Copy link
Copy Markdown
Member

@eirikbakke, I leave this to you to merge, OK?

@eirikbakke
eirikbakke merged commit 7d7d0f7 into apache:masterJun 14, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Done. If we get new splash screen artwork but it's after the feature freeze it can just go in the following version.

@neilcsmith-net

Copy link
Copy Markdown
Member

@eirikbakke great! 👍 Personally, I don't think there's a problem with merging new artwork after feature freeze if people want it. At the same time, I prefer your artwork anyway - it's cleaner and more legible.

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

@eirikbakke

eirikbakke commented Jun 15, 2019

Copy link
Copy Markdown
ContributorAuthor

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

That would be a simple change to make. Feel free to open a JIRA issue for it. It should be done after the PR at #1278 gets merged, because the latter can make all the caching logic in ScaledBitmapIcon.java go into a superclass (I will make said simplification as part of that other PR).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

API Change[ci] enable extra API related tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@eirikbakke@AlexFalappa@neilcsmith-net@GeertjanWielenga@geertjanw
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version - #1246

Merged
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455
Jun 14, 2019
Merged

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version#1246
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented May 11, 2019

Copy link
Copy Markdown
Contributor

These commits (1) add the ability for the NetBeans splash screen to be automatically imprinted with the NetBeans product version and build number (2) makes the splash screen and "About" box look good on HiDPI displays, and (3) adds new simplified splash screen graphics.

(We could also ask David Schulz if he'd like to make an updated version of the old splash screen, making space for the version string. In that case the graphics uploaded here just serves as an example.)

This resolves https://issues.apache.org/jira/browse/NETBEANS-2455 and https://issues.apache.org/jira/browse/NETBEANS-378 . See attached screenshot.

Splash Screen HiDPI and Product Version

Old splash screen showing HiDPI scaling artifacts on Windows 10 at 150% DPI scaling:
old splash

Tested on Windows 10; it would be great if someone else can test it on MacOS (with a Retina screen) and Linux as well.

@AlexFalappa

AlexFalappa commented May 15, 2019

Copy link
Copy Markdown
Contributor

I see you used a very recent JDK (12.0.1) but are these modifications supported on older JDKs?
Does this also show up nicely on JDK 8 (Oracle and AdoptOpen implementations)?

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

On Windows, HiDPI screens are supported from JDK 9 and upwards; on MacOS it might have been introduced earlier (not sure).

On Java versions that do not support HiDPI screens, the splash screen should show up in low resolution, like before. I have confirmed this on JDK8 on Windows (I don't have a Mac to test).

The way this works is that the splash screen PNG is now double resolution, but resized to 50% (to SPLASH_WIDTH*SPLASH_HEIGHT logical pixels) via a transform on the paint method's Graphics2D object. JDK versions that support HiDPI will in turn apply its own transform to scale the image back up to a higher device pixel resolution.

@AlexFalappa

Copy link
Copy Markdown
Contributor

@eirikbakke thanks for the details.

You answered to my concerns, that is your implementation also degrades gracefully on older JDKs.

…us line, in preparation for adding a separate optional version text box.
No behavior should change as a result of this commit (refactoring only).
… splash screen.
Also added a horizontal alignment setting for the splash screen text box settings.
… (The splash screen image was already added in high resolution in a previous commit.)
@eirikbakke

eirikbakke commented Jun 7, 2019

Copy link
Copy Markdown
ContributorAuthor

The changes to ImageUtilities are now already merged as part of another PR ( #1273 ). Rebased this PR to remove merge conflicts.

@eirikbakkeeirikbakke added the API Change [ci] enable extra API related tests label Jun 9, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Adding API change label since this PR adds new properties that can be added to the branding file to set the location of the version string on the splash screen.

@neilcsmith-net

Copy link
Copy Markdown
Member

Added NB11.1 label. Would love to get this merged this week so I don't have to faff around with splash screens during the release process! 😄

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Added a comment on https://issues.apache.org/jira/browse/NETBEANS-2455 to see if there's consensus on this approach.

@GeertjanWielenga

Copy link
Copy Markdown

Just merge it unless there’d be any reason to disagree with this.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Will merge Friday, before feature freeze... just wanted to give David Schulz a chance to provide updated splash screen artwork, so I don't "overwrite" his work.

@geertjanw

Copy link
Copy Markdown
Member

Awesome, let's get it in for 11.1. :-)

@geertjanw

Copy link
Copy Markdown
Member

@eirikbakke, I leave this to you to merge, OK?

@eirikbakke
eirikbakke merged commit 7d7d0f7 into apache:masterJun 14, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Done. If we get new splash screen artwork but it's after the feature freeze it can just go in the following version.

@neilcsmith-net

Copy link
Copy Markdown
Member

@eirikbakke great! 👍 Personally, I don't think there's a problem with merging new artwork after feature freeze if people want it. At the same time, I prefer your artwork anyway - it's cleaner and more legible.

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

@eirikbakke

eirikbakke commented Jun 15, 2019

Copy link
Copy Markdown
ContributorAuthor

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

That would be a simple change to make. Feel free to open a JIRA issue for it. It should be done after the PR at #1278 gets merged, because the latter can make all the caching logic in ScaledBitmapIcon.java go into a superclass (I will make said simplification as part of that other PR).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

API Change[ci] enable extra API related tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@eirikbakke@AlexFalappa@neilcsmith-net@GeertjanWielenga@geertjanw
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version - #1246

Merged
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455
Jun 14, 2019
Merged

[NETBEANS-378,NETBEANS-2455] HiDPI splash screen with product version#1246
eirikbakke merged 5 commits into
apache:masterfrom
eirikbakke:NETBEANS-2455

Conversation

@eirikbakke

@eirikbakkeeirikbakke commented May 11, 2019

Copy link
Copy Markdown
Contributor

These commits (1) add the ability for the NetBeans splash screen to be automatically imprinted with the NetBeans product version and build number (2) makes the splash screen and "About" box look good on HiDPI displays, and (3) adds new simplified splash screen graphics.

(We could also ask David Schulz if he'd like to make an updated version of the old splash screen, making space for the version string. In that case the graphics uploaded here just serves as an example.)

This resolves https://issues.apache.org/jira/browse/NETBEANS-2455 and https://issues.apache.org/jira/browse/NETBEANS-378 . See attached screenshot.

Splash Screen HiDPI and Product Version

Old splash screen showing HiDPI scaling artifacts on Windows 10 at 150% DPI scaling:
old splash

Tested on Windows 10; it would be great if someone else can test it on MacOS (with a Retina screen) and Linux as well.

@AlexFalappa

AlexFalappa commented May 15, 2019

Copy link
Copy Markdown
Contributor

I see you used a very recent JDK (12.0.1) but are these modifications supported on older JDKs?
Does this also show up nicely on JDK 8 (Oracle and AdoptOpen implementations)?

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

On Windows, HiDPI screens are supported from JDK 9 and upwards; on MacOS it might have been introduced earlier (not sure).

On Java versions that do not support HiDPI screens, the splash screen should show up in low resolution, like before. I have confirmed this on JDK8 on Windows (I don't have a Mac to test).

The way this works is that the splash screen PNG is now double resolution, but resized to 50% (to SPLASH_WIDTH*SPLASH_HEIGHT logical pixels) via a transform on the paint method's Graphics2D object. JDK versions that support HiDPI will in turn apply its own transform to scale the image back up to a higher device pixel resolution.

@AlexFalappa

Copy link
Copy Markdown
Contributor

@eirikbakke thanks for the details.

You answered to my concerns, that is your implementation also degrades gracefully on older JDKs.

…us line, in preparation for adding a separate optional version text box.
No behavior should change as a result of this commit (refactoring only).
… splash screen.
Also added a horizontal alignment setting for the splash screen text box settings.
… (The splash screen image was already added in high resolution in a previous commit.)
@eirikbakke

eirikbakke commented Jun 7, 2019

Copy link
Copy Markdown
ContributorAuthor

The changes to ImageUtilities are now already merged as part of another PR ( #1273 ). Rebased this PR to remove merge conflicts.

@eirikbakkeeirikbakke added the API Change [ci] enable extra API related tests label Jun 9, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Adding API change label since this PR adds new properties that can be added to the branding file to set the location of the version string on the splash screen.

@neilcsmith-net

Copy link
Copy Markdown
Member

Added NB11.1 label. Would love to get this merged this week so I don't have to faff around with splash screens during the release process! 😄

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Added a comment on https://issues.apache.org/jira/browse/NETBEANS-2455 to see if there's consensus on this approach.

@GeertjanWielenga

Copy link
Copy Markdown

Just merge it unless there’d be any reason to disagree with this.

@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Will merge Friday, before feature freeze... just wanted to give David Schulz a chance to provide updated splash screen artwork, so I don't "overwrite" his work.

@geertjanw

Copy link
Copy Markdown
Member

Awesome, let's get it in for 11.1. :-)

@geertjanw

Copy link
Copy Markdown
Member

@eirikbakke, I leave this to you to merge, OK?

@eirikbakke
eirikbakke merged commit 7d7d0f7 into apache:masterJun 14, 2019
@eirikbakke

Copy link
Copy Markdown
ContributorAuthor

Done. If we get new splash screen artwork but it's after the feature freeze it can just go in the following version.

@neilcsmith-net

Copy link
Copy Markdown
Member

@eirikbakke great! 👍 Personally, I don't think there's a problem with merging new artwork after feature freeze if people want it. At the same time, I prefer your artwork anyway - it's cleaner and more legible.

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

@eirikbakke

eirikbakke commented Jun 15, 2019

Copy link
Copy Markdown
ContributorAuthor

One possible enhancement for this might be to also consider screen resolution in deciding splash size? I have a large 2560x1440 display, but with DPI scaling set to 1. Still be nice to have larger splash on such a setup.

That would be a simple change to make. Feel free to open a JIRA issue for it. It should be done after the PR at #1278 gets merged, because the latter can make all the caching logic in ScaledBitmapIcon.java go into a superclass (I will make said simplification as part of that other PR).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

API Change[ci] enable extra API related tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@eirikbakke@AlexFalappa@neilcsmith-net@GeertjanWielenga@geertjanw