Grafoscopio/src/Grafoscopio/GrafoscopioUrlNode.class.st

98 lines
1.9 KiB
Smalltalk

"
URL Node downloads content for rendering.
"
Class {
#name : #GrafoscopioUrlNode,
#superclass : #GrafoscopioLeafNode,
#instVars : [
'link'
],
#category : #'Grafoscopio-Model'
}
{ #category : #'instance creation' }
GrafoscopioUrlNode class >> icon [
^ self iconNamed: #remote
]
{ #category : #'instance creation' }
GrafoscopioUrlNode class >> nameForSelection [
^ 'New URL Node'
]
{ #category : #'instance creation' }
GrafoscopioUrlNode class >> new [
^ super new
content;
yourself
]
{ #category : #'instance creation' }
GrafoscopioUrlNode class >> showInMenu [
^ true
]
{ #category : #'as yet unclassified' }
GrafoscopioUrlNode >> acceptVisitor: aGrafoscopioVisitor [
aGrafoscopioVisitor visitUrlNode: self.
]
{ #category : #'as yet unclassified' }
GrafoscopioUrlNode >> content [
^ (self url
ifNil: [ ' Invalid url ' ]
ifNotNil: [ :url | self fetchContent: url ])
]
{ #category : #'as yet unclassified' }
GrafoscopioUrlNode >> fetchContent: anUrl [
^ (ZnEasy get: anUrl) entity contents
]
{ #category : #'as yet unclassified' }
GrafoscopioUrlNode >> getUrl [
| url |
url := UIManager default
request: 'Please insert a url '
initialAnswer: 'http://'
title: 'URL Node'.
url ifNil: [ ^ nil ].
url := url asZnUrl.
(url host isEmptyOrNil
or: [ url scheme isEmptyOrNil or: [ url authority isEmptyOrNil ] ])
ifTrue: [ ^ nil ].
^ url
]
{ #category : #accessing }
GrafoscopioUrlNode >> link: aZnUrl [
link := aZnUrl
]
{ #category : #'as yet unclassified' }
GrafoscopioUrlNode >> openIn: aNotebook [
super openIn: aNotebook.
aNotebook links text: (link ifNil: 'Invalid url') asString
]
{ #category : #'as yet unclassified' }
GrafoscopioUrlNode >> shouldAskBeforeRemove [
^ false
]
{ #category : #content }
GrafoscopioUrlNode >> text [
^ self content
]
{ #category : #'as yet unclassified' }
GrafoscopioUrlNode >> text: aString [
]
{ #category : #'as yet unclassified' }
GrafoscopioUrlNode >> url [
^ link ifNil: [ link := self getUrl ]
]