HtmlEditTbox -kontrollin on kehittänyt
Juha Lähteenmäki. Kontrollin käyttö "ei kaupallisiin" tarkoituksiin on
sallittu ja voit kopioida tai levittää sitä sellaisenaan
(asennuspakettia ei saa muuttaa).
| Dokumentin tekijät | Juha Lähteenmäki |
| Jakelu: | Kaikki kontrollin Beta- testaajat ja käyttäjät |
| Jakelun rajoitukset | Ei rajoituksia |
| Viimeksi muokattu: | 19.08.2003 |
| Versiotiedot: (esim. Työversio (1.0)) | 1.0, ensimmäinen jakeluun pistetty versio (jakelukandidaatti 1) |
| Dokumentointi malli: | STEP, Versio 1.0 beta 1 |
| Dokumentin kattavuus: | Kattaa HtmlEditTbox:n yleisohjeet/asennusohjeet, käyttöohjeet ja julkisen rajapinnan kuvauksen |
| Muutoksia: (ekan version valmistumisen jälkeen) | - |
HtmlEditTbox on ASP.NET ympäristössä käytettäväksi suunniteltu Web-kontrolli, joka mahdollistaa Html-muotoiluja sisältävän tekstin kirjoittamisen Web-sivulla. Kontrolli tarjoaa siis käyttäjälle Web-sivulla toimivan WYSIWYG Html-editorin. Perusideana on tarjota yksinkertaiset perusmuotoilut ja toiminnot nopeasti sekä helposti Html:ää tuntemattomankin käyttäjän ulottuville mutta toisaalta tarjota edistyneelle käyttäjälle mahdollisuus Html-lähdekoodin muokkaukseen. Erilaisia tarpeita varten kontrollissa on myös kolme moodia: ReadOnly, Basic ja Advanced. Näitä moodeja voi vaihdella myös ajonaikana.
1) ReadOnly moodissa (eReadOnly) käyttäjä ei voi muokata kontrollin sisältämää tekstiä eikä työkalupalkki ole näkyvissä. Kontrolli näyttää kuitenkin sisältönsä Html-muotoiluja ja tarvittaessa vierityspalkkia käyttäen..

2) Perusmoodissa (eBasic) kontrollin sisältämää tekstiä on mahdollista muokata mutta työkalupalkissa on näkyvissä vain kaikkein tärkeimmät toiminnot.

3) Advanced moodissa (eAdvanced) muotoilutoimintoja on näkyvissä perusmoodia enemmän. Muuten itse kontrollin toiminta ei eroa perusmoodissa olevan kontrollin toiminnasta

