Package org.locationtech.udig.render.internal.wmsc.basic

Source Code of org.locationtech.udig.render.internal.wmsc.basic.WMSCTilePreferencesPage

/*
*    uDig - User Friendly Desktop Internet GIS client
*    http://udig.refractions.net
*    (C) 2012, Refractions Research Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* (http://www.eclipse.org/legal/epl-v10.html), and the Refractions BSD
* License v1.0 (http://udig.refractions.net/files/bsd3-v10.html).
*/
package org.locationtech.udig.render.internal.wmsc.basic;

import org.locationtech.udig.catalog.CatalogPlugin;
import org.locationtech.udig.catalog.internal.PreferenceConstants;
import org.locationtech.udig.catalog.wmsc.server.TileImageReadWriter;
import org.locationtech.udig.catalog.wmsc.server.TileWorkerQueue;
import org.locationtech.udig.render.wms.basic.internal.Messages;

import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IntegerFieldEditor;
import org.eclipse.jface.preference.RadioGroupFieldEditor;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

/**
* Preferences page for setting WMS-C Tile cache settings
*
* @author GDavis
*
*/
public class WMSCTilePreferencesPage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {

  private DirectoryFieldEditor diskCacheFieldEditor;
  private RadioGroupFieldEditor cachingRadioFieldEditor;
  private Button cacheClearBtn;
 
    public WMSCTilePreferencesPage() {
        super(GRID);
        setPreferenceStore(CatalogPlugin.getDefault().getPreferenceStore());
    setDescription(Messages.WMSCTilePreferencePage_pageDescription);

    }

  @Override
  protected void createFieldEditors() {
   
    // maximum concurrent tile requests
    IntegerFieldEditor conRequestsFieldEditor = new IntegerFieldEditor(PreferenceConstants.P_WMSCTILE_MAX_CON_REQUESTS,
            Messages.WMSCTilePreferencePage_maxConRequests,
                getFieldEditorParent());
    conRequestsFieldEditor.setValidRange(TileWorkerQueue.minWorkingQueueSize, TileWorkerQueue.maxWorkingQueueSize);
    conRequestsFieldEditor.setEmptyStringAllowed(true);
        addField(conRequestsFieldEditor);   
   
    // in-mem or on-disk caching?
    cachingRadioFieldEditor = new RadioGroupFieldEditor(
                PreferenceConstants.P_WMSCTILE_CACHING,
                Messages.WMSCTilePreferencePage_caching_desc,
                1,
                new String[][]{
                        {Messages.WMSCTilePreferencePage_inmemory, WMSCTileCaching.INMEMORY.toString()},
                        {Messages.WMSCTilePreferencePage_ondisk, WMSCTileCaching.ONDISK.toString()}
                        },
                        getFieldEditorParent(), true);
        addField(cachingRadioFieldEditor);
        String value = CatalogPlugin.getDefault().getPreferenceStore().getString(PreferenceConstants.P_WMSCTILE_CACHING);
        boolean diskOn = false;
    if (value.equals(WMSCTileCaching.ONDISK.toString())) diskOn = true;       
       
    // only enable the disk-caching preferences if disk caching is turned on
        diskCacheFieldEditor = new DirectoryFieldEditor(PreferenceConstants.P_WMSCTILE_DISKDIR,
            Messages.WMSCTilePreferencePage_disklabel,
            getFieldEditorParent());
        diskCacheFieldEditor.setEnabled(diskOn, getFieldEditorParent());
        addField(diskCacheFieldEditor);
       
        cacheClearBtn = new Button(getFieldEditorParent(), SWT.PUSH);
        cacheClearBtn.setText(Messages.WMSCTilePreferencePage_clearcachebtn);
       
        cacheClearBtn.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(SelectionEvent e) {
              MessageBox mb = new MessageBox(Display.getCurrent().getActiveShell(), SWT.ICON_QUESTION | SWT.OK | SWT.CANCEL);
                mb.setText(Messages.WMSCTilePreferencePage_clearcachebtn);
                mb.setMessage(Messages.WMSCTilePreferencePage_clearcacheConfirm);
                int rc = mb.open();
                if (rc == SWT.OK) {
                  boolean success = clearCache();
                  mb = new MessageBox(Display.getCurrent().getActiveShell(), SWT.OK );
                  mb.setText(Messages.WMSCTilePreferencePage_clearcachebtn);
                  if (!success) {
                        mb.setMessage(Messages.WMSCTilePreferencePage_clearcacheError);
                  }
                  else {
                    mb.setMessage(Messages.WMSCTilePreferencePage_clearcacheSuccess);
                  }
                    rc = mb.open();
                }
            }
        });
        cacheClearBtn.setEnabled(diskOn);
  }
 
  /**
   * clear the tile cache for the given dir
   *
   */
  private boolean clearCache() {
    // Make a TileImageReadWriter with the base directory based on the current
    // value of the disk cache location (even if it is not "set" yet since the current
    // value is what the user sees) otherwise use the current setting.
    String dir = diskCacheFieldEditor.getStringValue();
   
    String setDir = CatalogPlugin.getDefault().getPreferenceStore().getString(PreferenceConstants.P_WMSCTILE_DISKDIR);
    if (dir.equals("") && setDir != null && !setDir.equals("") ) {
      dir = setDir;
    }
    else if (dir.equals("")) {
      return false;
    }
    TileImageReadWriter tileReadWriter = new TileImageReadWriter(null, dir);
    return tileReadWriter.clearCache();
 

  public void init(IWorkbench arg0) {
  }

  /**
   * Catch events to notice when the caching type changes and de/activate the disk caching
   * config editors depending on what is selected. 
   *
   */
  @Override
  public void propertyChange(PropertyChangeEvent event) {
    super.propertyChange(event);
    if (event.getSource().equals(cachingRadioFieldEditor)) {
      String value = ((String)event.getNewValue()).toString();
      boolean diskOn = false;
      if (value.equals(WMSCTileCaching.ONDISK.toString())) diskOn = true;
      diskCacheFieldEditor.setEnabled(diskOn, getFieldEditorParent());
      cacheClearBtn.setEnabled(diskOn);
    }
  }
   
}
TOP

Related Classes of org.locationtech.udig.render.internal.wmsc.basic.WMSCTilePreferencesPage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.