Package net.sourceforge.ganttproject.export

Source Code of net.sourceforge.ganttproject.export.FileChooserPage

package net.sourceforge.ganttproject.export;

import java.awt.BorderLayout;
import java.awt.Component;
import java.io.File;

import javax.swing.Box;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.SpringLayout;
import javax.swing.filechooser.FileFilter;

import net.sourceforge.ganttproject.IGanttProject;
import net.sourceforge.ganttproject.document.Document;
import net.sourceforge.ganttproject.export.ExportFileWizardImpl.State;
import net.sourceforge.ganttproject.filter.ExtensionBasedFileFilter;
import net.sourceforge.ganttproject.gui.FileChooserPageBase;
import net.sourceforge.ganttproject.gui.TextFieldAndFileChooserComponent;
import net.sourceforge.ganttproject.gui.options.OptionsPageBuilder;
import net.sourceforge.ganttproject.gui.options.SpringUtilities;
import net.sourceforge.ganttproject.gui.options.model.GPOption;
import net.sourceforge.ganttproject.gui.options.model.GPOptionGroup;
import net.sourceforge.ganttproject.gui.projectwizard.WizardPage;
import net.sourceforge.ganttproject.language.GanttLanguage;

class FileChooserPage extends FileChooserPageBase {

  private static File ourLastSelectedFile;

    private State myState;

    //private TextFieldAndFileChooserComponent myChooser;

    private IGanttProject myProject;

    //private JPanel myComponent;

    //private JComponent mySecondaryOptionsComponent;

    //private OptionsPageBuilder myOptionsBuilder;


  private GPOptionGroup myWebPublishingGroup;

    FileChooserPage(State state, IGanttProject project) {
        myState = state;
        myProject = project;
        myWebPublishingGroup = new GPOptionGroup("exporter.webPublishing", new GPOption[]{state.getPublishInWebOption()});
        myWebPublishingGroup.setTitled(false);
        //myOptionsBuilder = new OptionsPageBuilder();
    }

    protected String getFileChooserTitle() {
        return GanttLanguage.getInstance().getText("selectFileToExport");
    }


    public String getTitle() {
        return GanttLanguage.getInstance().getText("selectFileToExport");
    }


    protected void onFileChosen(File file) {
        String proposedExtension = myState.getExporter()
                .proposeFileExtension();
        if(proposedExtension != null) {
          if (false == file.getName().toLowerCase().endsWith(
                  proposedExtension)) {
              file = new File(file.getAbsolutePath() + "."
                      + proposedExtension);
          }
        }
        myState.setFile(file);
    }

    public void setActive(boolean b) {
        if (b == false) {
            myState.setFile(getSelectedFile());
            ourLastSelectedFile = getSelectedFile();
            super.setActive(b);
        } else {
          super.setActive(b);
            File proposedFile = proposeOutputFile(myProject);
            if (proposedFile == null) {
                setSelectedFile(myState.getFile());
                return;
            }
            if (false == proposedFile.equals(getSelectedFile())) {
                setSelectedFile(proposedFile);
                myState.setFile(proposedFile);
            }
        }
    }

    public File proposeOutputFile(IGanttProject project) {
        return proposeOutputFile(project, myState.getExporter());
    }

    static File proposeOutputFile(IGanttProject project, Exporter exporter) {
        String proposedExtension = exporter.proposeFileExtension();
        if (proposedExtension == null) {
            return null;
        }
        if (ourLastSelectedFile != null) {
            String name = ourLastSelectedFile.getAbsolutePath();
            int lastDot = name.lastIndexOf('.');
            String extension = lastDot >=0 ? name.substring(lastDot + 1) : "";
            if (extension.equals(proposedExtension)) {
              return ourLastSelectedFile;
            }
        }
        File userHome = new File(System.getProperty("user.home"));
        File result = new File(userHome, project.getProjectName() + "."
                + proposedExtension);
        Document projectDocument = project.getDocument();
        if (projectDocument != null) {
            File localFile = new File(projectDocument.getFilePath());
            if (localFile.exists()) {
                String name = localFile.getAbsolutePath();
                int lastDot = name.lastIndexOf('.');
                name = name.substring(0, lastDot) + "." + proposedExtension;
                result = new File(name);
            } else {
                File directory = localFile.getParentFile();
                if (directory.exists()) {
                    result = new File(directory, project.getProjectName() + "."
                            + proposedExtension);
                }
            }
        }
        return result;

    }

  protected FileFilter createFileFilter() {
    return new ExtensionBasedFileFilter(
                myState.getExporter().getFileNamePattern(), myState.getExporter()
                        .getFileTypeDescription());
  }

  protected GPOptionGroup[] getOptionGroups() {
    GPOptionGroup[] exporterOptions = null;
    if (myState.getExporter()!=null) {
      exporterOptions = myState.getExporter().getSecondaryOptions();
    }
    if (exporterOptions==null) {
      return new GPOptionGroup[] {myWebPublishingGroup};
    }
    GPOptionGroup[] result = new GPOptionGroup[exporterOptions.length+1];
    result[0] = myWebPublishingGroup;
    System.arraycopy(exporterOptions, 0, result, 1, exporterOptions.length);
    return result;
  }

}
TOP

Related Classes of net.sourceforge.ganttproject.export.FileChooserPage

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.