Moodin ja kontrollin erillisten tyyliasetusten kautta tapahtuvan mukauttamisen lisäksi kontrollin suunnittelussa on painotettu mahdollisuutta tehdä kontrollista helposti erikielisiä versioita. Tästä syystä kaikki olennaisimmat kontrollin ulospäin näkyvät tekstit ovat asetettavissa sekä suunnittelu- että ajoaikana.
Asiakaspäässä kontrollin käyttö edellyttää IE5.5 tai uudempaa selainta. Laitteiston on oltava riittävän tehokas (testattu minimi P133 Win98 32 Mt muistia) ja verkkoyhteyden vähintään ISDN-nopeusluokkaa (varsinkin jos sivulla käytetään useampia kontrolleja ViewState-enabloituna) mikäli kontrollia käytetään verkon läpi.
Palvelinpuolelle edellytyksenä on Windows ympäristö ja riittävän tehokas laitteisto joka pyörittää IIS5:sta tai uudempaa sekä .NET -Framework:n versio 1.0 tai uudempi. Suunnittelutilan tuen tarjoava ohjelmointiympäristö, kuten Visual Studio.NET, helpottaa kontrollin käyttöä mutta välttämätön edellytys se ei ole. Kontrollin suunnittelutilan toimivuus on testattu Visual Studio.NET:llä .NET -framework:n 1.0 ja 1.1-versiolla sekä Asp.NET Web Matrix:n versiolla 0.6 build 812 ja sitä voi käyttää ASPX-sivulla normaalin Web-kontrollin tapaan (ks. esim luku 6).
Asennuksen esiehdoiksi ks. edellisen luvun kontrollin käyttövaatimukset.
Kun haluat käyttää kontrollia tietyllä ASPX-sivulla toimi seuraavasti:
Mikäli käytät suunnittelutilan tuen tarjoavaa työkalua kuten Visual Studio.NET:ä
Kontrolli tarjoaa seuraavat toiminnot (Toiminnoista kaikki eivät ole käytettävissä muussa kuin Advanced -tilassa)
| Toiminto | Toiminto |
| Lähettää kontrollin sisällön (HTML) serverille. Saa aikaan Save-eventin --> Saa aikaan serverillä käynnin | |
| Siirtää valitun tekstin leikepöydälle (ja poistaa tekstin kontrollista) (pikanäppäin Ctrl x)--> Ei serverillä käyntiä | |
| Kopioi valitun tekstin leikepöydälle (pikanäppäin Ctrl c)--> Ei serverillä käyntiä | |
| Liittää tekstin valittuun kohtaan leikepöydältä (pikanäppäin Ctrl v)--> Ei serverillä käyntiä | |
| Lihavoi valitun tekstin tai mikäli teksti ennestään lihavoitu poistaa lihavoinnin. Mikäli valittua tekstiä ei ole asettaa lihavointiominaisuuden päälle tai pois --> Ei serverillä käyntiä | |
| Kursivoi valitun tekstin tai mikäli teksti ennestään kursivoitu poistaa kursivoinnin. Mikäli valittua tekstiä ei ole asettaa kursivointiominaisuuden päälle tai pois --> Ei serverillä käyntiä | |
| Alleviivaa valitun tekstin tai mikäli teksti ennestään alleviivattu poistaa alleviivauksen. Mikäli valittua tekstiä ei ole asettaa alleviivausominaisuuden päälle tai pois --> Ei serverillä käyntiä | |
| Muuttaa valitun tekstin/aktiivisen rivin tekstin numeroiduksi listaksi tai mikäli teksti ennestään numerolista poistaa ko. ominaisuuden. --> Ei serverillä käyntiä | |
| Muuttaa valitun tekstin/aktiivisen rivin tekstin numeroimattomaksi listaksi tai mikäli teksti ennestään numeroimaton lista poistaa ko. ominaisuuden. --> Ei serverillä käyntiä | |
| Tasaa valitun/aktiivisen rivin tekstin vasemmalle --> Ei serverillä käyntiä | |
| Keskittää valitun/aktiivisen rivin tekstin --> Ei serverillä käyntiä | |
| Lisää vaakaviivan valittuun paikkaan --> Ei serverillä käyntiä | |
| Lisää hyperlinkin valittuun paikkaan käyttäen tekstinä joko valittua tekstiä tai mikäli tekstiä ei valittu hyperlinkin osoitetta--> Ei serverillä käyntiä | |
| Lisää kuvan tekstin loppuun--> Ei serverillä käyntiä | |
| Tekstin muotoiluvalinta | Muuttaa aktiivisen rivin tekstin valitun tasoiseksi otsikoksi tai normaali tyyliseksi--> Ei serverillä käyntiä |
| Lähdekoodin näytön valinta/valinnan poisto | Näyttää tai piilottaa Html-lähdekoodin |
Kontrollin ulospäin näkyvä rajapinta on pyritty saamaan mahdollisimman yksinkertaiseksi jotta kontrollin käyttö olisi helppoa. Myös suunnittelutilan näkymä vastaa mahdollisimman tarkasti ajonaikaista kontrollia jotta esim. tyyliominaisuuksien muuttaminen jo suunnittelutilassa olisi helpompaa. Muotoiluun vaikuttavien ominaisuuksien asettaminen suunnittelutilassa on suositeltavaa, koska tällöin ulkoasun ja toiminnallisuuden erottaminen onnistuu helpommin ja toisaalta esim. ViewState voidaan disabloida ilman että tyyliasetukset häviävät. ViewState:n disablointi varsinkin useampia kontrolleja sisältävillä ja tehokkuuden suhteen kriittisillä ASPX-sivuilla onkin järkevää, koska itse kontrollin sisältämän Html-tekstin säilytys tehdään ViewStatesta riippumattomasti ja ViewState tahtoo useissa tapauksissa kasvaa muuhun dataan nähden melko suureksi kuormittaen tarpeettomasti verkkoyhteyttä.
Kontrollin tarjoama rajapinta on jakautunut periaatteessa kolmeen osaan. Koko kontrollia koskevat metodit ja propertyt on kasattu suoraan pääkontrolliluokan alle, pelkästään ToolBar:iin vaikuttavat ToolBar propertyn sekä pelkkään editoriosaan vaikuttavat taas EditTbox propertyn alle. Propertyjen nimeämisessä on pyritty noudattamaan selkeää logiikkaa, joten rajapinnan käytön pitäisi olla suhteellisen helppoa. Suuri osa koko kontrollia koskevista propertyistä ja metodeista on lisäksi WebControl-kantaluokasta periytettyjä joten niiden dokumentaatio löytyy jo .NET:n mukana tulevasta dokumentaatiosta.
Kontrollista ulospäin näkyvät luokat nimiavaruuksineen ovat:
Seuraavissa rajapintakuvauksissa on kuvattu kaikki kontrollista ulospäin näkyvät ominaisuudet. Mikäli ominaisuus on periytynyt kantaluokasta eikä sen toteutusta/toimintaa ole millään tavalla kantaluokan vastaavasta muutettu on rajapintakuvauksen kohdalla pelkästään linkki kantaluokan rajapintakuvaukseen.
|
|
Public Interface |
|
|
Internal Interface |
|
|
Public Class |
|
|
Internal Class |
|
|
Public Property |
|
|
Protected Property |
|
|
Internal Property |
|
|
Private Property |
|
|
Public Event |
|
|
Internal Event |
|
|
Public Const/Enum |
|
|
Protected Const/Enum |
|
|
Internal Const/Enum |
|
|
Private Const/Enum |
|
|
Public method |
|
|
Protected method |
|
|
Internal method |
|
|
Private method |
| Nimi: (myös nimiav.) | Web.UI.WebControls.HtmlEditTbox |
| Kuvaus: (tehtävä) |
Kontrollin pääluokka ja ulospäin näkyvä rajapintaluokka. Tämän luokan kautta päästään käsiksi kaikkiin kontrollin ominaisuuksiin (propertyt) ja toimintoihin. Pelkästään työkalupalkkiin ja varsinaiseen editoriosaan liittyvät ominaisuudet on ryhmitelty oman alirajapintansa alle
|
| Versio: | 1.0, versiosykli 2 |
Periytyy:
| Luokka/rajapinta | Kuvaus (erityisesti kantaluokkanäkökulmasta) |
|
|
.NET:n WebControllien kantaluokka. Kantaluokan valmiiksi tarjoamat ominaisuudet ja yhtenäinen rajapinta muiden WebControllien kanssa tekevät periyttämisestä ehdottomasti järkevimmän ratkaisun.
|
| Ominaisuus | Kuvaus |
|
|
Enumi joka kuvaa HtmEditTbox-kontrollin mahdollisia tiloja. Tilat
ovat eBasic (käyttöliittymä basic-moodissa) , eAdvanced
(käyttöliittymä advanced moodissa) sekä eReadOnly (Toolbar-piilossa
ja käyttöliittymä ReadOnly moodissa) (ks. moodispesifiset kuvat) Virhekäsittely:- |
|
|
HtmEditTbox-kontrollin tila. Mahdolliset tilat ovat eBasic (käyttöliittymä basic-moodissa) , eAdvanced (käyttöliittymä advanced moodissa), sekä eReadOnly (ks. moodispesifiset kuvat) Oletus: eBasic Esim: HtmlEditTbox1.Mode = HtmlEditTbox.EHtmlEditTboxState.eBasic; Virhekäsittely:- |
|
|
HtmEditTbox-kontrollin ToolBar:iin liittyvät ominaisuudet. ToolBar:n tarjoamat julkiset propertyt löytyvät HtmlEditTboxToolBar:n kohdalta. Property on readonly eli ToolBar:ia ei voi kerralla asettaa mutta sen yksittäiset ominaisuudet ovat muutettavissa Oletus: ToolBar ko. moodia vastaavassa oletustilassa Esim. HtmlEditTbox1.ToolBar.BtnSaveToolTip = "Tässäpä tallennus
nappula"; Virhekäsittely: Jos lapsikontrollien alustus jostakin syystä epäonnistuu viittaus aiheuttaa NullReferenceException:in |
|
|
HtmEditTbox-kontrollin TextBox:iin liittyvät ominaisuudet. TextBox:n tarjoamat julkiset propertyt löytyvät HtmlEditTboxTextbox:n, kohdalta. Property on readonly eli TextBox:ia ei voi kerralla asettaa mutta sen yksittäiset ominaisuudet ovat muutettavissa Oletus: TextBox: ko. moodia ja sourcevalintatilaa vastaavassa oletustilassa Esim. HtmlEditTbox1.EditTextBox.BackColor =
System.Drawing.Color.Red; Virhekäsittely: Jos lapsikontrollien alustus jostakin syystä epäonnistuu viittaus aiheuttaa NullReferenceException:in |
|
|
Eventti joka nousee kun HtmlEditTbox:n teksti tallennetaan (kun painetaan Save-nappulaa). Parametrina välitetään src = HtmlEditTbox ja eventtiargumenttiluokkan HtmlEditTboxEventArgs ilmentymä. Esim. override
protected
void
OnInit(EventArgs e) //sivun alustus private void HtmlEditTbox1_TboxHTMLSave(object sender,
Web.UI.WebControls.HtmlEditTbox.HtmlEditTboxSaveEventArgs e)
Virhekäsittely:-
|
| Nimi: (myös nimiav.) | Web.UI.WebControls.HtmlEditTboxToolBar |
| Kuvaus: (tehtävä) |
Kontrollin työkalupalkin ominaisuuksista vastaava luokka.
|
| Versio: | 1.0, versiosykli 2 |
Periytyy:
| Luokka/rajapinta | Kuvaus (erityisesti kantaluokkanäkökulmasta) |
|
|
Internal rajapintaluokka jolla ei ole merkitystä ulkoisen käytön kannalta
|
| Ominaisuus | Kuvaus |
|
|
Lihavointinappulan ToolTip
Oletus "" |
|
|
Kursivointinappulan ToolTip
Oletus "" |
|
|
Alleviivausnappulan ToolTip
Oletus "" |
|
|
Tallennusnappulan ToolTip
Oletus "" |
|
|
Leikkausnappulan ToolTip
Oletus "" |
|
|
Kopiointinappulan ToolTip
Oletus "" |
|
|
Liittämisnappulan ToolTip
Oletus "" |
|
|
Numerolistanappulan ToolTip
Oletus "" |
|
|
Listanappulan Tooltip Oletus "" |
|
|
Vasemmalletasausnappulan Tooltip Oletus "" |
|
|
Keskelletasausnappulan Tooltip Oletus "" |
|
|
Vaakaviivanappulan Tooltip Oletus "" |
|
|
Hyperlinkkinappulan Tooltip Oletus "" |
|
|
Kuvan lisäysnappulan Tooltip Oletus "" |
|
|
Lähdekoodinäytön valintanappulan
Tooltip Oletus "" |
|
|
Lähdekoodi-valintanappulan teksti Oletus: source |
|
|
True jos source-näytön valintanappula enabloitu. Oletus: true |
|
|
Tyylivalinta (otsikkovalinta) dropdown-listan valinta-ohjeen teksti (otsikkovalinta) |
|
|
True jos source-näkyvissä. Tällöin nappulat Savea ja Source-valintaa lukuunottamatta disabloitu. Oletus: False |
|
|
ToolBar:n nappuloihin liitettävä CssClassId Oletus: "HtmlEditTbox_ToolbarImageBtn" |
|
|
Toolbar:n nappuliden taustaväri kun hiiren kursori viedään nappulan päälle Oletus:System.Drawing.SystemColors.Highlight
|
HtmlEditTboxToolBar-oliosta ei voi luoda olioita komponentin ulkopuolella vaan sen ominaisuuksien kutsuminen käy kontrollin ToolBar ominaisuuden kautta esim. HtmlEditTbox1.ToolBar.BtnSaveToolTip = "Tässäpä tallennus nappula";
| Nimi: (myös nimiav.) | Web.UI.WebControls.HtmlEditTboxTextbox |
| Kuvaus: (tehtävä) |
Kontrollin teksti(editori)osan ominaisuuksista vastaava luokka.
|
| Versio: | 1.0, versiosykli 2, SP1 |
Periytyy:
| Luokka/rajapinta | Kuvaus (erityisesti kantaluokkanäkökulmasta) |
|
|
Internal rajapintaluokka jolla ei ole merkitystä ulkoisen käytön kannalta
|
| Ominaisuus | Kuvaus |
|
|
Tekstiosan (EditTextBox) taustaväri |
|
|
Tekstiosan (EditTextBox) reunuksen väri |
|
|
Tekstiosan (EditTextBox) css-luokka Id
Oletus: "" |
|
|
Tekstiosan (EditTextBox) sisältämä Html-muotoinen
teksti
Oletus: "" |
|
|
Tekstiosan (EditTextBox) ToolTip
Oletus: "" |
HtmlEditTboxTextbox-oliosta ei voi luoda olioita komponentin ulkopuolella vaan sen ominaisuuksien kutsuminen käy kontrollin EditTextBox ominaisuuden kautta esim. HtmlEditTbox1.EditTextBox.CssClass = "CssClassId";
| Nimi: (myös nimiav.) | Web.UI.WebControls.HtmlEditTbox.HtmlEditTboxSaveEventArgs |
| Kuvaus: (tehtävä) |
Eventtiargumentti luokka jota tarvitaan save-eventin yhteydessä tietojen välittämiseen. Sijaitsee HtmlEditTbox:n alla eli nimiavaruus Web.UI.WebControls.HtmlEditTbox
|
| Versio: | 1.0, versiosykli 2 |
Periytyy:
| Luokka/rajapinta | Kuvaus (erityisesti kantaluokkanäkökulmasta) |
|
|
.NET:n eventtiargumenttien kantaluokka. Periyttämisen ansiosta HtmlEditTboxEventArgs -tyypin olio voidaan välittää myös yleisen eventtiargumenttiparametrin (EventArgs) kautta. |
| Rajapintametodi/property/eventti | Kuvaus |
|
|
Editorin sisältö eventin tapahtumahetkellä (esim. Save) Oletus: "" Virhekäsittely: - |
| Nimi: (myös nimiav.) | Web.UI.WebControls.HtmlEditTboxDesigner |
| Kuvaus: (tehtävä) |
Suunnittelutilaa varten tarvittava luokka jolla ei ole merkitystä ulkopuolisen käytön kannalta
|
| Versio: | 1.0, versiosykli 2 |
Periytyy:
| Luokka/rajapinta | Kuvaus (erityisesti kantaluokkanäkökulmasta) |
|
|
.NET:n kontrolli Designerien kantaluokka.
|
| Rajapintametodi/property/eventti | Kuvaus |
| Palauttaa HtmlEditTbox:ia vastaavan suunnittelunaikaisen Html:n (inherited from ControlDesigner) |
Tässä esitetään yksinkertainen esimerkki kontrollin lisäämisestä aspx-sivulle Vs.NET -editorilla ja Save-eventin käsittelystä. Sinänsä HtmlEdtiTbox-kontrollin käsittely hoituu Aspx-sivulla kuten minkä tahansa muunkin WebControllin joten mitään erityistä uutta esimerkeissä ei .NET:n Web-kontrolleja aiemmin käsitelleelle ole.
Mikäli kontrollia ei ole vielä lisättynä ToolBox:n valitse Customize
ToolBox ja valitse kontrollin dll. ToolBar:iin pitäisi nyt ilmestyä
kontrollin kuvake:
. Kopioi vielä kontrollin mukana
tullut image-kansio projektisi alihakemistoksi kaikkine kuvineen. Tämän
jälkeen kontrolli on normaaliin tapaan lisättävissä aspx-sivulle esim.
vedä pudota taktiikalla.
Kun kontrolli on lisätty sivulle pitäisi sivun näyttää suunnilleen tältä:

ja aspx:n html:n tältä:

Huomaa kontrolin lisäyksen yhteydessä aspx-sivun alkuosaan ilmestynyt seuraavan näköinen rekisteröinti koodi:
![]()
Muokataan seuraavaksi muutamaa komponentin ominaisuutta. Muutokset päivittyvät samalla automaattisesti myös suunnittelutilassa joten tätä kautta näkee heti miltä kontrolli oikeasti näyttää:
Ensin säädetään leveys vetämällä hiirellä kontrollia leveämmäksi.

Sama voitaisiin tehdä myös properties-ikkunan kautta josta muutetaan nyt kontrollin taustaväri:


Tämän jälkeen kontrollin ulkoasu suunnittelutilassa muuttuu valintojen mukaisesti. Vastaavasti muutokset näkyvät myös aspx-sivun html-koodissa jonka kautta muutokset olisi tietysti voitu tehdä suoraankin.

Lisätään kontrolliin vielä TboxHtmlSaved-eventin käsittely normaalisti seuraavaan tapaan:

...ja kirjoitetaan eventille käsittelijä:

Tämän jälkeen voidaan kääntää ja ajaa projekti ja tutkia tuloksia testitekstin kirjoittamisen ja tallennuksen jälkeen:
