Setting Self Created File Filter as Default
Hello Guys,
I need some help out here. I have created a simple file filter and I have added it to a JFileChooser. Now when the FileChooser Dialog is loaded it shows the All Files Filter whereas I want the mine to be the default filter when the dialog loads. Also I do not want the Default File Filter (All Files) to be disabled. So both the filters should be enabled with my filter loading as default at runtime. Please Help.
Here is the sample code,
//=====================================================================
//Assuming that you have a JFileChooser object created by the reference fileChooser
JFileChooser fileChooser = new JFileChooser();
//To disable the default select all FIleFIlter call setAcceptAllFIleFilterUsed(false);
fileChooser.setAcceptAllFIleFilterUsed(false);
//set your desired FileFIlter
//Please note that the last filter is the one selected by default
//Suppose you have three FileFIlters namely
//FIleFIlterA, FIleFIlterB,FIleFIlterC
//fileChooser.setFileFIlter(yourFIlterA);
//fileChooser.setFileFIlter(yourFIlterB);
//fileChooser.setFileFIlter(yourFIlterC);
//Now FIleFIlterC will be shown selected by default
fileChooser.setFileFIlter(yourFIlter);
//Call any of the showDialog methods to open a dialog
fileChooser.showDialog(null, "Select File");
//===========================================================================
Hope this will solve your problem
Best regards,
MMM
Similar Messages
-
Hi,
How Can I create file filter? I Need to show only the specyfic type of file
in JFileChooser open or save ?
Best Regards,
GutekYou have to subclass the javax.swing.filechooser.FileFilter abstract class, add your filter object to your JFileChooser user-choosable filters list ( addChoosableFileFilter() method) and make it current ( setFileFilter() method ).
Look at this:
/** A simple FileFilter discriminating files by extension
* (only regular files allowed)
* @author Giorgio Maone
import java.io.File;
import javax.swing.filechooser.*;
import javax.swing.JFileChooser;
public class ExtensionFileFilter extends FileFilter {
String[] extensions;
String desc;
public ExtensionFileFilter(String desc,String[] extensions) {
this.extensions=extensions!=null?extensions:new String[]{};
this.desc=desc==null?extList():desc+" ("+extList()+")";
private String extList() {
int len=extensions.length;
if(len>0) {
String ret=extensions[0];
for(int j=1; j<len; ret+=", "+extensions[j++]);
return ret;
} else return "";
public boolean accept(File f) {
if(f.isFile()) {
String fname=f.getName().toLowerCase();
for(int j=extensions.length; j-->0;) {
if(fname.endsWith(extensions[j])) return true;
return false;
public String getDescription() {
return desc;
//test main
public static void main(String[] args) {
JFileChooser fc=new JFileChooser();
fc.addChoosableFileFilter(new ExtensionFileFilter("Pictures",new String[]{".gif",".jpg",".jpeg",".png"}));
fc.addChoosableFileFilter(new ExtensionFileFilter("Audio-clips",new String[]{".au",".aiff",".mp3",".wav"}));
fc.addChoosableFileFilter(new ExtensionFileFilter("Movies",new String[]{".mpg",".mpeg",".avi"}));
fc.setAcceptAllFileFilterUsed(false);
fc.setDialogTitle("Select a multimedia content");
fc.showOpenDialog(null);
} -
File, Send link doesn’t open a new email. Running Firefox 11.0. Outlook 2010 is the Mailto default and the W7 default email program. On the About:config page, network.protocol-handler.external.mailto is set to regular font (not bold) “default Boolean true”.
I assume you have tried toggling the setting in Firefox between Outlook and, say, Gmail:
orange Firefox button ''or'' classic Tools menu > Options > Applications
In the search box, type or paste '''mailto''' and pause for the list to filter.
Change the setting and OK to save it, then return to the dialog, change back, and OK again.
You also might want to toggle the setting at the OS level between Microsoft Outlook and the native Windows Mail client in a similar fashion. In Windows XP you could use IE's Options dialog, Programs tab, for this, but I'm not sure in Windows 7.
Since one possibility is a problem in your Firefox settings (including the possibility of interfering add-ons), and another is a problem at the Windows level (e.g., Registry settings), it would be useful to try to identify which one it is. One quick way to distinguish is to create a new Firefox profile. It will start up with all factory settings. You can switch back to your existing profile after testing.
First, I recommend backing up your Firefox settings in case something goes wrong. See [https://support.mozilla.com/en-US/kb/Backing+up+your+information Backing up your information]. (You can copy your entire Firefox profile folder somewhere outside of the Mozilla folder.)
After closing Firefox, start up again in the Profile Manager as described in this article: [http://support.mozilla.com/kb/Managing+profiles Managing profiles].
With the new profile, can Firefox successfully create a message in Outlook? -
I went through the forums and made sure that any blocks or copywrites weren't triggered by the file, it's clean and can be opened using a media player and other video editing software like windows MovieMaker. I keep getting "The importer reported a generic error" message and have no idea how to proceed. Can someone please help?
Re: Why do I get "generic error" message when trying to upload a self-created, 1hr .wmv file?
This ARTICLE starts with a checklist on setting up a computer to run PrE best, then goes into a series of links for tuning up one's computer and OS, and then links on troubleshooting.
There is also a link on posting all necessary info, to help others help you.
Without knowing much more about your system, it is impossible to say much beyond that WMV's are tough assests to work with, requiring a lot of CPU horsepower.
Good luck,
Hunt -
How to set file filter in FileUpload?
Is there any way to set the file filter on FileUpload? Let's say, I only want the user to see all .xml files. Currently, the default is all files of any extension are displayed.
Thanks. c",?The dialog which appears is solely controlled by the browser. I don't see a way to set the file filter to this dialog.
You can read more about file upload here.
http://jakarta.apache.org/commons/fileupload/using.html
- Winston
http://blogs.sun.com/winston -
Self-created invisible system file not found via Finder's Find command
I need to see what is being created on my hard disk. To achieve that, I create a test file, call it .new in TextEdit, remove the hidden .rtf extension, and place it in one of the folders in /Library/Application Support. Then, I use Finders Find command, and ask to search This Mac, Created date: today, System files are included, File visibility Visible or Invisible, leaving the input field (for file contents or name) blank. The newly created file isn't found. I type its name into the input field, with the same result. I change its name to .new.plist . Same result. Suspecting that "System files" acutally means system files and doesn't include the Library on the top level, I place that same item in /System/Library/PodcastProducer. Same result.
Seriously, this is entirely incomprehensible. The Find command obviously doesn't do what it says it does. Could anyone tell me how to get it to, or name some alternative?
Thanks a lot.Actually you CAN get ressults for .whatever files and folders. I created a saved search for my home folder with the criterion of "File visibility::Invisible Items" and then "None of the following are true::Name contains" DS_Store, Icon or localized. The result is a list of 65 invisible items including things such as the files /Users/francine/Library/Preferences/ByHost/.GlobalPreferences.0017f20dca84.plis t (a dot file), /Users/francine/Library/Preferences/com.freeverse.5012 (something with the invisible flag set), the dot folder /Users/francine/.fontconfig, and many others of all of these types. I thought it was interesting that lots of them were inside the ~/Library folder, even though I did NOT specify including system files.
I don't know why the original poster can't get Spotlight, using the the Command-f method, to display dot files. When I was setting my own invisible items search up I did manage to crash the Finder once, so it may be that the query for invisible items is buggy. Here's the Raw Query:
(true) && (((kMDItemFSInvisible = 1) && (!((kMDItemDisplayName = "\DS_Store"cd) || (kMDItemDisplayName = "\Icon"cd) || (kMDItemDisplayName = "\localized"cd)))))
If you go to a folder, do Command-f, then change from the default "Kind" to "Raw Query" and paste the above in as the query, you ought to get all the invisible files and folders, except the .DS_Store, Icon and localized files (of which there are likely hundreds of 'em in your home folder).
Francine
Francine
Schwieder -
JFileChooser: folder disapper for choosing when file filter is set
I have created a JFileChooser for saving csv file. After I have add .csv as the choosable file filter, all folders disapper even though I have set file selection mode as FILES_AND_DIRECTORIES! It will be shown only when I choose "All files" in the file type. Is there any way to display the folder together with all the csv files together?
Here is my code sippnet:
javax.swing.JFileChooser saveDialogBox = new javax.swing.JFileChooser("C:\\");
saveDialogBox.setDialogTitle("Exporting...");
saveDialogBox.setDragEnabled(true);
saveDialogBox.setFileSelectionMode(javax.swing.JFileChooser.FILES_AND_DIRECTORIES);
FileFiltering fileExtension = new FileFiltering();
saveDialogBox.addChoosableFileFilter(fileExtension);
int retMethod = saveDialogBox.showSaveDialog(this);import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.filechooser.*;
public class Test extends JFrame {
public Test() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container content = getContentPane();
JFileChooser jfc = new JFileChooser();
jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
jfc.setFileFilter(new FileFilter() {
public boolean accept(java.io.File file) {
return file.isDirectory() || file.getName().endsWith(".txt");
public String getDescription() { return "*.txt"; }
jfc.showSaveDialog(this);
setSize(200,200);
show();
public static void main(String[] args) { new Test(); }
} -
I want to open a domain.site2 file outside the default folder (User/Library/Application Support/iWeb) with iWeb11, but iWeb only opens the domain file in the default folder. If I delete the default domain file, iWeb wants to create a new site. Does anyone have the same problem or know how to fix it?
In Lion the Finder folder is now invisible. To make it permanetely visible enter the following in the Terminal applicaiton window: chflags nohidden ~/Library and hit the Enter button - 10.7: Un-hide the User Library folder.
For opening your domain file in Lion for the first time or to switch between multiple domain files Cyclosaurus has provided us with the following script that you can make into an Applescript application with Script Editor. Open Script Editor, copy and paste the script below into Script Editor's window and save as an applicaiton.
Just launch the applicaiton, find and select the domain file you want to open and it will open with iWeb. It modifies the iWeb preference file each time it's launched so one can switch between domain files.
do shell script "/usr/bin/defaults write com.apple.iWeb iWebDefaultsDocumentPath -boolean no"delay 1
tell application "iWeb" to activate
OT -
If it is not specified,Oracle creates one control file in a default locatio
Hi
The CONTROL_FILES parameter is not required when you create a database. If it is not specified,Oracle creates one control file in a default location,.
Where oracle create contol file default in this condition
ThanksCan you try to create a database and see
FYI
It creates in $ORACLE_HOME\database folder..if not specified but in UNIX i think it will be under $ORACLE_HOME/dbs
Because i dont have UNIX right now to test it
Message was edited by:
Maran Viswarayar -
How do you create a save as default folder for MP3 files used Captivate text to audio voices files?
Hi Ed
Thank you for contacting me, however I already know how to save text to
audio files via timeline using the Export feature.
So my question was not entirely clear and I apologize for that. To explain
further, whenever I save a text to audio file, captivate takes me to a
default save as folder where I then have browse back to my production
folder where I am keeping all my Txt to Aud files. This is very tedious
process when you have alot of files to save. So my question was is there a
way to configure captivate so I can make my production folder the default
file for whenever I save a Txt to Audio file through Export feature that
the system automatically takes me to that production folder, and I am
spared the long tedious process of saving the file manually to the
prodcution folder I want.
I have copy the pathway to the production folder in the URL filed in the
Save As dialoge box and that workaround as cut the work down but I still
have to paste that URL field to point the file to the right folder. So it
would be nice if I could do everything automatically. Microsoft makes this
capability in their MS Office applications, so I was thinking Adobe might
do the same thing. Your help with this would be appreicated,
Thanks
Merrill Roberts
Sr. Training Specialist
SunGard Availability Services
Direct 925-831-7730
Mobile:415-215-9280 -
window 2008 R2 server ---- after installing SQL 2008 R2 then applying sp2 / sp3 I noted a warning -
Note this server had SQL 2008 R2 uninstalled previously.
MS ssis service: registry setting specifying configuration file does not exist. attempting to load default configuration file.
SQLIService100 - source
event id- 274
user - N/A
Task category - service control.
Do we need to fix something and how do we fix this warning event?
dskYou could search online for this warning. I was able to find http://superuser.com/questions/346264/event-log-warning-registry-setting-specifying-configuration-file-does-not-exist
where the fix is "in your registry, go to:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTS\ServiceConfigFile
or
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\ServiceConfigFile
if value is empty then add in:
C:\Program Files\Microsoft SQL Server\100\DTS\Binn\MsDtsSrvr.ini.xml"
Arthur
MyBlog
Twitter -
How to set permissions for files created by Windows on OS 10.8 volume
I am in process of upgrading from an iMac with OS 10.6 to an iMac with OS 10.8. In my office network, I store all files on my iMac and let the Windows PCs act as workstations to read/write onto the Mac. (It's simpler to have all files centralized in one location, and only have to be concerned about backing up one volume.)
When I had OS 10.4 and OS 10.6 any newly created file saved by the Windows PCs onto the Mac could be opened by the Mac.
But with OS 10.8, I can not open newly created files from Windows. The file permissions for the newly created files from the Windows PCs are:
PCUser = read/write; Everyone = no access.
What do I need to do so that newly created files from the Windows PC (currently Windows 7) can be opened by the Mac, without having to use Get Info to reset the permissions each time?You could try adding this Access Control Entry (ACE) to the folders you let them save to:
sudo chmod -R +a "accountinggroup allow delete,chown,list,search,add_file,add_subdirectory,delete_child,file_inherit,directory_inherit" /Path/to/topmost/folder
You first need to create a group for all the sharing people you want to have access to that folder, if you don't already have one. In the example, "accountinggroup" is the group, so change that to whatever you want to use.
The ACE allows them full access to the files in the folders. If you want to limit that, remove the option (such as delete).
You create Groups in Users & Groups System Preference just like creating a new user. Just change the account type to Group.
If you want a GUI to do the settings, try Sandbox. It's got a few glitches in the Interface, but it seems to write the ACL correctly. One glitch is selecting the Group or User. I had just a list of Continuing in the popup menu. I typed in the Group name I wanted and it worked. Some errors pop up as you traverse the file hierarchy, but you can dismiss them.
Here is an old hint, which gives a little background, and some other options: http://hints.macworld.com/article.php?story=20090219133314985
The Server tools would allow you to set this up more easily, but if this is all you need as the server, I don't know if it is worth it. -
I accidentally set my .EPS files to open via Pshop - How do I change to open in Ai by default?
The above screenshot shows what should work, but doesn't.
OSX 10.7.5Your screen shot appears to be from a Mac. If so, select any .eps file you have and press Cmd+i. This window will come up:
In the "Open With" section select Illustrator and click "Change All". -
I have been trying to download photos too my MAC. It keeps saying can't create file, please check permissions on destination folder. Ihave made sure I have set the permissions on read and write. What am I doing wrong?
Lanakivee
Try this it worked for me Pat Willener gave it to me off the site :
I have not read all you wrote, so I may have missed some points. As I understand it, you installed FP 10 on IE7, but it won't play any Flash content?
Try this
download the FP uninstaller from http://www.adobe.com/go/tn_14157
close all browser windows, then run the uninstaller
download the offline ActivX installer for Internet Explorer from http://fpdownload.macromedia.com/get/flashplayer/current/install_flash_player_ax.exe
close all browser windows, then run the installer -
How to refresh/apply column value default setting on current files or folders
Hi All
I have set-up default column data per folder in my library (via
Library Settings > Column default settings) and it works great for new documents or folders that are added to the library.
But what do I do if I have an existing Library with folders and files and need to apply default column data to each? Is there a way of "refreshing" the default columns so that the data is populated through a specific folder and/or its sub-folders?
(I really hope this is an easy fix or just a setting that I over-looked somewhere!)
Thank you!I had to do this as well recently, and remembered your post.
Here is the function I wrote , this worked for text, choice, and metadata columns
It is pretty slow and could be optimized and broken up into more functions, but I had to do several things:
1. I mass-updated the content types in a library
2. On Library settings : set default values and also different defaults per folder
3. For each file I then needed to:
3.a. either copy the value from a column in the old content type to the new, or
3.b. set the column to the default
so this function does step 3, like I said it works for certain types of columns and can be sped up (I used it to update 700 files in a couple minutes), and it makes some assumptions about the environment but this at least is a starting point.
As Alex said you may want to change SystemUpdate($true) to just Update(), depending on your requirements.
<#
.SYNOPSIS
Resets columns in a document library to defaults for blank columns. Use this
after changing the content types or adding columns to a doc lib with existing files
.DESCRIPTION
Resets columns in a doc lib to their defaults. Will only set them if the columns are blank (unless overridden)
Will also copy some values from one column to another while you are there.
Can restrict the update to a subset of columns, or have it look for all columns with defaults.
Will use the list defaults as well as folder defaults.
All names of columns passed in should use InternalName.
This has ONLY been tested on Text, Choice, Metadata, and mult-Choice and Mult-Metadata columns
Pass in a list and it will recursively travel down the list to update all items with the defaults for the items in that folder.
If you call it on a folder, it will travel up the tree of folders to find the proper defaults
Author:
Chris Buchholz
[email protected]
@plutosdad
.PARAMETER list
The document library to update. Using this parameter it will update all files in the doc lib
.PARAMETER folder
The folder containing files to update. Function will update all files in this folder and subfolders.
.PARAMETER ParentFolderDefaults
Hashtable of internal field names as KEY, and value VALUE, summing up all the parent folders or list defaults.
If not supplied, then the function will travel up the tree of folders to the parent doclib to determine
the correct defaults to apply.
If the field is managed metadata, then the value is a string
Currently only tested for string and metadata values, not lookup or date
.PARAMETER termstore
The termstore to use if you are going to update managed metadata columns, this assumes we are only using the one termstore for all columns to update
If you are using the site collection specific termstore for some columns you want to update, and
the central termstore for others, then you should call this method twice, once with each termstore,
and specify the respective columns in fieldsToUpdate
.PARAMETER fieldsToCopy
Hashtable of internal field names, where KEY is the "to" field, and VALUE is the "from" field
Use this to copy values from one field to another for the item.
These override the defaults, and also cause the "from" (Value) fields to NOT be overwritten with defaults even if
they are in the fieldsToUpdate array.
Example: @{"MyNewColumn" = "My_x0020_Old_x0020_Column"}
.PARAMETER fieldsToUpdate
If supplied then the method will update only the fields in this array to their default values, if null then it will update
all fields that have defaults.
If you pass in an empty array, then this method will only copy fields in the fieldtocopy and not
apply any defaults
Example: @() - to only copy and not set any fields to default
Example2: @('UpdateField1','UpdateField2') will
.EXAMPLE
Set-SPListItemValuesToDefaults -list $list -fieldsToCopy @{"MyNewColumn" = "My_x0020_Old_x0020_Column"} -fieldsToUpdate @() -overwrite -termStore $termStore
This will not set any defaults, but instead only set MyNewColumn to non null values of My_x0020_Old_x0020_Column
It will overwrite any values of MyNewColumn
.EXAMPLE
Set-SPListItemValuesToDefaults -list $list -overwrite
This will set all columns to their default values even if they are filled in already
.EXAMPLE
Set-SPListItemValuesToDefaults -folder $list.RootFolder.SubFolder[3].SubFolder[5]
This will set all columns to their defaults in the given subfolder of a library
.EXAMPLE
Set-SPListItemValuesToDefaults -list $list -fieldsToUpdate @('ColumnOneInternalName','ColumnTwoInternalName')
This will set columns ColumnOneInternalName and ColumnTwoInternalName to their defaults for all items where they are currently null
.EXAMPLE
Set-SPListItemValuesToDefaults -list $list -fieldsToCopy @{"MyNewColumn" = "My_x0020_Old_x0020_Column"} -fieldsToUpdate @("MyNewColumn") -termStore $termStore
This will set all MyNewColumn values to their default, and then also copy the values of My_x0020_Old_x0020_Column to MyNewColumn where the old column is not null,
but both of these will only happen for items where MyNewColumn is null
.EXAMPLE
Set-SPListItemValuesToDefaults -list $list -fieldsToCopy @{"MyNewColumn" = "My_x0020_Old_x0020_Column"} -termStore $termStore
This will set ALL columns with defaults to the default value (if the item's value is null),
except for My_x0020_Old_x0020_Column which will not be modified even if it has a default value, and will also set MyNewColumn to the
value of My_x0020_Old_x0020_Column if the old value is not null
#>
function Set-SPListItemValuesToDefaults {
[CmdletBinding(SupportsShouldProcess=$true)]
param(
[Parameter(Mandatory=$true,ValueFromPipeline=$true,ParameterSetName="List")][Microsoft.SharePoint.SPList]$list,
[Parameter(Mandatory=$true,ValueFromPipeline=$true,ParameterSetName="Folder")][Microsoft.SharePoint.SPFolder]$folder,
[Parameter(Mandatory=$false,ParameterSetName="Folder")][HashTable]$ParentFolderDefaults,
[Parameter(Mandatory=$false)][HashTable]$fieldsToCopy,
[Parameter(Mandatory=$false)][Array]$fieldsToUpdate,
[Parameter(Mandatory=$false)][Microsoft.SharePoint.Taxonomy.TermStore]$termStore,
[Switch]$overwrite,
[Switch]$overwriteFromFields
begin {
#one or both can be null, but if both empty, then nothing to do
if ($null -ne $fieldsToUpdate -and $fieldsToUpdate.Count -eq 0 -and
( $null -eq $fieldsToCopy -or $fieldsToCopy.Count -eq 0)) {
Write-Warning "No fields to update OR copy"
return
if ($PSCmdlet.ParameterSetName -eq "Folder") {
$list = $folder.DocumentLibrary
if ($null -eq $termStore ) {
$taxonomySession = Get-SPTaxonomySession -site $list.ParentWeb.Site
$termStores = $taxonomySession.TermStores
$termStore = $termStores[0]
#if we did not pass in the parent folder defaults then we must go backward up tree
if ($PSCmdlet.ParameterSetName -eq "Folder" -and $null -eq $ParentFolderDefaults ) {
$ParentFolderDefaults = @{}
if ($null -eq $fieldsToUpdate -or $fieldsToUpdate.Count -gt 0) {
write-Debug "ParentFolderDefaults is null"
$tempfolder=$folder.ParentFolder
while ($tempfolder.ParentListId -ne [Guid]::Empty) {
Write-Debug "at folder $($tempfolder.Url)"
$pairs = $columnDefaults.GetDefaultMetadata($tempfolder)
foreach ($pair in $pairs) {
if (!$ParentFolderDefaults.ContainsKey($pair.First)) {
Write-Debug "Folder $($tempfolder.Name) default: $($pair.First) = $($pair.Second)"
$ParentFolderDefaults.Add($pair.First,$pair.Second)
$tempfolder = $tempfolder.ParentFolder
#listdefaults
Write-Debug "at list"
foreach ($field in $folder.DocumentLibrary.Fields) {
if ($field.InternalName -eq "_ModerationStatus") { continue }
#$field = $list.Fields[$name]
if (![String]::IsNullOrEmpty($field.DefaultValue)) {
#Write-Verbose "List default found key $($field.InternalName)"
if (!$ParentFolderDefaults.ContainsKey($field.InternalName)) {
Write-Debug "List Default $($field.InternalName) = $($field.DefaultValue)"
$ParentFolderDefaults.Add($field.InternalName,$field.DefaultValue)
process {
Write-Debug "Calling with $($PSCmdlet.ParameterSetName)"
Write-Debug "Parent folder hash has $($ParentFolderDefaults.Count) items"
if ($PSCmdlet.ParameterSetName -eq "List" ) {
$folder = $list.RootFolder
$ParentFolderDefaults=@{}
if ($null -eq $fieldsToUpdate -or $fieldsToUpdate.Count -gt 0) {
foreach ($field in $list.Fields) {
if ($field.InternalName -eq "_ModerationStatus") { continue }
if (![String]::IsNullOrEmpty($field.DefaultValue)) {
Write-Debug "List Default $($field.InternalName) = $($field.DefaultValue)"
$ParentFolderDefaults.Add($field.InternalName,$field.DefaultValue)
Write-Verbose "At folder $($folder.Url)"
$FolderDefaults=@{}
$FolderDefaults += $ParentFolderDefaults
if ($null -eq $fieldsToUpdate -or $fieldsToUpdate.Count -gt 0) {
$pairs = $columnDefaults.GetDefaultMetadata($folder)
foreach ($pair in $pairs) {
if ($FolderDefaults.ContainsKey($pair.First)) {
$FolderDefaults.Remove($pair.First)
Write-Debug "Folder $($folder.Name) default: $($pair.First) = $($pair.Second)"
$FolderDefaults.Add($pair.First,$pair.Second)
#set values
foreach ($file in $folder.Files) {
if ($file.CheckOutType -ne [Microsoft.SharePoint.SPFile+SPCheckOutType]::None) {
Write-Warning "File $($file.Url).CheckOutType = $($file.CheckOutType)) ... skipping"
continue
$item = $file.Item
$ItemDefaults=@{}
$ItemDefaults+= $FolderDefaults
#if we only want certain fields then remove the others
#Move this to every time we add values to the defaults
if ($null -ne $fieldsToUpdate ) {
$ItemDefaults2=@{}
foreach ($fieldInternalName in $fieldsToUpdate) {
try {
$ItemDefaults2.Add($fieldInternalName,$ItemDefaults[$fieldInternalName])
} catch { } #who cares if not in list
$ItemDefaults = $ItemDefaults2
#do not overwrite already filled in values unless specified
if (!$overwrite) {
$keys = $itemDefaults.Keys
for ($i=$keys.Count - 1; $i -ge 0; $i-- ) {
$key=$keys[$i]
try {
$val =$item[$item.Fields.GetFieldByInternalName($key)]
if ($val -ne $null) {
$ItemDefaults.Remove($key)
} catch {} #if fieldname does not exist then ignore, we should check for this earlier
#do not overwrite FROM fields in copy list unless specified
if (!$overwriteFromFields) {
if ($null -ne $fieldToCopy -and $fieldsToCopy.Count -gt 0) {
foreach ($value in $fieldsToCopy.Values) {
try {
$ItemDefaults.Remove($value)
} catch {} #who cares if not in list
#do not overwrite TO fields in copy list if we're going to copy instead
if (!$overwriteFromFields) {
if ($null -ne $fieldToCopy -and $fieldsToCopy.Count -gt 0) {
foreach ($key in $fieldsToCopy.Keys) {
$fromfield = $item.Fields.GetFieldByInternalName($fieldsToCopy[$key])
try {
if ($null -ne $item[$fromfield]) {
$ItemDefaults.Remove($key)
} catch {} #who cares if not in list
Write-Verbose $item.Url
$namestr = [String]::Empty
if ($ItemDefaults.Count -eq 0) {
write-Verbose "No defaults, copy only"
} else {
$str = $ItemDefaults | Out-String
$namestr += $str
Write-Verbose $str
if ($null -ne $fieldsToCopy -and $fieldsToCopy.Count -gt 0) {
$str = $fieldsToCopy | Out-String
$namestr +=$str
if ($PSCmdlet.ShouldProcess($item.Url,"Set Values: $namestr"))
#defaults
if ($null -ne $ItemDefaults -and $ItemDefaults.Count -gt 0) {
foreach ($key in $ItemDefaults.Keys) {
$tofield = $item.Fields.GetFieldByInternalName($key)
if ($tofield.TypeAsString -like "TaxonomyFieldType*") {
$taxfield =[Microsoft.SharePoint.Taxonomy.TaxonomyField]$tofield
$taxfieldValue = New-Object Microsoft.SharePoint.Taxonomy.TaxonomyFieldValue($tofield)
$lookupval=$ItemDefaults[$key]
$termval=$lookupval.Substring( $lookupval.IndexOf('#')+1)
$taxfieldValue.PopulateFromLabelGuidPair($termval)
if ($tofield.TypeAsString -eq "TaxonomyFieldType") {
$taxfield.SetFieldValue($item,$taxfieldValue)
} else {
#multi
$taxfieldValues = New-Object Microsoft.SharePoint.Taxonomy.TaxonomyFieldValueCollection $tofield
$taxfieldValues.Add($taxfieldValue)
$taxfield.SetFieldValue($item,$taxfieldValues)
} else {
$item[$field]=$ItemDefaults[$key]
#copyfields
if ($null -ne $fieldsToCopy -and $fieldsToCopy.Count -gt 0) {
#$fieldsToCopy | Out-String | Write-Verbose
foreach ($key in $fieldsToCopy.Keys) {
$tofield = $item.Fields.GetFieldByInternalName($key)
$fromfield = $item.Fields.GetFieldByInternalName($fieldsToCopy[$key])
if ($null -eq $item[$fromfield] -or ( !$overwrite -and $null -ne $item[$tofield] )) {
continue
if ($tofield.TypeAsString -eq "TaxonomyFieldType" -and
$fromfield.TypeAsString -notlike "TaxonomyFieldType*" ) {
#non taxonomy to taxonomy
$taxfield =[Microsoft.SharePoint.Taxonomy.TaxonomyField]$tofield
$termSet = $termStore.GetTermSet($taxfield.TermSetId)
[String]$fromval = $item[$fromfield]
$vals = $fromval -split ';#' | where {![String]::IsNullOrEmpty($_)}
if ($null -ne $vals -and $vals.Count -ge 0 ) {
$val = $vals[0]
if ($vals.Count -gt 1) {
write-Warning "$($item.Url) Found more than one value in $($fromfield.InternalName)"
continue
$terms =$termSet.GetTerms($val,$true)
if ($null -ne $terms -and $terms.Count -gt 0) {
$term = $terms[0]
$taxfield.SetFieldValue($item,$term)
Write-Verbose "$($tofield.InternalName) = $($term.Name)"
} else {
Write-Warning "Could not determine term for $($fromfield.InternalName) for $($item.Url)"
continue
} elseif ($tofield.TypeAsString -eq "TaxonomyFieldTypeMulti" -and
$fromfield.TypeAsString -notlike "TaxonomyFieldType*" ) {
Write-Debug "we are here: $($item.Name): $($fromfield.TypeAsString) to $($tofield.TypeAsString )"
#non taxonomy to taxonomy
$taxfield =[Microsoft.SharePoint.Taxonomy.TaxonomyField]$tofield
$termSet = $termStore.GetTermSet($taxfield.TermSetId)
$taxfieldValues = New-Object Microsoft.SharePoint.Taxonomy.TaxonomyFieldValueCollection $tofield
[String]$fromval = $item[$fromfield]
$vals = $fromval -split ';#' | where {![String]::IsNullOrEmpty($_)}
foreach ($val in $vals){
$terms =$termSet.GetTerms($val,$true)
if ($null -ne $terms -and $terms.Count -gt 0) {
$term=$terms[0]
$taxfieldValue = New-Object Microsoft.SharePoint.Taxonomy.TaxonomyFieldValue($tofield)
$taxfieldValue.TermGuid = $term.Id.ToString()
$taxfieldValue.Label = $term.Name
$taxfieldValues.Add($taxfieldValue)
} else {
Write-Warning "Could not determine term for $($fromfield.InternalName) for $($item.Url)"
continue
#,[Microsoft.SharePoint.Taxonomy.StringMatchOption]::ExactMatch,
$taxfield.SetFieldValue($item,$taxfieldValues)
$valsAsString = $taxfieldValues | Out-String
Write-Debug "$($tofield.InternalName) = $valsAsString"
} elseif ($tofield.TypeAsString -eq "TaxonomyFieldTypeMulti" -and
$fromfield.TypeAsString -eq "TaxonomyFieldType" ) {
#single taxonomy to multi
$taxfieldValues = New-Object Microsoft.SharePoint.Taxonomy.TaxonomyFieldValueCollection $tofield
$taxfield =[Microsoft.SharePoint.Taxonomy.TaxonomyField]$tofield
$taxfieldValues.Add($item[$fromfield])
$taxfield.SetFieldValue($item,$taxFieldValues)
Write-Verbose "$($tofield.InternalName) = $valsAsString"
} elseif ($tofield.TypeAsString -eq "TaxonomyFieldType" -and
$fromfield.TypeAsString -eq "TaxonomyFieldTypeMulti" ) {
#multi taxonomy to single taxonomy
Write-Warning "multi to non multi - what to do here"
continue
} elseif ($tofield.TypeAsString -eq "Lookup" -and
$fromfield.TypeAsString -ne "Lookup" ) {
#non lookup to lookup
Write-Warning "non lookup to lookup - still todo"
continue
} else {
#straight copy
$item[$tofield] = $item[$fromfield]
$item.SystemUpdate($false)
$folders = $folder.SubFolders | where name -ne "Forms"
$folders | Set-SPListItemValuesToDefaults -ParentFolderDefaults $FolderDefaults -fieldsToCopy $fieldsToCopy -fieldsToUpdate $fieldsToUpdate -overwrite:$overwrite -overwriteFromFields:$overwriteFromFields -termStore $termStore
Maybe you are looking for
-
A bug with flags and active view? Or is it a (bad) feature?..
As I mark an image in a folder view as flagged and then switch to a collection view and look on the same image, it's not flagged. I expect, that information about marking the image as flagged remains on that image, not on a current active view.
-
Strange problem with Subviews on 1.0 Beta
Hi, I'm having a strange problem with SubViews on 1.0 Beta. I'm not sure If I'm being stupid and have done something wrong, or if there's a problem here. My application is directly based on one of the examples, so the structure etc is almost identica
-
Viewing the "Now Playing" or "Currently Playing" playlist?
I'm moving over to iTunes at the moment from an older MP3 player and I can't seem to find a playlist that shows the songs that iTunes will corrently work its way through - i.e. a "Now Playing" playlist or group of songs that are ticked in tbe music l
-
K004 111 Condition ignored (requirement 002 not fulfilled)
Hello Gurus, I have included K004 in v/06,v/08, and did all in ovkk and vk11, but still when created sales order I cant see K004. Upon analysis it says "K004 111 Condition ignored (requirement 002 not fulfilled)". The strange thing is when I
-
Dear all I got a strange problem when I try to customize the Move Order, the req is 1. Add one section, such as the job number 2.User can click a button to retrieve the preserved template info(item,uom, qty, etc..) 3.The template needs to be automati